{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/project/product/product-tile/ProductTileStock.vue?9d29","webpack:///./src/project/product/services/notificationsFetch.service.ts","webpack:///./src/project/product/product-tile/ProductTileStock.vue","webpack:///./src/project/product/product-tile/ProductTileStock.vue?f27b","webpack:///./src/project/product/product-tile/ProductTileStock.vue?bc68","webpack:///./src/project/form/vee-validate.plugin.ts","webpack:///./src/project/tracking/gtm/GTM.basics.ts","webpack:///./src/core/logging.service.ts","webpack:///./src/core/translation/translate.filter.ts","webpack:///./src/core/modals/ModalState.ts","webpack:///./src/project/product/product-tile/ProductTileFavorite.vue?2e2f","webpack:///./src/project/basket/basket.service.ts","webpack:///./src/core/http/constants.ts","webpack:///./src/project/basket/AddToBasket.vue?4c97","webpack:///./src/project/shared/impersonation/impersonation.service.ts","webpack:///./src/project/icons/creditcard.ts","webpack:///./src/project/icons/arrow-left.ts","webpack:///./src/project/modals/ModalOverlay.vue?88f3","webpack:///./src/project/layout/page-header/mobile/MobilePageHeader.vue?0f4e","webpack:///./src/core/color/color.service.ts","webpack:///./src/project/search/PagingCtrl.vue?a548","webpack:///./src/project/search/PagingCtrl.vue","webpack:///./src/project/search/PagingCtrl.vue?fa32","webpack:///./src/project/search/PagingCtrl.vue?2afa","webpack:///./src/project/shared/notifications/NotificationBanner.vue?399c","webpack:///./src/project/form/InputRadio.vue?5907","webpack:///./src/project/icons/basket-plus.ts","webpack:///./src/core/config/breakpointConfig.ts","webpack:///./src/project/form/InputCheckbox.vue?07ae","webpack:///./src/core/translation/translation-with-links.vue","webpack:///./src/core/translation/translation-with-links.vue?9448","webpack:///./src/core/translation/translation-with-links.vue?25be","webpack:///./src/project/form/InputCheckbox.vue","webpack:///./src/project/form/InputCheckbox.vue?0a55","webpack:///./src/project/form/InputCheckbox.vue?52ff","webpack:///./src/project/icons/basket-minus.ts","webpack:///./src/project/icons/mail-receipt.ts","webpack:///./src/project/app/client-pages/my-account/my-account.store.ts","webpack:///./src/project/icons/plus-big.ts","webpack:///./src/project/icons/support.ts","webpack:///./src/project/icons/favorite-add.ts","webpack:///./src/project/icons/account-setting.ts","webpack:///./src/core/ui-components/ReadMore.vue?2b86","webpack:///./src/core/ui-components/ReadMore.vue","webpack:///./src/core/ui-components/ReadMore.vue?4ec1","webpack:///./src/core/ui-components/ReadMore.vue?295f","webpack:///./src/project/icons/notification.ts","webpack:///./src/types/apiServerContract.ts","webpack:///./src/project/icons/link-arrow.ts","webpack:///./src/styling/tailwind.config.js","webpack:///./src/styling/screens.js","webpack:///./src/core/async/Deferred.ts","webpack:///./src/styling/plugins.js","webpack:///./src/project/layout/page-header/desktop/TopHeader.vue?b02d","webpack:///./src/project/form/InputFile.vue?92b3","webpack:///./src/project/icons/new-customer.ts","webpack:///./src/project/icons/export.ts","webpack:///./src/core/responsive/breakpoints/breakpoints.service.ts","webpack:///./src/core/app/app.store.ts","webpack:///./src/project/basket/MinusCancel.vue?1227","webpack:///./src/project/basket/MinusCancel.vue","webpack:///./src/project/basket/MinusCancel.vue?23ff","webpack:///./src/project/basket/MinusCancel.vue?1011","webpack:///./src/project/form/InputCheckbox.vue?e01b","webpack:///./src/project/icons/login.ts","webpack:///./src/project/icons/plus-medium.ts","webpack:///./src/project/product/product-tile/ProductTileCondition.vue?9463","webpack:///./src/project/product/product-tile/ProductTileCampaign.vue?c6da","webpack:///./src/core/copy/copy.service.ts","webpack:///./src/project/shared/notifications/NotificationBanner.vue?7960","webpack:///./src/project/shared/notifications/notifications.service.ts","webpack:///./src/project/shared/notifications/NotificationBanner.vue","webpack:///./src/project/shared/notifications/NotificationBanner.vue?c118","webpack:///./src/project/shared/notifications/NotificationBanner.vue?dced","webpack:///./src/project/search/facets/CategoryFacets.vue?96f8","webpack:///./src/project/search/facets/CategoryFacets.vue","webpack:///./src/project/search/facets/CategoryFacets.vue?41a6","webpack:///./src/project/search/facets/CategoryFacets.vue?9d5f","webpack:///./src/core/cookie.service.ts","webpack:///./src/project/personalization/adnuntius.service.ts","webpack:///./src/core/urlHelper.service.ts","webpack:///./src/styling/0-Settings/variables.js","webpack:///./src/project/search/facets/modules/FacetPickerRecommendedBrands.vue?c908","webpack:///./src/project/icons/oprema-logo-half-top.ts","webpack:///./src/project/product/product-tile/ProductTileMenu.vue?1445","webpack:///./src/project/product/product-tile/ProductTileBid.vue?e535","webpack:///./src/project/product/product-tile/ProductTileBid.vue","webpack:///./src/project/product/product-tile/ProductTileBid.vue?4543","webpack:///./src/project/product/product-tile/ProductTileBid.vue?5991","webpack:///./src/styling/4-Objects/aspect-ratio.js","webpack:///./src/project/icons/ledger.ts","webpack:///./src/core/bulk-fetch/AbstractBulkFetch.ts","webpack:///./src/project/shared/responsive-umbraco-image.service.ts","webpack:///./src/project/layout/page-header/desktop/MainNavigation.vue?b736","webpack:///./src/project/icons/kickback.ts","webpack:///./src/project/icons/pause.ts","webpack:///./src/project/search/navigation/CategoryNameAndCount.vue?eca7","webpack:///./src/project/modals/ModalsContainer.vue?ec43","webpack:///./src/project/product/image/ResponsiveProductImage.vue?2cf7","webpack:///./src/project/icons/arrow-down.ts","webpack:///./src/project/icons/checkmark.ts","webpack:///./src/project/product/product-tile/ProductTileDetails.vue?1188","webpack:///./src/project/icons/dankort.ts","webpack:///./src/project/icons/logo-half-eet.ts","webpack:///./src/project/layout/page-header/BrandLogo.vue?2e98","webpack:///./src/project/product/condensed/CondensedProductList.vue?1d4d","webpack:///./src/project/search/navigation/CategoryNameAndCount.vue?0fb5","webpack:///./src/project/search/navigation/CategoryNameAndCount.vue","webpack:///./src/project/search/navigation/CategoryNameAndCount.vue?b23a","webpack:///./src/project/search/navigation/CategoryNameAndCount.vue?040d","webpack:///./src/project/icons/delivery.ts","webpack:///./src/project/app/blocks/information/EmployeeBlockItem.vue?7970","webpack:///./src/project/app/blocks/information/EmployeeBlockItem.vue","webpack:///./src/project/app/blocks/information/EmployeeBlockItem.vue?9ec8","webpack:///./src/project/app/blocks/information/EmployeeBlockItem.vue?44d2","webpack:///./src/project/search/constants.ts","webpack:///./src/project/layout/navigation/WithSideNavigation.vue?9c99","webpack:///./src/project/layout/navigation/WithSideNavigation.vue","webpack:///./src/project/layout/navigation/WithSideNavigation.vue?34b2","webpack:///./src/project/layout/navigation/WithSideNavigation.vue?de1a","webpack:///./src/project/icons/oprema-lyn2.ts","webpack:///./src/core/bus/index.ts","webpack:///./src/core/keyboard.service.ts","webpack:///./src/core/esc-event.service.ts","webpack:///./src/project/search/paging.service.ts","webpack:///./src/project/icons/index.ts","webpack:///./src/project/icons/splash-campaign-no-icon.ts","webpack:///./src/project/shared/CopyText.vue?a243","webpack:///./src/project/shared/CopyText.vue","webpack:///./src/project/shared/CopyText.vue?0019","webpack:///./src/project/shared/CopyText.vue?ab03","webpack:///./src/project/spinners/SpinnerElement.vue?60d0","webpack:///./src/project/product/services/productFavoriteItems.service.ts","webpack:///./src/core/store/storeDebug.ts","webpack:///./src/project/icons/becomeacustomer/become-a-customer-success-step2.ts","webpack:///./src/project/product/product-tile/ProductTileBid.vue?a932","webpack:///./src/core/responsive/image/ResponsiveIcon.vue?bca5","webpack:///./src/core/responsive/image/ResponsiveIcon.vue","webpack:///./src/core/responsive/image/ResponsiveIcon.vue?21c6","webpack:///./src/core/responsive/image/ResponsiveIcon.vue?98dc","webpack:///./src/project/icons/duplicate.ts","webpack:///./src/project/icons/lyn1.ts","webpack:///./src/project/icons/language.ts","webpack:///./src/project/search/facets/FacetQuickView.vue?8848","webpack:///./src/project/search/facets/FacetQuickView.vue","webpack:///./src/project/search/facets/FacetQuickView.vue?2d2c","webpack:///./src/project/search/facets/FacetQuickView.vue?bdc1","webpack:///./src/project/icons/pdf.ts","webpack:///./src/project/icons/favorite.ts","webpack:///./src/project/basket/AddToBasket.vue?f7cb","webpack:///./src/core/form/select.service.ts","webpack:///./src/project/basket/AddToBasket.vue","webpack:///./src/project/basket/AddToBasket.vue?25bf","webpack:///./src/project/basket/AddToBasket.vue?24e2","webpack:///./src/project/icons/address-book.ts","webpack:///./src/core/messages/types.ts","webpack:///./src/project/icons/mastercard.ts","webpack:///./src/project/icons/basket-plus-small.ts","webpack:///./src/core/ui-components/SmartParagraph.vue?b451","webpack:///./src/core/ui-components/SmartParagraph.vue","webpack:///./src/core/ui-components/SmartParagraph.vue?6565","webpack:///./src/core/ui-components/SmartParagraph.vue?0760","webpack:///./src/project/icons/print.ts","webpack:///./src/project/app/blocks/productguide/ProductGuide.service.ts","webpack:///./src/project/icons/oprema-lyn3.ts","webpack:///./src/project/product/product-tile/ProductTileCart.vue?4d54","webpack:///./src/project/icons/play.ts","webpack:///./src/project/form/InputSelect.vue?6421","webpack:///./src/core/uuid.service.ts","webpack:///./src/project/form/InputText.vue?2468","webpack:///./src/styling/6-Utilities/center.js","webpack:///./src/project/search/facets/FacetPickerCheckbox.vue?4f60","webpack:///./src/project/search/facets/FacetPicker.vue","webpack:///./src/project/search/facets/FacetPicker.vue?d55a","webpack:///./src/project/search/facets/FacetPicker.vue?ab9a","webpack:///./src/project/search/facets/FacetPickerCheckbox.vue","webpack:///./src/project/search/facets/FacetPickerCheckbox.vue?fa8a","webpack:///./src/project/search/facets/FacetPickerCheckbox.vue?923b","webpack:///./src/project/form/CallToAction.vue?226b","webpack:///./src/project/form/CallToAction.vue","webpack:///./src/project/form/CallToAction.vue?b616","webpack:///./src/project/form/CallToAction.vue?ac31","webpack:///./src/project/modals/overlays/LoginFormOverlay.service.ts","webpack:///./src/project/icons/minus-big.ts","webpack:///./src/project/product/services/detailedPriceFetch.service.ts","webpack:///./src/core/ui-components/Accordion.vue?3b3c","webpack:///./src/core/ui-components/Accordion.vue","webpack:///./src/core/ui-components/Accordion.vue?4890","webpack:///./src/core/ui-components/Accordion.vue?e423","webpack:///./src/project/shared/impersonation/ImpersonationBanner.vue?1c81","webpack:///./src/project/product/product-tile/ProductRelationSearchControl.vue?e8c1","webpack:///./src/project/modals/overlays/ProductAccessoriesCategoryOverlay.service.ts","webpack:///./src/project/product/product-tile/ProductRelationSearchControl.vue","webpack:///./src/project/product/product-tile/ProductRelationSearchControl.vue?f756","webpack:///./src/project/product/product-tile/ProductRelationSearchControl.vue?604c","webpack:///./src/project/icons/splash-new.ts","webpack:///./src/core/responsive/breakpoints/breakpointsState.observable.ts","webpack:///./src/project/icons/stacked.ts","webpack:///./src/core/responsive/image/ResponsiveImage.vue?7c95","webpack:///./src/project/config/constants.ts","webpack:///./src/core/auth/auth.service.ts","webpack:///./src/project/modals/overlays/VimeoVideoFullscreenOverlay.service.ts","webpack:///./src/project/filters/localeNumber.filter.ts","webpack:///./src/styling/6-Utilities/anim-timing.js","webpack:///./src/project/icons/order-history.ts","webpack:///./src/project/product/product-tile/ProductTileDiscounts.vue?324c","webpack:///./src/project/product/product-tile/ProductTileDiscounts.vue","webpack:///./src/project/product/product-tile/ProductTileDiscounts.vue?b79d","webpack:///./src/project/product/product-tile/ProductTileDiscounts.vue?1d80","webpack:///./src/core/redirect.service.ts","webpack:///./src/project/icons/rma.ts","webpack:///./src/project/basket/MiniBasket.vue?7e5e","webpack:///./src/core/ui-components/tabs/Tab.vue?fcb5","webpack:///./src/core/ui-components/tabs/Tab.vue","webpack:///./src/core/ui-components/tabs/Tab.vue?57b9","webpack:///./src/core/ui-components/tabs/Tab.vue?7f28","webpack:///./src/project/icons/map-marker-black.ts","webpack:///./src/project/search/facets/modules/FacetPickerRecommendedBrands.vue?c09e","webpack:///./src/project/search/facets/modules/FacetPickerRecommendedBrands.vue","webpack:///./src/project/search/facets/modules/FacetPickerRecommendedBrands.vue?eb28","webpack:///./src/project/search/facets/modules/FacetPickerRecommendedBrands.vue?4b0e","webpack:///./src/project/icons/phone.ts","webpack:///./src/project/app/blocks/information/EmployeeBlockItem.vue?58e7","webpack:///./src/project/site/site.service.ts","webpack:///./src/core/ui-components/ReadMore.vue?3b96","webpack:///./src/project/form/InputSearch.vue?4e90","webpack:///./src/core/storage.service.ts","webpack:///./src/project/layout/page-header/BrandHeader.vue?a8fb","webpack:///./src/project/product/services/stockFetch.service.ts","webpack:///./src/project/product/campaigns/CampaignIcon.vue?f7fe","webpack:///./src/project/product/campaigns/CampaignIcon.vue","webpack:///./src/project/product/campaigns/CampaignIcon.vue?f76c","webpack:///./src/project/product/campaigns/CampaignIcon.vue?0582","webpack:///./src/project/icons/lyn3.ts","webpack:///./src/project/icons/oprema-splash-new.ts","webpack:///./src/project/layout/page-footer/PageFooter.vue?c639","webpack:///./src/project/search/SearchResultPanel.vue?3dbb","webpack:///./src/project/search/navigation/MobileNavigationAndFacets.vue?0703","webpack:///./src/project/modals/overlays/MobileNavigationAndFacetsOverlay.service.ts","webpack:///./src/project/search/navigation/MobileNavigationAndFacets.vue","webpack:///./src/project/search/navigation/MobileNavigationAndFacets.vue?9d99","webpack:///./src/project/search/navigation/MobileNavigationAndFacets.vue?b515","webpack:///./src/project/search/SearchAdminOptions.vue?0ebd","webpack:///./src/project/search/SearchAdminOptions.vue","webpack:///./src/project/search/SearchAdminOptions.vue?9c3e","webpack:///./src/project/search/SearchAdminOptions.vue?4656","webpack:///./src/project/search/SearchProductResultList.vue?bee0","webpack:///./src/project/app/blocks/AdnuntiusProductBannerBlock.vue?d3a6","webpack:///./src/project/app/blocks/AdnuntiusProductBannerBlock.vue","webpack:///./src/project/app/blocks/AdnuntiusProductBannerBlock.vue?6532","webpack:///./src/project/app/blocks/AdnuntiusProductBannerBlock.vue?e47f","webpack:///./src/project/search/SearchProductResultList.vue","webpack:///./src/project/search/SearchProductResultList.vue?9160","webpack:///./src/project/search/SearchProductResultList.vue?b456","webpack:///./src/project/search/SearchResultPanel.vue","webpack:///./src/project/search/SearchResultPanel.vue?af77","webpack:///./src/project/search/SearchResultPanel.vue?5600","webpack:///./src/project/auth/permission.service.ts","webpack:///./src/core/http/HttpCancelError.ts","webpack:///./src/project/basket/PlusAccept.vue?674b","webpack:///./src/project/basket/PlusAccept.vue","webpack:///./src/project/basket/PlusAccept.vue?ff3e","webpack:///./src/project/basket/PlusAccept.vue?7e2f","webpack:///./src/project/icons/download.ts","webpack:///./src/project/icons/g-translate.ts","webpack:///./src/project/icons/fallback.ts","webpack:///./src/project/shared/impersonation/ImpersonationBanner.vue?f27f","webpack:///./src/project/shared/impersonation/ImpersonationBanner.vue","webpack:///./src/project/shared/impersonation/ImpersonationBanner.vue?642a","webpack:///./src/project/shared/impersonation/ImpersonationBanner.vue?1524","webpack:///./src/assets/icons/fallback.svg","webpack:///./src/project/icons/quote.ts","webpack:///./src/project/search/SearchResultPanel.vue?965c","webpack:///./src/project/search/navigation/NavigationTree.vue?67f2","webpack:///./src/project/icons/logo.ts","webpack:///./src/core/ui-components/SmartHeadline.vue","webpack:///./src/core/ui-components/SmartHeadline.vue?38f1","webpack:///./src/core/ui-components/SmartHeadline.vue?2c08","webpack:///./src/project/icons/arrow-thin-left.ts","webpack:///./src/core/ui-components/tabs/Tabs.vue?cada","webpack:///./src/core/ui-components/tabs/Tabs.vue","webpack:///./src/core/ui-components/tabs/Tabs.vue?e940","webpack:///./src/core/ui-components/tabs/Tabs.vue?35b9","webpack:///./src/project/icons/productlist.ts","webpack:///./src/project/shared/megaMenu.service.ts","webpack:///./src/project/icons/lyn2.ts","webpack:///./src/project/icons/meatballsmenu.ts","webpack:///./src/core/translation/dictionary.service.ts","webpack:///./src/project/site/bot.service.ts","webpack:///./src/project/product/image/ResponsiveProductImage.vue?c97d","webpack:///./src/project/product/image/ResponsiveProductImage.vue","webpack:///./src/project/product/image/ResponsiveProductImage.vue?9f7c","webpack:///./src/project/product/image/ResponsiveProductImage.vue?31e7","webpack:///./src/core/dom/dom.service.ts","webpack:///./src/project/product/product-tile/ProductTile.vue?1a5a","webpack:///./src/project/icons/logo-half-top.ts","webpack:///./src/project/icons/arrow-right.ts","webpack:///./src/project/icons/mail.ts","webpack:///./src/project/icons/favorite-outline.ts","webpack:///./src/project/icons/plus-small.ts","webpack:///./src/project/icons/edit.ts","webpack:///./src/project/product/services/simplePriceFetch.service.ts","webpack:///./src/project/product/product-tile/ProductTileFavorite.vue?4c40","webpack:///./src/project/product/product-tile/ProductTileFavorite.vue","webpack:///./src/project/product/product-tile/ProductTileFavorite.vue?bc5f","webpack:///./src/project/product/product-tile/ProductTileFavorite.vue?075c","webpack:///./src/project/icons/box.ts","webpack:///./src/project/icons/calendar.ts","webpack:///./src/project/app/blocks/cableguide/CableGuide.service.ts","webpack:///./src/project/form/CallToAction.vue?9ab4","webpack:///./src/project/search/SearchProductControl.vue?336d","webpack:///./src/project/search/SearchProductControl.vue","webpack:///./src/project/search/SearchProductControl.vue?ec83","webpack:///./src/project/search/SearchProductControl.vue?0ebe","webpack:///./src/project/icons/help.ts","webpack:///./src/project/icons/delete.ts","webpack:///./src/project/product/product-tile/ProductTileImage.vue?a990","webpack:///./src/project/product/product-tile/ProductTileImage.vue","webpack:///./src/project/product/product-tile/ProductTileImage.vue?c62b","webpack:///./src/project/product/product-tile/ProductTileImage.vue?8876","webpack:///./src/project/icons/becomeacustomer/index.ts","webpack:///./src/core/scroll/scroll.service.ts","webpack:///./src/router/routes/client-routes/general.routes.ts","webpack:///./src/router/routes/client-routes/index.ts","webpack:///./src/router/routes/content-routes/content.route.ts","webpack:///./src/router/routes/index.ts","webpack:///./src/router/index.ts","webpack:///./src/styling/4-Objects/themes.js","webpack:///./src/project/icons/map-marker-green.ts","webpack:///./src/project/icons/search.ts","webpack:///./src/project/icons/bid.ts","webpack:///./src/project/icons/oprema-logo-half-eet.ts","webpack:///./src/project/form/InputSelect.vue?2906","webpack:///./src/project/form/InputSelect.vue","webpack:///./src/project/form/InputSelect.vue?b6e6","webpack:///./src/project/form/InputSelect.vue?f880","webpack:///./src/project/product/product-tile/ProductTileCondition.vue?f69f","webpack:///./src/project/product/product-tile/ProductTileCondition.vue","webpack:///./src/project/product/product-tile/ProductTileCondition.vue?0659","webpack:///./src/project/product/product-tile/ProductTileCondition.vue?3e1b","webpack:///./src/types/contentServerContract.ts","webpack:///./src/project/icons/chat.ts","webpack:///./src/project/icons/becomeacustomer/become-a-customer-success-step1.ts","webpack:///./src/project/form/custom-rules/password.ts","webpack:///./src/project/basket/PlusAccept.vue?8dc3","webpack:///./src/project/icons/document.ts","webpack:///./src/project/search/facets/FacetPickerCheckbox.vue?61ea","webpack:///./src/core/app/componentResolver.service.ts","webpack:///./src/project/icons/profiles.ts","webpack:///./src/public-path.ts","webpack:///./src/project/search/SearchCtrl.vue?f5b9","webpack:///./src/project/icons/newproduct.ts","webpack:///./src/project/app/themes/theme.service.ts","webpack:///./src/project/app/blocks/ImageTextVideoBlock.vue?83b3","webpack:///./src/core/serverContext.service.ts","webpack:///./src/project/icons/map-marker-blue.ts","webpack:///./src/core/http/RedirectError.ts","webpack:///./src/project/product/condensed/CondensedProductList.vue?960c","webpack:///./src/project/product/condensed/CondensedProductList.vue","webpack:///./src/project/product/condensed/CondensedProductList.vue?4313","webpack:///./src/project/product/condensed/CondensedProductList.vue?b4f7","webpack:///./src/core/errorCode.service.ts","webpack:///./src/project/app/blocks/ImageTextVideoBlock.vue?b6bb","webpack:///./src/project/app/blocks/ImageTextVideoBlock.vue","webpack:///./src/project/app/blocks/ImageTextVideoBlock.vue?abe2","webpack:///./src/project/app/blocks/ImageTextVideoBlock.vue?7d41","webpack:///./src/project/icons/clearance.ts","webpack:///./src/core/auth/token.service.ts","webpack:///./src/project/search/facets/constants.ts","webpack:///./src/project/tracking/adnuntius/AdnuntiusPixels.vue?a5dc","webpack:///./src/project/tracking/adnuntius/adnuntiusBulk.service.ts","webpack:///./src/project/tracking/adnuntius/AdnuntiusPixels.vue","webpack:///./src/project/tracking/adnuntius/AdnuntiusPixels.vue?6c65","webpack:///./src/project/tracking/adnuntius/AdnuntiusPixels.vue?0e85","webpack:///./src/core/ui-components/Accordion.vue?c71e","webpack:///./src/core/responsive/image/ResponsiveIcon.vue?bbc9","webpack:///./src/core/bus/Bus.vue","webpack:///./src/core/bus/Bus.vue?ccfe","webpack:///./src/core/bus/Bus.vue?c390","webpack:///./src/project/form/InputTextArea.vue?16e1","webpack:///./src/core/errorHandling.ts","webpack:///./src/core/prerender.ts","webpack:///./src/core/app/clientPageHandler.ts","webpack:///./src/core/responsive/image/cIcon.vue?500a","webpack:///./src/core/responsive/image/cIcon.vue","webpack:///./src/core/responsive/image/cIcon.vue?3069","webpack:///./src/core/responsive/image/cIcon.vue?df6d","webpack:///./src/core/config/svg-icons.plugin.ts","webpack:///./src/core/form/submit.directive.ts","webpack:///./src/core/form/prohibitZoom.directive.ts","webpack:///./src/core/responsive/image/onError.directive.ts","webpack:///./src/core/dom/delegateHtmlLinks.directive.ts","webpack:///./src/core/form/wholeNumbersOnly.directive.ts","webpack:///./src/core/dom/autofocus.directive.ts","webpack:///./src/core/dom/font-content-sync.directive.ts","webpack:///./src/core/translation/pluralize.filter.ts","webpack:///./src/core/filters/json.filter.ts","webpack:///./src/core/filters/optionalProperty.filter.ts","webpack:///./src/core/scroll/syncBodylockGap.directive.ts","webpack:///./src/core/ui-components/swiper/index.ts","webpack:///./src/core/ui-components/google-maps/index.ts","webpack:///./src/core/intersection/intersection.observer.vue?1b10","webpack:///./src/core/intersection/intersection.observer.vue","webpack:///./src/core/intersection/intersection.observer.vue?83f4","webpack:///./src/core/intersection/intersection.observer.vue?4dfc","webpack:///./src/core/intersection/index.ts","webpack:///./src/core/dom/culture-aware-router-link.vue","webpack:///./src/core/dom/culture-aware-router-link.vue?a841","webpack:///./src/core/dom/culture-aware-router-link.vue?0ba6","webpack:///./src/core/responsive/breakpoints/Breakpoints.vue","webpack:///./src/core/responsive/breakpoints/Breakpoints.vue?08ec","webpack:///./src/core/responsive/breakpoints/Breakpoints.vue?d305","webpack:///./src/core/responsive/image/ResponsiveImage.vue?e65a","webpack:///./src/core/responsive/image/ResponsiveImage.vue","webpack:///./src/core/responsive/image/ResponsiveImage.vue?e05b","webpack:///./src/core/responsive/image/ResponsiveImage.vue?712d","webpack:///./src/core/config/coreComponentRegistrations.ts","webpack:///./src/project/shared/ResponsiveIconWrap.vue?a9cc","webpack:///./src/project/shared/ResponsiveIconWrap.vue","webpack:///./src/project/shared/ResponsiveIconWrap.vue?2b40","webpack:///./src/project/shared/ResponsiveIconWrap.vue?f318","webpack:///./src/project/modals/ModalOverlay.vue?56e8","webpack:///./src/project/modals/ModalOverlay.vue","webpack:///./src/project/modals/ModalOverlay.vue?03b8","webpack:///./src/project/modals/ModalOverlay.vue?bd73","webpack:///./src/project/product/product-tile/ProductTile.vue?485b","webpack:///./src/project/product/product-tile/ProductTileCampaign.vue?838e","webpack:///./src/project/product/product-tile/ProductTileCampaign.vue","webpack:///./src/project/product/product-tile/ProductTileCampaign.vue?86e7","webpack:///./src/project/product/product-tile/ProductTileCampaign.vue?4995","webpack:///./src/project/product/product-tile/ProductTileDetails.vue?873e","webpack:///./src/project/product/product-tile/ProductTileInfo.vue?99e7","webpack:///./src/project/product/product-tile/ProductTileInfo.vue","webpack:///./src/project/product/product-tile/ProductTileInfo.vue?4bc0","webpack:///./src/project/product/product-tile/ProductTileInfo.vue?f894","webpack:///./src/project/product/product-tile/ProductTileDetails.vue","webpack:///./src/project/product/product-tile/ProductTileDetails.vue?2d39","webpack:///./src/project/product/product-tile/ProductTileDetails.vue?d24c","webpack:///./src/project/product/product-tile/ProductTileMenu.vue?4cce","webpack:///./src/project/product/product-tile/ProductTileMenu.vue","webpack:///./src/project/product/product-tile/ProductTileMenu.vue?a356","webpack:///./src/project/product/product-tile/ProductTileMenu.vue?1fa6","webpack:///./src/project/product/product-tile/ProductTile.vue","webpack:///./src/project/product/product-tile/ProductTile.vue?fa54","webpack:///./src/project/product/product-tile/ProductTile.vue?cc3d","webpack:///./src/project/config/projectComponentRegistrations.ts","webpack:///./src/project/config/v-click-outside.plugin.ts","webpack:///./src/project/config/v-tooltip.plugin.ts","webpack:///./src/project/config/v-line-clamp.plugin.ts","webpack:///./src/project/config/responsive-image.config.ts","webpack:///./src/project/config/reactive-refs.mixin.ts","webpack:///./src/project/form/InputNumber.vue?b83c","webpack:///./src/project/form/InputNumber.vue","webpack:///./src/project/form/InputNumber.vue?5ad7","webpack:///./src/project/form/InputNumber.vue?2288","webpack:///./src/project/form/InputTextArea.vue?690f","webpack:///./src/project/form/InputTextArea.vue","webpack:///./src/project/form/InputTextArea.vue?ac89","webpack:///./src/project/form/InputTextArea.vue?d9cf","webpack:///./src/project/form/InputRadio.vue?fac1","webpack:///./src/project/form/InputRadio.vue","webpack:///./src/project/form/InputRadio.vue?6b78","webpack:///./src/project/form/InputRadio.vue?bfbc","webpack:///./src/project/form/InputFile.vue?50c6","webpack:///./src/project/form/InputFile.vue","webpack:///./src/project/form/InputFile.vue?3dee","webpack:///./src/project/form/InputFile.vue?3c87","webpack:///./src/project/form/index.ts","webpack:///./src/project/app/content-pages/FrontPage.vue?b7d0","webpack:///./src/project/app/content-pages/FrontPage.vue","webpack:///./src/project/app/content-pages/FrontPage.vue?765f","webpack:///./src/project/app/content-pages/FrontPage.vue?5bf1","webpack:///./src/project/app/content-pages/ContentPage.vue?c12d","webpack:///./src/project/app/content-pages/ContentPage.vue","webpack:///./src/project/app/content-pages/ContentPage.vue?e0ba","webpack:///./src/project/app/content-pages/ContentPage.vue?3210","webpack:///./src/project/app/content-pages/ProductNotFoundPage.vue?93ce","webpack:///./src/project/app/content-pages/ProductNotFoundPage.vue","webpack:///./src/project/app/content-pages/ProductNotFoundPage.vue?ad9e","webpack:///./src/project/app/content-pages/ProductNotFoundPage.vue?700d","webpack:///./src/project/app/content-pages/index.ts","webpack:///./src/project/app/blocks/helpers/BlockRender.vue?9bbe","webpack:///./src/project/app/blocks/helpers/BlockRender.vue","webpack:///./src/project/app/blocks/helpers/BlockRender.vue?5b58","webpack:///./src/project/app/blocks/helpers/BlockRender.vue?00af","webpack:///./src/project/app/blocks/helpers/BlockList.vue?c646","webpack:///./src/project/app/blocks/helpers/BlockList.vue","webpack:///./src/project/app/blocks/helpers/BlockList.vue?a411","webpack:///./src/project/app/blocks/helpers/BlockList.vue?7490","webpack:///./src/project/app/blocks/index.ts","webpack:///./src/project/filters/abbreviate.filter.ts","webpack:///./src/project/filters/anchor.filter.ts","webpack:///./src/project/plugins/permission.plugin.ts","webpack:///./src/project/tracking/gtm/linkClickTracker.directive.ts","webpack:///./src/project/auth/index.ts","webpack:///./src/project/search/navigation/NavigationTree.vue?846f","webpack:///./src/project/search/navigation/NavigationTree.vue","webpack:///./src/project/search/navigation/NavigationTree.vue?69a6","webpack:///./src/project/search/navigation/NavigationTree.vue?5c15","webpack:///./src/project/search/navigation/index.ts","webpack:///./src/App.vue?fa8a","webpack:///./src/project/layout/page-header/PageHeader.vue?4903","webpack:///./src/project/layout/page-header/mobile/MobilePageHeader.vue?eed2","webpack:///./src/project/layout/page-header/BrandHeader.vue?2aaa","webpack:///./src/project/layout/page-header/BrandLogo.vue?18da","webpack:///./src/project/layout/page-header/BrandLogo.vue","webpack:///./src/project/layout/page-header/BrandLogo.vue?3dbb","webpack:///./src/project/layout/page-header/BrandLogo.vue?ea89","webpack:///./src/project/layout/page-header/BrandHeader.vue","webpack:///./src/project/layout/page-header/BrandHeader.vue?a378","webpack:///./src/project/layout/page-header/BrandHeader.vue?76fb","webpack:///./src/core/scroll/ScrollTrigger.vue?462e","webpack:///./src/core/scroll/ScrollTrigger.vue","webpack:///./src/core/scroll/ScrollTrigger.vue?69d8","webpack:///./src/core/scroll/ScrollTrigger.vue?8ab2","webpack:///./src/project/search/SearchCtrl.vue?70d1","webpack:///./src/project/search/SearchOverlay.vue?9669","webpack:///./src/project/search/searchScrollPos.service.ts","webpack:///./src/project/search/SearchOverlay.vue","webpack:///./src/project/search/SearchOverlay.vue?bfde","webpack:///./src/project/search/SearchOverlay.vue?7429","webpack:///./src/project/search/SearchCtrl.vue","webpack:///./src/project/search/SearchCtrl.vue?fc3a","webpack:///./src/project/search/SearchCtrl.vue?f668","webpack:///./src/project/basket/MiniBasket.vue?5e36","webpack:///./src/project/basket/MiniBasket.vue","webpack:///./src/project/basket/MiniBasket.vue?7576","webpack:///./src/project/basket/MiniBasket.vue?c4d1","webpack:///./src/project/modals/overlays/MobileMenuOverlay.service.ts","webpack:///./src/project/layout/page-header/mobile/MobilePageHeader.vue","webpack:///./src/project/layout/page-header/mobile/MobilePageHeader.vue?37b6","webpack:///./src/project/layout/page-header/mobile/MobilePageHeader.vue?c250","webpack:///./src/project/layout/page-header/desktop/DesktopPageHeader.vue?8b95","webpack:///./src/project/layout/page-header/desktop/TopHeader.vue?2dd6","webpack:///./src/project/layout/page-header/desktop/TopHeader.vue","webpack:///./src/project/layout/page-header/desktop/TopHeader.vue?697a","webpack:///./src/project/layout/page-header/desktop/TopHeader.vue?39c6","webpack:///./src/project/layout/page-header/desktop/MainNavigation.vue?3a3a","webpack:///./src/project/layout/page-header/desktop/MainNavigationSlider.vue?d187","webpack:///./src/core/ui-components/SimpleSlider.vue?9a4a","webpack:///./src/core/ui-components/SimpleSlider.vue","webpack:///./src/core/ui-components/SimpleSlider.vue?fa9c","webpack:///./src/core/ui-components/SimpleSlider.vue?3de1","webpack:///./src/project/layout/page-header/desktop/MainNavigationSlider.vue","webpack:///./src/project/layout/page-header/desktop/MainNavigationSlider.vue?80e0","webpack:///./src/project/layout/page-header/desktop/MainNavigationSlider.vue?1e5d","webpack:///./src/project/layout/page-header/desktop/MainNavigation.vue","webpack:///./src/project/layout/page-header/desktop/MainNavigation.vue?41f1","webpack:///./src/project/layout/page-header/desktop/MainNavigation.vue?4b16","webpack:///./src/project/layout/page-header/desktop/DesktopPageHeader.vue","webpack:///./src/project/layout/page-header/desktop/DesktopPageHeader.vue?5691","webpack:///./src/project/layout/page-header/desktop/DesktopPageHeader.vue?6f38","webpack:///./src/project/layout/page-header/PageHeader.vue","webpack:///./src/project/layout/page-header/PageHeader.vue?eaac","webpack:///./src/project/layout/page-header/PageHeader.vue?978d","webpack:///./src/project/layout/page-footer/PageFooter.vue?c4ef","webpack:///./src/project/modals/overlays/SitePickerOverlay.service.ts","webpack:///./src/project/layout/page-footer/PageFooter.vue","webpack:///./src/project/layout/page-footer/PageFooter.vue?1c44","webpack:///./src/project/layout/page-footer/PageFooter.vue?b81c","webpack:///./src/project/layout/breadcrumb/Breadcrumb.vue?374c","webpack:///./src/project/layout/breadcrumb/Breadcrumb.vue","webpack:///./src/project/layout/breadcrumb/Breadcrumb.vue?fbb6","webpack:///./src/project/layout/breadcrumb/Breadcrumb.vue?45a7","webpack:///./src/core/messages/ErrorToaster.vue?9ee0","webpack:///./src/core/messages/ErrorToaster.vue","webpack:///./src/core/messages/ErrorToaster.vue?9b66","webpack:///./src/core/messages/ErrorToaster.vue?ceaa","webpack:///./src/project/app/client-pages/my-account/MyAccountModule.vue","webpack:///./src/project/app/client-pages/my-account/MyAccountModule.vue?ece3","webpack:///./src/project/app/client-pages/my-account/MyAccountModule.vue?9cc3","webpack:///./src/project/modals/ModalsContainer.vue?6933","webpack:///./src/project/modals/ModalsContainer.vue","webpack:///./src/project/modals/ModalsContainer.vue?28b7","webpack:///./src/project/modals/ModalsContainer.vue?71a5","webpack:///./src/project/site/SitePickerModule.vue","webpack:///./src/project/site/SitePickerModule.vue?d1b0","webpack:///./src/project/site/SitePickerModule.vue?b75e","webpack:///./src/project/auth/AuthenticationModule.vue","webpack:///./src/project/auth/AuthenticationModule.vue?fbd3","webpack:///./src/project/auth/AuthenticationModule.vue?9a62","webpack:///./src/project/modals/overlays/MaintenancePageOverlay.service.ts","webpack:///./src/App.vue","webpack:///./src/App.vue?198c","webpack:///./src/App.vue?315a","webpack:///./src/main.ts","webpack:///./src/router/routes/client-routes/my-account.routes.ts","webpack:///./src/core/download/coreDownload.service.ts","webpack:///./src/project/download/download.service.ts","webpack:///./src/project/form/InputSearch.vue?f9a3","webpack:///./src/project/form/InputSearch.vue","webpack:///./src/project/form/InputSearch.vue?35c7","webpack:///./src/project/form/InputSearch.vue?8054","webpack:///./src/project/icons/visa.ts","webpack:///./src/core/ui-components/SimpleSlider.vue?a382","webpack:///./src/project/icons/impersonate.ts","webpack:///./src/project/icons/becomeacustomer/become-a-customer-success-step3.ts","webpack:///./src/project/product/product-tile/ProductTileCart.vue?ea32","webpack:///./src/project/product/product-tile/ProductTileCart.vue","webpack:///./src/project/product/product-tile/ProductTileCart.vue?73b6","webpack:///./src/project/product/product-tile/ProductTileCart.vue?2224","webpack:///./src/project/layout/page-header/desktop/DesktopPageHeader.vue?91eb","webpack:///./src/project/product/services/productCondition.service.ts","webpack:///./src/project/product/campaigns/CampaignIcon.vue?c0e8","webpack:///./src/project/layout/page-header/desktop/MainNavigationSlider.vue?5dea","webpack:///./src/project/icons/profile.ts","webpack:///./src/project/search/facet.sort.service.ts","webpack:///./src/core/ui-components/Temporary.vue?0c78","webpack:///./src/core/ui-components/Temporary.vue","webpack:///./src/core/ui-components/Temporary.vue?e41d","webpack:///./src/core/ui-components/Temporary.vue?850e","webpack:///./src/project/product/product-tile/ProductTileImage.vue?5372","webpack:///./src/project/app/client-pages/my-account/constants.ts","webpack:///./src/project/spinners/SpinnerOverlay.vue?0580","webpack:///./src/project/spinners/SpinnerElement.vue?c607","webpack:///./src/project/spinners/SpinnerElement.vue","webpack:///./src/project/spinners/SpinnerElement.vue?4c07","webpack:///./src/project/spinners/SpinnerElement.vue?f339","webpack:///./src/project/spinners/SpinnerOverlay.vue","webpack:///./src/project/spinners/SpinnerOverlay.vue?c950","webpack:///./src/project/spinners/SpinnerOverlay.vue?9066","webpack:///./src/project/icons/splash-campaign.ts","webpack:///./src/project/icons/tilbud.ts","webpack:///./src/project/search/SearchAdminOptions.vue?49d1","webpack:///./src/project/icons/arrow-thin-right.ts","webpack:///./src/project/icons/favorite-remove.ts","webpack:///./src/assets/icons/oprema-fallback.svg","webpack:///./src/project/icons/oprema-logo.ts","webpack:///./src/project/icons/oprema-lyn1.ts","webpack:///./src/project/icons/funnel.ts","webpack:///./src/project/icons/close.ts","webpack:///./src/project/icons/limited-supply.ts","webpack:///./src/project/product/image/responsiveProductImage.service.ts","webpack:///./src/project/search/facets/FacetQuickView.vue?62cd","webpack:///./src/project/modals/overlays/FavoriteListCrudOverlay.service.ts","webpack:///./src/App.vue?3e04","webpack:///./src/project/app/blocks/helpers/BlockList.vue?4168","webpack:///./src/project/icons/map-marker-turquoise.ts","webpack:///./src/project/icons/burger.ts","webpack:///./src/project/icons/basket-cancel.ts","webpack:///./src/project/icons/filters.ts","webpack:///./src/core/responsive/viewport/domMutation.service.ts","webpack:///./src/core/responsive/viewport/viewportEvents.service.ts","webpack:///./src/project/form/InputText.vue?e434","webpack:///./src/project/form/InputText.vue","webpack:///./src/project/form/InputText.vue?b121","webpack:///./src/project/form/InputText.vue?3d4b","webpack:///./src/project/icons/info.ts","webpack:///./src/core/modals/AbstractModalService.ts","webpack:///./src/project/icons/productguide.ts","webpack:///./src/project/product/services/productBidsFetch.service.ts","webpack:///./src/router/Ensure.ts","webpack:///./src/core/responsive/image/responsiveImage.service.ts","webpack:///./src/project/tracking/gtm/GTM.service.ts","webpack:///./src/project/icons/requirement-ok.ts","webpack:///./src/project/form/InputNumber.vue?77aa","webpack:///./src/project/icons/impersonate-off.ts","webpack:///./src/project/icons/styling.ts","webpack:///./src/project/icons/basket.ts","webpack:///./src/core/ui-components/AnimateValue.vue?6d9c","webpack:///./src/core/ui-components/AnimateValue.vue","webpack:///./src/core/ui-components/AnimateValue.vue?eac7","webpack:///./src/core/ui-components/AnimateValue.vue?6864","webpack:///./src/core/http/contentApi.service.ts","webpack:///./src/project/basket/MinusCancel.vue?5d0f","webpack:///./src/core/auth/OAuth.interceptor.ts","webpack:///./src/core/http/redirect.interceptor.ts","webpack:///./src/core/http/error.interceptor.ts","webpack:///./src/project/session/session.service.ts","webpack:///./src/project/site/site.interceptor.ts","webpack:///./src/core/http/http.service.ts","webpack:///./src/project/tracking/gtm/ProductListTracker.vue?7e39","webpack:///./src/project/tracking/gtm/ProductListTracker.vue","webpack:///./src/project/tracking/gtm/ProductListTracker.vue?d4c1","webpack:///./src/project/tracking/gtm/ProductListTracker.vue?d81a","webpack:///./src/router/routes/constants.ts","webpack:///./src/project/http/ApiHelper.service.ts","webpack:///./src/project/http/controllers/accountController.ts","webpack:///./src/project/http/controllers/accessController.ts","webpack:///./src/project/http/controllers/authenticationController.ts","webpack:///./src/project/http/controllers/sitesController.ts","webpack:///./src/project/http/controllers/userController.ts","webpack:///./src/project/http/controllers/customerController.ts","webpack:///./src/project/http/controllers/searchController.ts","webpack:///./src/project/http/controllers/navigationController.ts","webpack:///./src/project/http/controllers/newsletterController.ts","webpack:///./src/project/http/controllers/productController.ts","webpack:///./src/core/http/cancellableGet.ts","webpack:///./src/project/http/controllers/productGuideController.ts","webpack:///./src/project/http/controllers/priceController.ts","webpack:///./src/project/http/controllers/stockController.ts","webpack:///./src/project/http/controllers/personalizationController.ts","webpack:///./src/project/http/controllers/checkoutController.ts","webpack:///./src/project/http/controllers/deliveryController.ts","webpack:///./src/project/http/controllers/brandController.ts","webpack:///./src/project/http/controllers/rmaController.ts","webpack:///./src/project/http/controllers/impersonationController.ts","webpack:///./src/project/http/controllers/metadataController.ts","webpack:///./src/project/http/controllers/favoritesController.ts","webpack:///./src/project/http/controllers/basketController.ts","webpack:///./src/project/http/controllers/recommendationsController.ts","webpack:///./src/project/http/controllers/cableGuideController.ts","webpack:///./src/project/http/controllers/productGuideConfigurationController.ts","webpack:///./src/project/http/controllers/notificationsController.ts","webpack:///./src/project/http/controllers/employeeController.ts","webpack:///./src/project/http/controllers/cvrSearchController.ts","webpack:///./src/project/http/controllers/categoryController.ts","webpack:///./src/project/http/controllers/mainteanceController.ts","webpack:///./src/project/http/controllers/translateController.ts","webpack:///./src/project/http/controllers/becomeAUserController.ts","webpack:///./src/project/http/Api.service.ts","webpack:///./src/project/product/product-tile/ProductTileStock.vue?6d00","webpack:///./src/project/icons/oprema-fallback.ts","webpack:///./src/project/layout/breadcrumb/Breadcrumb.vue?c209","webpack:///./src/core/environmentService.ts","webpack:///./src/project/icons/arrow-up.ts","webpack:///./src/project/icons/blanket-order.ts","webpack:///./src/project/icons/basket-accept.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","prefetchChunks","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","deferredPrefetch","apply","shift","deferredModules","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","forEach","undefined","link","document","createElement","nc","setAttribute","rel","as","href","jsonpScriptSrc","head","appendChild","installedModules","installedCssChunks","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","fullhref","existingLinkTags","getElementsByTagName","tag","dataHref","getAttribute","existingStyleTags","linkTag","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","error","clearTimeout","chunk","errorType","realSrc","message","name","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","startupResult","render","_vm","this","_h","$createElement","_c","_self","staticClass","class","popoverTriggerAsIconOnly","stock","loaded","hideStock","_l","info","alignRight","showStockPopover","attrs","getStockInformationText","_e","getStockIcon","showDetailedStock","isLoggedIn","_v","_s","tileMode","_f","slot","detailedStockData","isOnNotificationList","account","email","scopedSlots","_u","fn","ref","trigger","notificationInProgress","on","$event","notifyOnStockReplenish","staticRenderFns","debounceTime","debouncedFetch","fetch","deferred","Deferred","notifications","getNotifications","itemIds","notificationLoading","notificationList","externalProductGuideSettings","simpleData","stockData","numberOfStockLabels","allowStockPopover","stockDataResume","find","ignoreNotifyMe","every","x","locationType","hasStock","callback","itemId","trackNotifyOnStockReplenish","some","stockIcons","green","yellow","gray","Local","Remote","InComing","translate","stockInformationText","requestData","state","checkIfProductIsNotificationListed","required","Boolean","default","Number","components","Temporary","component","loadedState","observable","validationProvider","validationObserver","initCalled","async","init","veeValidateAsyncLoad","veeValidateRulesAsyncLoad","extend","setInteractionMode","ValidationObserver","ValidationProvider","is","min","max","setupNewRule","ruleName","rule","labelMapping","paramName","validationSchema","field","params","passwordValidator","validate","test","validateStringHasChars","validateStringHasNumber","regex","RegExp","regmatch","match","validationRuleAddressField","market","rules","toLowerCase","AsyncValidationProvider","h","element","$scopedSlots","$attrs","props","$props","$listeners","$slots","AsyncValidationObserver","methods","options","silent","$children","reset","GTMBasics","userData","getUserData","payload","language","servercontext","languageCode","country","countryCode","companyName","businessEntityName","contactKey","contactHash","customerId","customerNo","webUserId","customInfo1","salesProfitCategory","impersonatorEmail","impersonated","role","pushToDataLayer","dataLayer","trackUserLogin","runGTMScript","trackingObject","text","googleTagManagerId","consoleLogsEnabled","location","search","includes","serverLogsEnabled","siteChrome","settings","enableClientSideLogging","jl","LoggingService","logObject","consoleLogging","log","serverLogging","debug","warn","isWhitelisted","fatal","fatalException","func","translateFilter","args","filter","ModalState","modals","modal","id","removeModal","hideModal","indexOf","lineItemIdEqual","lineItemId","bidId","quoteId","lineItem","lineItemWidEqual","wid","BasketService","basketState","basket","productQueue","jobQueue","debouncedSendToServer","sendToServer","isSendingToServer","hasPendingProductUpdates","updateLineItemPrices","updateDeliveryPrice","getBasket","quantity","queueForServer","reference","isDuplicated","delta","existing","getLineItem","setQuantity","lineItems","getLineItemsByWid","addProduct","updateLineItemIntern","reduce","a","b","quotes","executeAsyncInSerial","clear","makeTemporaryLocalAdd","addMultipleItemsToBasket","update","updateDefault","committedLineItems","isTemporaryLineItemId","commitedQuotes","map","shippingMethodLocked","addQuote","findIndex","removeQuote","q","normalLineItemsCnt","previousValue","quoteLineItemsCnt","previousOuterValue","quote","partialLineItem","makeTemporaryLocalUpdate","existingIx","toSend","addOrUpdateLineItems","job","doExecuteAsyncInSerial","nextJob","finally","existingProduct","fakeLineItem","Math","random","toString","unitPrice","total","existingProductIndex","getLineItemIndex","updatedExisting","set","HasOutstandingXhrCallsEventKey","MobileFacetsUpdateEventKey","RouterBeforeChangeKey","potentialMaintenanceMaxFailedRequestLimit","potentialMaintenanceMaxFailedRequestLimitReachedKey","ImpersonationService","URL_LOCAL_STORAGE_KEY","_isImpersonating","_impersonatorCultureStored","getItemAs","_impersonatorCulture","isImpersonating","redirectUrl","user","messageId","impersonation","beginImpersonation","replaceToken","token","siteUrl","endImpersonation","myAccountPagePath","MY_ACCOUNT_IMPERSONATION","userName","site","url","pathname","substr","icon","register","width","height","viewBox","hexToRgb","hex","alpha","red","blue","hexToRgbValues","isValidHexColor","hex2ToDecimal","hexDigits","parseInt","luma","g","RGBToHSLObject","cmin","cmax","round","abs","toFixed","pageLink","currentPage","nativeOn","preventDefault","goto","goBackEnabled","page","ix","active","goForwardEnabled","pages","setup","normalizePageNo","getPage","noOfPages","pop","ceil","totalResults","pageSize","setPage","getLocationForPage","Bus","XS","MIN_XS","SM","MAX_SM","MD","MIN_MD","MAX_MD","LG","XL","MIN_LG","screens","removeUnit","endsWith","orderedNormalizedBreakpoints","bp","sort","breakpointArrayWithMax","finalBreakpoints","acc","label","errors","_g","_b","directives","rawName","expression","domProps","shouldBeChecked","Array","isArray","modelValue","_i","updateValue","$$a","$$el","$$c","checked","$$v","$$i","concat","listeners","withBorder","solidBackground","styleSwitch","srOnly","links","htmlLabel","exists","action","createSpan","createLink","fixupUrl","startsWith","createButton","click","nodes","labelArgsSplit","split","translatedLink","translatedLinks","hasCulturePrefix","prependCulturePrefix","to","siteInfo","String","internalValue","isChecked","newValue","$emit","trueValue","falseValue","change","model","prop","TranslationWithLinks","MyAccountStore","isServiceAvailable","customer","orderDetails","orderHeaders","Map","orderLines","associatedUsers","inactiveUsersCount","ledgerOrders","ledgerDocumentTypes","legerTotalHits","legerPageSize","legerPage","userNotifications","invoices","rmaHistory","addresses","allowedCountryCodes","favouriteLists","editProductGuidesMenuItem","showDirectDebitBlock","response","userViewObject","permissions","showCustomProductGuides","notificationItems","menuItem","Ledger","assign","freeze","orderInformation","resultOverflow","entry","from","entries","item","orderId","allByCustomer","users","inactiveUsers","associatedUser","userId","deleteApiKey","index","delete","isInactive","addressesPromise","delivery","getDeliveryAddresses","deliveryAddresses","orderAddress","AllowedCountryCodesPromise","shipToCountries","countries","address","messagesId","updatedAddress","addOrUpdateDeliveryAddress","existingAddr","webId","isDefault","currentDefaultAddr","searchKey","newAddress","deleteDeliveryAddress","JSON","stringify","localeCompare","ledger","documentTypes","totalHits","invoice","orderIndex","order","documentNumber","rma","getRmaHistory","rmaHeaders","status","favorites","getAllLists","lists","private","myShared","sharedWithMe","defaultList","editAbleLists","permission","Edit","removeFromSharedList","list","allFavouriteLists","listId","addOrUpdateItem","itemsCount","items","buttonTarget","removeItems","updatedFavouriteLists","getAccountInformation","getCustomerDetails","fetchAllFavouriteLists","getCustomerPermissions","getCustomerNotifications","createdBy","expanded","showFullContent","bodyClass","style","setAutoHeight","_t","withFade","isContentOverflowing","buttonClass","toggleShowFullContent","animationDuration","animationTime","observer","determineMode","calculateAnimDuration","$nextTick","useObserver","MutationObserver","observe","$refs","body","childList","subtree","disconnect","force","minHeight","calculateMinHeight","scrollHeight","expandedHeight","animationTimeMod","forced","minItems","totalHeight","elm","MAX_VALUE","scrollToElementTopOnCollapse","scrollToElement","$el","activeBreakpoint","activeBp","AllUsersColumn","DurationTypeViewObject","SelectionTypeViewObject","SearchFilters","SearchPriceSort","PopularityType","ProductRecommendationType","NotificationType","OrderStatusViewObject","LedgerColumn","ContentWidth","HorizontalAlignment","RequestBreakpoint","SubheaderFontSize","Feature","SiteName","ListSortDirection","RequestServiceType","StockLocationTypeViewObject","ProductConditionCode","RmaHeaderOrderStatus","RmaType","ProductRecommendationStockFilterType","PopularityTypes","FavoriteListPermission","CustomerBlockingType","PaymentMethodType","AccountDetailOrderType","AccountHeaderOrderType","AccountLineType","EmailDocumentType","LedgerDocumentType","tailwind","theme","require","colors","currentcolor","transparent","black","white","250","300","400","500","700","720","750","800","825","850","900","425","450","600","opremablue","75","100","opremayellow","200","brown","textColor","fill","backgroundColor","borderColor","borderRadius","none","sm","7","8","md","lg","xl","30","full","fontSize","9","10","11","12","13","14","15","16","18","20","22","24","34","36","46","50","64","auto","0","4","5","25","32","40","60","70","80","150","160","screen","140","280","350","padding","1","2","3","6","35","margin","17","45","90","110","120","maxHeight","initial","maxWidth","210","420","lineHeight","normal","large","double","zIndex","header","facetOverlay","facetSelector","facetSpinner","overlay","errorToaster","fontFamily","montserrat","fontWeight","regular","medium","bold","inset","opacity","minWidth","variants","objectFit","corePlugins","float","objectPosition","container","backgroundAttachment","gap","gridAutoFlow","gridColumn","gridColumnStart","gridColumnEnd","gridRow","gridRowStart","gridRowEnd","gridTemplateColumns","gridTemplateRows","plugins","experimental","applyComplexClasses","variables","print","raw","xs","_resolve","_reject","_isSettled","_promise","breakpoints","getBreakpoints","getBreakpoint","getExpandedBreakpoints","bpsAsArray","trim","finalSizes","bps","breakpointKeys","hasExcludedPrefixes","excluded","excludedIdx","stripPrefix","hasMinMaxPrefixes","minBp","minBpIx","maxBp","maxBpIx","range","keys","k","size","defineBreakpoints","normalizeBreakpoints","normalizedBps","isActiveBreakpoint","arrayOfBreakpointNames","getActiveBreakpoint","innerWidth","documentElement","clientWidth","addListener","removeListener","listener","Worker","throttleTimer","winWidth","checkActiveBreakpointThrottled","handleViewportEvents","trailing","setCallback","removeCallback","viewport","currentWinWidth","AppStore","breadcrumb","isTunnelView","isFrontPage","hideBreadcrumb","hideMobileSearch","disableContainer","maintenanceMode","maintenance","crumbs","unshift","breadcrumbItem","isFront","hide","route","decodeURIComponent","substring","bypassMaintenance","validator","CopyService","el","select","execCommand","notification","hideNotification","visible","bus","showNotification","notificationsLink","getContent","menu","disabled","selected","toggle","highlight","displayLabel","productCount","setCategoryIds","categoryIds","CategoryNameAndCount","ReadMore","path","domain","expires","exdays","Date","setTime","getTime","toUTCString","cookie","cname","cookies","del","LOCAL_STORAGE_KEY","debouncedGetPersonalizedContent","getPersonalizedContentFromServer","_currentUrl","tmpKeys","contactKeyIsAnonymousGuid","getAnonymousContactKey","setKeys","lyticsCookie","customerKey","setItemAs","getContactKey","anonymousContactKey","getCustomerKey","outstandingRequests","getBundledPersonalizedContent","adUnitId","currentUrl","cleanUpOutstanding","deferreds","ids","personalization","personalizedContent","adnuntiusBlockData","adnuntiusBlock","deferredsForId","catch","UrlQueryKey","nonFacetKeys","termKey","categoryKey","categoryIdKey","categoryIdsKey","campaignKey","sortByKey","pageKey","lastFacetKey","showScoreKey","showExplanationKey","showRawKey","labelsdebug","productGuideGuideId","productGuideProductPageSize","productGuideModeKey","productGuideBrandKey","productGuideSeriesKey","productGuideModelKey","productGuideSearchKey","cableGuideCableTypeKey","cableGuideCableEndAKey","cableGuideCableEndBKey","productGuideConfigurationStep","productGuideExternalButtonLink","productGuideExternalButtonText","origin","css","hideFacets","utm_content","utm_campaign","utm_source","utm_medium","utm_id","utm_source_platform","utm_campaign_id","utm_term","utm_creative_format","utm_marketing_tactic","fbclid","gclid","rckh","observableFacets","facets","WID_REGEX_LOCATOR","updateFacetValue","facetId","updateLastFacet","facetValues","currentRoute","query","v","setFacetValues","updateQuery","setFacetRanges","rangeFrom","rangeTo","facetFrom","facetTo","clearFacets","clearNonFacets","toUrlFacets","getFacets","getLastFacet","getQueryParam","updateObservableFacets","facetGroup","isSearching","term","cleanupUrl","facetKeys","foreignKeys","activeValueKeys","getTerm","getLocationForTerm","isNaN","getCategory","getCategoryId","getCategoryIds","getSearchFilterId","searchFilterKey","setSearchFilterId","setQueryParam","getSearchPriceSortFilter","searchPriceSortKey","setSearchPriceSortFilter","getCampaignCode","setCampaignCode","campaignCode","getSortBy","setTerm","setCategory","categoryId","setCategoryId","clearOthers","pushToHistory","parse","activeCategoryIds","uniques","Set","setSortBy","sortBy","setProductGuideMode","setProductGuideSearchTerm","setProductGuideParams","brand","series","missing","setQueryParams","getProductGuideMode","getProductGuideBrand","getProductGuideSeries","getProductGuideModel","getProductSearchTerm","getCableGuideCableType","getCableGuideCableEndA","getCableGuideCableEndB","setCableGuideParams","cableType","cableEndA","cableEndB","getShowScore","showScore","setShowScore","enabled","getShowExplanation","getWidsFromTerm","getBids","bids","bidsKey","getBidsBrand","bidsBrandKey","getBidsWebCategories","bidsWebCategories","bidsWebCategoriesKey","getShowRaw","param","val","removeQueryParams","replace","setHash","hash","getHash","clearHash","afterEach","getVariables","bidsEndDate","bid","remQty","endDate","_map","addUtilities","ratios","utilities","paddingTop","position","borderStyle","overflow","AbstractBulkFetch","upperCased","ignoreForBots","activeListenersById","cancellationKey","toUpperCase","cancelKey","cancelFunc","cancelRequest","cancel","uaIsPrerender","uaIsBot","handleResultFromServer","apiCall","upperCasedResult","upperCaseResultKeys","emptyResult","extensionIsGifOrUndefined","file","extension","hideProductCount","AnimateValue","getSmallImage","getLargeImage","content","displayName","initials","showImage","nameLineClass","titleLineClass","title","directPhone","isBot","textLineClass","mobilePhone","isOprema","styles","photoUrl","formatImageUrl","showImagePlaceholderIfEmpty","PRICE_FACET_KEY","PRODUCT_SEARCH_COUNT","hasLeftMenu","enableContainer","leftSideClass","isEscape","isRightArrow","isLeftArrow","_escStack","addEventListener","handleEsc","add","lastListener","done","copied","textToCopy","querySelector","selection","getSelection","createRange","selectNodeContents","removeAllRanges","addRange","ProductFavoriteItemsService","isListed","listed","makeStoreDebugAccessible","mainKey","imageSrcSets","x1","altText","imageUrl","bgColor","normalizedBgColor","upscale","allowUpscale","x2","activeFacets","categoryFacets","facet","highlightFacet","getFacetValueName","getFacetName","removeFacet","category","highlightCategory","removeCategoryFacet","resetFilter","menuItems","urlFacets","facetKey","values","facetFromId","fromFacet","parseFloat","nValue","facetValue","activeFacet","isFacet","facetDisplayLabel","facetDisplayName","synchronizeFacetsWithUrl","showQuantityUpdateControls","showEditInBasketControls","tileBasketMode","tileCondensedMode","detailedMode","minusDisabled","editMode","deltaAdjustQuantity","maxValue","inputFocus","inputBlur","_k","keyCode","inputEnterEscKeyUp","arguments","plusDisabled","isAtMax","gotoBasket","composing","initialValue","mobileSlots","slots","elem","justPlacedInBasket","trackingCurrentDelta","debouncedChangeTracking","doChangeTracking","styleMode","allowDelete","inputElem","getQuantity","getQuantityByWid","productWid","blur","wouldBeOverMax","isAllowedValue","setQuantityByWid","emitQuantityChange","eventualValue","deltaUpdateQuantity","deltaUpdateQuantityByWid","deltaQuantity","quantityByWid","isProductInBasket","isProductDuplicated","isInBasket","$router","BASKET","PlusAccept","MinusCancel","ClientMessageType","ValidationErrorEventKey","GeneralErrorEventKey","contentOverflowing","absoluteContent","maxCharacters","overflowIndicator","ProductGuideModes","ProductGuideActions","ProductGuideType","ProductGuideTheme","getGuideNameById","guideId","generateProductGuideTrackingData","actionValue","guideNameFromId","guideName","guideMode","baseIframeUrl","URL","generateIframeURLFromConfiguration","configuration","iframe","contentWindow","currentParams","searchParams","append","isProductGuide","startPage","invertTheme","showFacets","externalStylesheet","externalProductLink","externalProductLinkText","externalId","finalIframeUrl","iframeHtml","UUID","nbr","randStr","left","top","transform","hasValues","togglePopup","last","close","isBrandFacet","showRecommendedBrands","getUnitClarificationLabel","valueRanges","invalid","minValue","syncRangesWithUrlDebounce","$set","searchTerm","isRangeFacetting","showSearchField","isRangeCompatible","vidx","isValueDisabled","getUnitTranslation","setShowRecommendedBrands","getValue","isValid","syncRangesWithUrl","selectionType","Toggle","SingleSelect","pushToUrl","anyInRange","shouldUpdateLastFacet","isNotToggle","unregister","trackFacet","isSingleSelect","activeValues","numericValues","getFacetValueDisplayName","immediate","positionStyle","rect","getBoundingClientRect","parentRect","getElementById","direction","horizontalPosition","unit","unitClarification","setPositionStyle","open","isPriceFilter","InputSearch","FacetPickerRecommendedBrands","iconIsAfter","handleClick","dropdownActive","onClickEvent","dropdown","openDropdown","hexColor","setForegroundAndHoverColor","elementStyle","rawBackgroundColor","getComputedStyle","isDarkBackground","hoverL","setProperty","color","Function","SmartParagraph","LoginFormOverlayService","redirect","showModal","componentAttrs","initialState","DetailedPriceFetchService","price","priceDetailed","prices","hideHeader","headerClass","isExpanded","setFixedHeight","bodyTag","allowToggle","multiple","$parent","child","searchResult","categoryFacet","totalProducts","clickShowCategoryFilter","getProductsResult","hasMorePages","handleNextPage","AbstractModalService","categories","placement","usePanelWrapper","closeOnRouteChange","closeOnBreakpointChange","ProductRelationType","accessoriesPageSize","searching","fromNumber","toNumber","products","relationType","allowSearch","setSearching","similarAlternatives","product","productId","exactAlternatives","accessories","HttpCancelError","show","resetPaging","BreakpointsState","breakpointsState","breakpointChangeHandler","breakpointsDescriptor","ImageNotFound","ImageNotFoundOprema","GoogleCloudGeocodingApiKey","LOGGED_IN","LOGGED_OFF","TOKEN_DATA_CHANGED","TOKEN_DATA_CHANGED_MARKET","_tokenWrapper","getToken","logIn","setToken","emit","logOff","reload","clearToken","hasLoggedInBefore","getPreviousToken","prevUserData","VideoFullscreenOverlayService","vimeoVideoId","enableTextTrack","contentAutoScroll","contentMaxHeight","disableBodyScroll","showCloseButton","wide","locale","getCulture","localeNumberFilter","number","toLocaleString","_range","duration","delay","animationDelay","getDetailedPrice","discount","quantityDiscounts","getNextQuantity","amount","cultureFormatted","discountsLoaded","hasQuantityDiscounts","discounts","SpinnerOverlay","hardReload","softRedirect","hardRedirect","recommendedBrands","renderedPixelUrl","visiblePixelUrl","viewPixelUrl","clickPixelUrl","image","showCount","getBrandData","adnuntiusClickHandler","brands","$route","fullPath","fetchRecommendedBrands","AdnuntiusPixels","REFERRER_LOCAL_STORAGE_KEY","siteId","culture","customCulture","erpBusinessEntityId","marketId","countryOptions","documentReferrer","savedUrl","referrer","removeItem","shouldRedirect","createUrlInPreferredCulture","oldUrl","newUrl","getCountryCode","getLanguageCode","getErpBusinessEntityId","getMarketId","getUrl","getSiteId","hasBeenPickedByUser","languageLabel","countryLabel","pageMatch","getHreflang","getNewUrl","setCountryOptions","getCountryOptions","BaseStorage","store","getItem","setItem","ex","FakeStorage","hasStorage","$window","hasStorageSupport","testKey","localStorageService","localStorage","sessionStorageService","sessionStorage","StockFetchService","stockProducts","stocks","stockByItemId","campaignIconUrl","CLEARANCE_CODE","campaign","getCampaignWithIcon","searchTitle","contextKey","totalResultsTxt","typing","activeMenu","hideAdminOptions","isExternalProductGuide","brandName","explanation","rootMenuItem","filters","useFlattenedCategoryTree","replacedTerm","spellingSuggestions","suggestion","termSearchLink","pageBlocks","showBlocksAndProducts","showAllProducts","blocks","setFacetPickerState","proxy","trackingListName","pageId","hasItemSelectionCode","pageBlocksBelow","showOverlay","numberOfSelectedFacets","initialFacets","activeMenuItem","debouncedSendFacetsChangeEvent","sendFacetsChangeEvent","selectedFacets","count","selectedCategories","isStaff","productIdsCopiedLoading","copyWIDs","copyMPNs","productExportLoading","requestProductExport","productExportIcecatLoading","toggleShowScore","rawResultDownloading","downloadRawResult","searchExplanationDownloading","downloadExplanation","clearBoostCacheLoading","clearBoostCache","productIdsCopied","productMPNsCopied","boostCacheCleared","rawResult","lastFacet","priceSort","explain","wIds","downloadFile","cta","closeDropdown","mpns","mpn","productIds","join","copyTextToClipboard","icecatMode","errorId","messages","messageType","Info","productImpression","productClick","isBannerAllowedOnPage","showProductContentAtIndex","adContentBlockViewModel","contentLoadError","adnuntiusTrackingData","getAdContent","productListBanner","listLocation","creativeId","parentBlockAlias","ImageTextVideoBlock","productListContentPlacementIndex","placementIndex","maxIndex","AdnuntiusProductBannerBlock","ProductListTracker","firstTime","facetPickerActive","prevPageId","facetsResult","priceFilter","sorting","showPriceSortFacet","showPriceSort","translation","suggestions","baseName","searched","animateScroll","scrollContainer","HTMLElement","MobileNavigationAndFacets","PagingCtrl","FacetPickerCheckbox","FacetQuickView","AdminOptions","WithSideNavigation","SearchProductResultList","Permission","permissionMapping","PLACE_ORDER","System","Administrator","Trusted","Normal","CREATE_ORDER","ADD_DELIVERY_ADDRESS","VIEW_ORDER_STATUS","VIEW_QUOTE_STATUS","VIEW_BID_STATUS","VIEW_RMA_STATUS","Viewer","CREATE_RMA","VIEW_STATEMENT_OF_ACCOUNT","VIEW_ADDRESSBOOK","CREATE_OR_DELETE_USERS","MANAGE_ADDRESSBOOK","MANAGE_ASSOCIATED_USER","getUserGroup","can","userGroup","rolebasedPermissionResult","postProcessPermission","customerCanLoginButCannotPlaceOrder","blocking","IMPERSONATE","impersonate","canPlaceOrder","canCreateOrder","canAddDeliveryAddress","canViewOrderStatus","canViewRMAStatus","canCreateRMA","canViewStatementOfAccount","canViewAddressBook","canCreateOrDeleteUsers","canManageAddressBook","canManageAssociatedUsers","canImpersonate","staff","impersonateeName","h1","styleAsH1","level","tab","activeTab","contentClass","tabs","$options","isActive","MegaMenuService","megaMenuPromise","navigation","megaMenu","menus","mapBreadcrumbForChild","absoluteId","getMegaMenu","children","mappedBreadcrumbs","mapBreadcrumbs","getBreadCrumbForCategory","isLabelDebugMode","DictionaryService","initialized","input","output","labelStart","labelEnd","keyReplaceRegex","ensureInitialized","translated","dictionaryMap","format","namedArguments","failWithMissingRecords","useKeyAsLabel","formatNamed","getWithNamedValues","num","floor","arg","toTranslate","namedValues","namedValue","pattern","dictionary","dictionaryExists","allBots","prerenderBots","userAgent","navigator","setPrerenderRedirectUrlsIfLocationIsWrong","pathnameWithoutTrailingSlash","isFeatureEnabled","PrerenderRedirect","protocol","host","urlWithSlash","setPrerenderStatusCode","MOVED_PERMANENTLY","setPrerenderHeader","lazyLoaded","imgClass","alt","srcSet","handleLoad","supportedSizes","supportedRetinaSizes","lazyInitialized","loadEventFired","retina","activeSize","retinaSize","encodeURI","absoluteImageUrl","activeBpDef","bpDef","isBreakpointActive","handleLoadedAndLazyInitialized","rootMargin","offset","IntersectionObserver","isIntersecting","unObserve","valuesToCheck","DomService","metadata","relativeUrls","setCanonicalUrl","setOpenGraphUrl","setDescription","seoDescription","setMetaRobots","setTitle","seoTitle","setHreflang","languages","setOpenGraphImage","seoImage","setPageTitle","setOpenGraphTitle","statusCode","setContent","PRERENDER_STATUS_CODE","PRERENDER_HEADER","description","setMetaDescription","setOpenGraphDescription","OPENGRAPHTITLE","DESCRIPTION","OPENGRAPHDESCRIPTION","ROBOTS","keywords","KEYWORDS","getMetaElement","VIEWPORT","isCheckoutView","toggleClass","relativeUrl","canonicalUrlElement","getCanonicalUrlElement","formatUrlWithPage","buildAbsoluteUrlFromRelativePath","sanitizeInput","OPENGRAPHURL","OPENGRAPHIMAGE","OPENGRAPHIMAGEWIDTH","OPENGRAPHIMAGEHEIGHT","OPENGRAPHIMAGEALT","metaTags","each","remove","existingLinkElements","querySelectorAll","hreflang","headElement","getHeadElement","nameAttribute","propertyAttribute","removeDoubleSlashesInUrl","getOrCreate","selector","TITLE","SimplePriceFetchService","priceSimple","openOverlay","hasSlot","closeOverlay","loadingLists","favoriteLists","titleForList","canEditList","updateList","createList","showLoginOverlay","showCreateFavouriteListOverlay","listInformation","listIds","isItemOnList","isOnList","loading","createModel","shareWithOrganization","shareWithUsers","createFavouriteList","addFavoriteItem","removeFavoriteItems","checkIfProductIsListed","CableGuideModes","CableGuideActions","generateCableGuideTrackingData","intialized","pageBreadcrumbs","pageTracked","translatedTerm","debouncedTrackSearch","trackSearch","allowTerm","cableEndTypeA","cableEndTypeB","showInStockFilter","allowedBrands","createUrlFacets","updateTerm","createSearchRequest","searchCall","facetCall","categoryCall","changedTerm","searchResultCallback","setupFacets","facetsToKeep","fixupUrls","categoryUrlBase","reactiveCategories","selectedMenu","rootMenu","setupBreadcrumb","megaMenuPath","includePageDataBreadcrumb","withResultsBreadcrumb","setBreadcrumb","pageUrl","pageDataUrl","trackPage","pageData","getPageParallel","pageDataResultCallback","renderMetaData","isRelativeUrl","updateMetaData","setPageBlocks","setPageBlocksBelow","setPageBreadcrumbs","setShowAllProducts","jsonContent","blocksBelow","listAllProducts","getAlternativeCategoryUrls","alternativeUrls","trackPageView","trackGenericPageView","resetSelectedMenus","getPageData","setAlternativeUrlLanguages","SearchResultPanel","productDetailsUrl","productDetailsUrlTarget","imageSize","thumbnailImage","uri","imageNotFound","productUrl","externalProductLinkTarget","ResponsiveProductImage","BODY_SCROLL_LOCKED","ScrollService","bodyLocks","scrollTo","scrollElement","simpleScroll","offsetTop","targetElement","scrollBarGap","reserveScrollBarGap","allowTouchMove","parentElement","scrollTop","startingY","pageYOffset","diff","start","requestAnimationFrame","step","timestamp","time","percent","outer","visibility","msOverflowStyle","inner","scrollbarWidth","offsetWidth","easeInOutQuad","GeneralRoutes","PRODUCT_DETAILS","meta","headMeta","isPublic","skipAutoPageTracking","skipAutoBreadcrumb","skipAutoSeoTitle","CAMPAIGN","BRAND_OVERVIEW","BRAND","BRAND_SUBCONTENT","brandSubContent","CATEGORY","CATEGORY_2","CHECKOUT","CONFIRMATION","isContent","KITCHEN_SINK","PRODUCTGUIDE","ClientRoutes","ContentRoute","routes","hasOutstandingXHRRequests","clearOutstandingXHRRequestsTimerHandle","ensurePageReadyForScroll","ContentPageRenderedEventKey","PageRenderedEventKey","hashOffset","use","router","base","savedPosition","positionResultDeferred","positionResult","setScrollPositionResult","pageRendered","cleanupEnsures","y","behavior","preventAutoScroll","history","scrollRestoration","Ensure","nextTick","navigateToRouteHash","elementId","hashElementCheckerEnsure","hashElement","onReady","hasOutstanding","addVariant","modifySelectors","separator","className","classes","variant","labelPrefix","selectClasses","$$selectedVal","_value","valueOf","condensedMode","getClassificationCodeDictionary","details","getProductClassificationCodeDictionary","conditionCode","LinkType","hasLength","hasLowercase","hasUppercase","hasNumeric","hasSpecialChar","ComponentResolver","context","enforceFallback","alias","fallback","msg","blockResolver","pageResolver","overrideClientAssetsUrl","clientAssetsUrl","takeOverThemeLayoutId","defaultTakeOverOpacity","ThemeService","activeTheme","themeLoaded","takeOverOpacity","layoutId","isTakeOverEnabled","takeoverTheme","rgb","themeService","restoreDefaultTheme","ServerContextService","siteFooter","apiHost","contentHost","productMediaUrl","preview","theming","themeString","siteName","Oprema","featureName","feature","featureFlags","AddressSuggest","cookie_cat_necessary","CookieInformation","getConsentGivenFor","cookie_cat_functional","cookie_cat_statistic","cookie_cat_marketing","cookie_cat_unclassified","RedirectError","isFirstBlock","headline","sliderOptions","viewed","productColor","prevButtonSelector","nextButtonSelector","listViewPageSize","slidesPerView","rendered","productBgColor","newBreakpoint","setSlidesPerView","handleBreakpointChange","spaceBetween","slidesPerGroup","loop","loopFillGroupWithBlank","watchSlidesVisibility","watchOverflow","setWrapperSize","nextEl","prevEl","grabCursor","instanceName","observeParents","observeSlideChildren","SmartHeadline","ErrorPage","NOT_FOUND","INTERNAL_SERVER_ERROR","BAD_GATEWAY","handleErrorCodes","errorCode","notFoundProductWid","product404Page","withoutCulturePrefix","shouldUseFlexBox","showCaptionAsContentTitle","caption","shouldApplyBannerTextLimits","video","showBackgroundImage","isBackgroundVideo","loadingVideo","backgroundImage","realAspectRatio","realWidthOnScreen","backgroundImageFormat","focalPoint","adImageProps","backgroundColorStyle","showVideoControls","isPlaying","isWithinWideBannerAspectRatio","subheader","colorStyle","captionColor","headerColor","headerHeadlineLevel","subheaderSizeClass","subheaderColor","ctaColor","callToAction","clickHandler","overlayVimeoCta","clickOpenVideoOverlay","renderContent","toggleVideoState","mobileAspectRatio","semiTransparencyPercentage","videoAspectRatio","wideBannerAspectRatio","contentBackgroundColor","vimeoVideoAspectRatio","useFlexBox","isMobile","aspectRatio","forceVimeoAspectRatio","widthOnScreen","aspectRatioMargins","paddingPct","paddingBottom","videoMount","onloadeddata","ensureId","autoplay","muted","controls","byline","portrait","autopause","getVimeoVideoAspectRatio","idOrUrl","idParts","contentAligmentValue","Left","contentWidthValue","isHeroBanner","TwoThird","FullWidth","subheaderFontSizeValue","Large","getVideoWidth","getVideoHeight","minSize","subheaderSize","pause","play","semiTransparent","isColorDefined","hexToRgbWithDefault","makeContentBackgroundTransparent","shouldShowContentBackground","translateY","isTakeOverBanner","callToActionColor","EETBlack","Right","widthCls","OneThird","adImages","backgroundImages","img","isMatchingImageAspectRatio","allowedDelta","adnuntiusImages","srcset","imageA","imageB","sizes","shimColor","imgAspectRatio","videoContainerMoreNarrowThanVideo","captionLocation","showCallToActionButton","overlayVimeoVideoId","CallToAction","LOCAL_STORAGE_KEY_FOR_PREVIOUS","UserGroup","_token","_tokenPayload","setTokenPayload","fallbackToPrevious","parseJwt","base64Url","base64","jsonPayload","atob","charCodeAt","parsedToken","pascalCasedKey","charAt","BRAND_FACET_KEY","deliveryUrls","forwardAdnuntiusPixelRequest","isSetup","isVisible","isMaybeViewed","isClicked","forwardContentRequests","clickUrl","trackCreativeClick","trackingData","trackCreativeView","creative","renderedUrl","alwaysVisible","viewUrl","visibleUrl","intersectionRatio","threshold","$once","$on","$off","logStackframes","stackframes","errorObj","errorMsg","lineNumber","column","stringifiedStack","sf","exception","isProdMode","config","errorHandler","vm","fromError","onunhandledrejection","reason","debouncedHandleOutstandingXhrCalls","handleOutstandingXhrCalls","hasOutstandingXhrCalls","prerenderReady","off","beforeEach","next","routerMeta","nonPublicAndNotLoggedIn","needsPermissionAndHasNot","UNAUTHORIZED","initPage","breadCrumb","getBreadcrumbFromRoute","metaData","buildCanonicalUrl","navigationTitle","nameComputed","original","opremaPrefixedIcons","has","tagName","classPrefix","directive","binding","vnode","$validator","noValidate","onsubmit","validateAll","classNamesArray","removeAttribute","classList","isHrefExternal","external","isHrefMedia","externalScheme","touchTimer","blurTimer","standardMeta","getMetaViewport","unscalableMeta","touchstartHandler","setMetaViewport","focusHandler","blurHandler","ontouchstart","onfocus","onblur","wholeNumbersHandler","unbind","removeEventListener","classNamesArrayTemp","elWrapper","imageEls","Element","matches","msMatchesSelector","altKey","ctrlKey","metaKey","shiftKey","button","defaultPrevented","linkTarget","relAttribute","focus","viewportEventHandler","sizeChange","activeSizes","bpTuple","setFontSize","isOriginallyWrapped","isWrapped","clientHeight","fontSizeInPx","pluralize","singular","plural","jsonFilter","obj","optionalProperty","res","customEl","bodyScrollLocked","scrollbarGap","paddingRight","load","libraries","installComponents","keepObserving","unobserve","isExternalLink","isOutgoingUrl","$vnode","isLocation","tmp","tmpHash","removeTrailingSlashAndLowercase","isFrontpagePath","pathWithoutHash","withoutTrailingSlash","replaceAll","_","isExternalScheme","slotName","visibleSlots","lowsrc","sizesFromWidthOnScreen","getSizes","hasSrcsetSupport","fallbacksrc","lowSrc","lowSrcWidth","lowSrcQuality","heightFromWidth","sortConfigBySize","errorMessage","activeAspectRatio","background","quality","firstSeparator","focal","sortedKeys","getBaseUrl","Breakpoints","ResponsiveIcon","modalHidden","disableUserClose","animationEnterClass","animationLeaveClass","modalEntering","modalVisible","modalExiting","overlayClasses","closeButtonClass","vcoConfig","handler","middleware","clickOutsideMiddleware","events","clickOutsideMouseDownElm","enableBodyScroll","contentWrapper","isClickedOutside","animTypes","right","center","animationClass","closeButtonPosition","oldBp","isInHorizontalMode","isInVerticalMode","isBid","rawProductClick","stockLoaded","simpleStockData","nested","hasBids","hasAlternatives","hasAccessories","isUserLoggedIn","showTileMenu","toggleMenu","pricesLoaded","priceData","addToBasketChange","bidsData","alternatives","isNew","activeCampaign","showCampaignIcon","defaultCampaignIcon","campaigns","bidNo","subLine","shortProductDescription","isLimitedItem","dropdownLabel","score","salesIndex","CopyText","hasAlt","hasAcc","bidKey","accKey","possibleCombinations","ProductTileInfo","ProductTileCondition","ProductTileStock","ProductTileBid","tabsChanged","tabsInit","labelAccessoriesText","handleRelationLoaded","contextForTrackingListNameRouteOrSearch","hasExactAlternatives","hasSimilarAlternatives","activated","accordion","tabName","bodyTextKey","Tabs","Tab","Accordion","CondensedProductList","ProductAccessoriesSearchControl","isERPServiceAvailable","bidsLoaded","cancellationCallbacks","productGuide","trackclick","destination","now","before","getPriceData","getStockData","getBidsData","trackImpression","constructTrackingProduct","stockInformation","simpleStockInformation","productBids","openMenuOnAddToCart","trackAddToBasketChange","trackProductQuantityChange","stockInfo","trackingState","getTrackingState","Complete","ErpNotAvailable","NoErpResponseYet","NotLoggedIn","trackExternalProductGuideClick","ProductTileCampaign","ProductTileImage","ProductTileDetails","ProductTileFavorite","ProductTileCart","ProductTileMenu","ProductTileDiscount","vTooltip","VTooltip","VPopover","VClosePopover","importCss","ReactiveRefs","_Vue","mixin","$reactiveRefs","hasValue","inputValue","Infinity","rows","changedInput","labelText","iconName","placeholder","changedFakeInput","listenersForFakeField","infoLabel","isRequired","validationProviderValidate","validationResult","valid","fileList","files","fileName","InputText","InputSelect","InputCheckbox","isDevMode","NewsArticlePage","NewsPage","CampaignOverviewPage","BecomeACustomerPage","updateOnQueryChange","registerFallback","resolvedBlock","block","disableContainerForFirstBlock","anchorLink","randomIntFromInterval","blockKey","HalfWidthBlocks","OnePlusTwoBlocks","HeroBannerBlock","AdnuntiusHeroBannerBlock","UniqueSellingPointBlock","UniqueSellingPointItem","BrandsBlock","TextBlock","FullWidthTextBlock","TextWithImageBlock","ProductRecommendationsBlock","BrandRecommendationsBlock","CategoryRecommendationsBlock","ProductListBlock","TabbedContentBlock","QuoteBlock","LatestNewsBlock","LatestCampaignsBlock","CategoryBlock","EmployeeBlock","BecomeACustomerBlock","JotFormBlock","BecomeAResellerBlock","CancelNewsletterBlock","SubscribeNewsletterBlock","ProductGuideBlock","ProductGuideConfigurationBlock","IframeBlock","MapBlock","CableGuideBlock","StatisticsBlock","CategoryTileBlock","CodeBlock","HeroBannerUniqueSellingPointsBlock","FallbackBlock","symbols","abbreviateNumber","digit","sign","numFormated","tier","log10","suffix","scale","pow","scaled","rounded","ensureAnchorId","anchor","Vue","$permission","trackClick","aTag","findParentByTagName","trackLinkClick","parent","startOpened","selectMenuItem","isMenuActive","selectedMenuItem","useRouteNavigation","isMenuAChildOfMe","shouldStartOpened","validateReadyState","found","hideMobileSearchAndBrands","scrollTriggerOptions","isInWhiteTheme","logoDimensions","showMobileMenu","login","searchFieldNoBorder","searchOverlayAnchorElement","brandLogo","brandPageName","brandUrl","imageCssClass","isTall","isSquare","brandLogos","getBrandLogos","breakpoint","adBreakpoint","Mobile","Tablet","Desktop","newRoute","oldRoute","topColor","BrandLogo","MinVelocity","customScrollPointIds","finalOptions","oldScrollY","oldTimestamp","scrollDirection","scrollingDown","scrollingUp","customScrollDefinitions","createExtendedDefinition","scrollPoint","clazz","spKey","scrollY","handleScroll","handleUpDown","handleScrollPoints","currentScrollDirection","setScrollPoint","clearScrollPoint","velocity","scrollPosId","scrollPointId","scrollPointDef","cb","noBorder","lowlevelInputHandler","searchInputIconColor","anchorElement","scrollContainerStyle","_scrollPos","setScrollPos","scrollPos","getScrollPos","internalShow","doRestoreScrollPos","handleOutstandingXhrChange","restoreScrollPos","captureScrollPos","bottom","savedScrollPos","ensure","SearchProductControl","CategoryFacets","minNoOfCharacters","debounceSetTerm","shouldShowOverlay","onTermChanged","setSyncedTerm","goBack","oldShow","justShown","SearchOverlay","basketPage","animate","noOfBasketItems","showBrands","isOnFrontpage","MiniBasket","SearchCtrl","ScrollTrigger","BrandHeader","NotificationBanner","ImpersonationBanner","mainNavigationFixed","mainNavigationTransitionEnabled","megaMenuShown","megaMenuShownChange","frontpageUrl","logoAltText","productGuidePage","salesAndSupportPage","favouritesPageName","myAccountPageName","becomeACustomerPage","logout","MY_ACCOUNT_PROFILE","MY_ACCOUNT_FAVOURITES","footer","companyDetails","toggleMegaMenu","cancelMegaMenuClosing","changeMegaMenuDebounce","cancelMegaMenuNavigation","megaMenuStyle","mi","ci","firstLevelMenus","secondLevelMenu","thirdLevelMenu","fourthLevelMenu","mouseEnter","mouseLeave","campaignLink","prev","leftOverflow","rightOverflow","overflowLoc","translateX","isScrolling","transition","speed","justifyContent","containerMetrics","contentMetrics","overflowingElements","getOverflowingElements","transformX","slidesToScroll","lastElement","lastElementMetrics","currentOffSet","containerWidth","currentWidth","scrollWidth","elements","reverse","overflowLocation","determineOverflow","containerMetricsRight","containerMetricsLeft","contentMetricsRight","contentMetricsLeft","lOverflow","rOverflow","setOverflowLoc","transitionEnded","menuCampaignLink","SimpleSlider","CampaignIcon","SHOW_DELAY","CLOSE_DELAY","CHANGE_DELAY","renderMenuStatic","openMegaMenuDebounce","closeMegaMenuDebounce","changeMegaMenu","megaMenuContainer","megaMenuAnchor","getMegaMenuData","menuColor","getColor","MainNavigationSlider","restoreBackgroundOpacity","disableBackgroundOpacity","shown","topHeaderFixed","mainNavigationHidden","MainNavigation","TopHeader","DesktopPageHeader","MobilePageHeader","soMeLink","salesRep","salesRepAsEmployeeViewObject","phoneNumber","openingHours","addressInformation","postalCode","city","vatNumber","activateSitePicker","CountryAndLanguageLabel","siteSchemaJson","companyDetailsSchemaJson","breadcrumbsSchemaJson","SHOW_SITE_PICKER","pageIsRendered","once","sitemapColumns","getSalesRep","siteOptions","sites","siteCountryLabel","siteLanguageLabel","lang","salesRepIsValid","checkIfSalesrepContainsData","rep","picture","mobilePhoneNo","directPhoneNo","schema","potentialAction","urlTemplate","socialMediaLinks","firstLinkColumns","logo","siteAssetsUrl","foundingDate","telephone","contactPoint","addressLocality","streetAddress","sameAs","flat","jsonldobj","itemListElement","breadcrumbPrettified","EmployeeBlockItem","crumb","breadcrumbs","scrollBreadcrumbsOnDemand","inPhoneViewport","breadcrumbsContainer","$ul","getBgColor","getMessage","clearMessage","AUTO_KILL_TIME","addMessages","Warning","msgOrLabel","clientMessages","inititalizeAccountStore","modalListeners","ModalOverlay","updatingServer","cookieInformationRetryCounter","isModalActive","hasUserGivenCookieConsent","isDevelopment","showSitePicker","validateSite","currentSiteId","selectedSite","selectedSiteId","submit","switchSite","siteHasMultipleSiteOptions","loadSiteOptions","singleton","checkForPasswordReset","isTakeOverEnabledAndLoaded","isMaintenanceMode","isInMaintenanceMode","ErrorToaster","PageHeader","PageFooter","BreadCrumb","ModalsContainer","SitePickerModule","AuthenticationModule","MyAccountModule","productionTip","vueDebugEnabled","devtools","isIE11","MSInputMethodContext","documentMode","MyAccountRoutes","MY_ACCOUNT","MY_ACCOUNT_PRODUCT_BACKLOG","MY_ACCOUNT_ORDER_HISTORY","MY_ACCOUNT_ORDER_HISTORY_DETAIL","MY_ACCOUNT_QUOTES","MY_ACCOUNT_QUOTES_DETAIL","MY_ACCOUNT_BIDS","MY_ACCOUNT_BLANKET_ORDERS","MY_ACCOUNT_BLANKET_DETAIL","MY_ACCOUNT_RMA_RETURN","MY_ACCOUNT_RMA_RETURN_HISTORY","MY_ACCOUNT_RMA_RETURN_CREATE","MY_ACCOUNT_LEDGER","SEE_PRODUCTS_AND_PRICES","MY_ACCOUNT_FAVOURITES_DETAIL","MY_ACCOUNT_ACCOUNT_SETTINGS","MY_ACCOUNT_ADDRESS_BOOK","MY_ACCOUNT_USER_ADMINISTRATION","MY_ACCOUNT_PRODUCT_GUIDE_CONFIGURATION","MY_ACCOUNT_PRODUCT_GUIDE_CONFIGURATION_NEW","MY_ACCOUNT_PRODUCT_GUIDE_CONFIGURATION_EDIT","permissionForRoute","DownloadContentType","CoreDownloadService","contentType","Blob","downloadLink","createObjectURL","download","revokeObjectURL","fileUrl","xhr","XMLHttpRequest","responseType","msSaveOrOpenBlob","blob","Image","urlCreator","webkitURL","send","downloadFileCore","downloadImageCore","isBidOnPdp","externalTheme","productLink","productLinkText","isPriceAvailable","suggestedRetailPrice","previousPrice","basketStyle","maxQuantity","hasAvailableBid","trackLogInToViewPricesClick","AddToBasket","ProductClassifications","Exchange","SpecialOr","C1","C2","C3","Refurb","ProductConditionService","productClassification","existingFacets","newKey","leaveHandler","hasTrigger","fade","REMOVE_PRODUCT_TILE","doShow","startTime","performance","timeShown","restTime","minDuration","SpinnerElement","ImageSizePlaceholder","defaultImageUrl","FavoriteListCrudOverlayService","canDelete","DomMutationService","WebKitMutationObserver","eventListenerSupported","obs","mutations","addedNodes","removedNodes","ticking","tickCallbacks","getWindowWidth","innerHeight","scrollX","getPageOffset","scrollChange","scrollHandler","resizeHandler","requestTick","axis","pageXOffset","scrollLeft","tick","internalType","isPassword","togglePasswordVisibility","isPasswordVisible","baseOptions","modalOptions","getOptions","hideModals","setActiveModal","ProductBidsFetchService","expr","cancelled","timedOut","checkExpression","_baseUrl","addSize","ProductTrackingState","GTMService","currentPagePath","setupPageViewTracking","pageType","pageViewUrl","currencyCode","currencyCodeFromLineItems","ecommerce","checkout","actionField","trackingLineItemToInternal","rawLineItems","rli","receiptViewModel","purchase","revenue","subTotal","invariantCultureFormatted","tax","totalVat","shipping","deliveryPrice","currencyCodeFromProducts","detail","toInternal","tabTarget","checkout_option","option","trackProductTile","listName","impressions","doProductClick","searchQuery","searchResults","facetName","promos","promoView","promotions","promoClick","runOptimizeEvents","trackPageDestroyed","trackPageRendered","newPagePath","trackingProduct","stockLocationType","getStockLocationType","metric1","dimension16","dimension20","dimension19","currency","ContentApiService","ensureCulture","isPreview","CustomResponseHeaders","headers","clientredirect","authredirect","clientRedirectUrl","reloadFromServer","reloadCurrentPage","correlationId","validationMessages","isHandled","handled","isErrorStatusCode","rawTxt","BAD_REQUEST","responseHandler","isTokenInvalid","TokenInvalid","Token","retryResponse","requestHandler","authorization","SESSION_STORAGE_KEY","_sessionKey","initSessionKey","_localStorageKey","storage","keyName","getSessionKey","getLocalStorageKey","handledErrorStatusCodes","failedRequestCount","responseInterceptors","requestInterceptors","pageCancelTokenSrc","cancellableRequestDictionary","nonCountedOutstandingRequestPatterns","registerInterceptors","defaults","validateStatus","paramsSerializer","sortedParams","getParams","resetFailedRequestCount","cancellableContextKey","cancelTokenSrc","CancelToken","source","isCancel","incrementFailedRequestCount","interceptors","searchValue","sortedValues","changeOutstandingRequests","contentDisposition","cancellationContextKey","incrementOutstandingRequests","defaultGetHeaders","ensureCancellationToken","cancelToken","requestSucceded","handlePotentialErrorResponse","unwrapResponse","handleErrorResponse","decrementOutstandingRequests","post","ProductTrackerProcessBatchKey","SETTLE_TIME_MS","IDLE_TIME_MS","MAX_NO_OF_PRODUCTS_IN_BATCH","settled","productBecameVisible","trackingProductAndElement","annotatedProduct","positionOfProduct","ts","sendTrackingBatch","idleTimerHandle","settleTimerHandle","maybeSendTracking","productState","visibleTrackingProducts","batchToSend","vp","trackImpressions","cleanup","runTrackingBatchAfterBusUpdate","PageName","createUrlFactory","controller","shouldExclude","urlFactory","showOpenOnly","startDate","orderType","getContentDispositionFilename","loginData","password","req","updateAccount","sortColumn","sortOrder","department","searchRequest","searchUri","productWIds","productWId","productSeries","brandSeries","createCancellableGet","theConfig","externalUrlFactory","cancellableSeries","cancellableModels","cancellableItems","cancellableSearch","brandId","seriesName","searchText","sourceDomain","brandType","adUnitIds","condition","mpnNumber","itemNo","pph","productCategory","productGroup","requests","uniqueIdentifier","terminal","cancellablePrices","shipToCountryCode","shipToAddressCode","addOrUpdateRequest","brandUrlFactory","getRaw","cancellableSearchForRMA","cancellableSearchForCustomers","cancellableSearchForUsers","employeeNumbers","checkIsMaintenanceMode","maintenanceIsActive","Api","access","authentication","becomeAUser","newsletter","productGuideConfiguration","recommendations","cableGuide","employee","cvrSearch"],"mappings":"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","file":"js/app.969436df.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n \t\tvar prefetchChunks = data[3] || [];\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n \t\tdeferredPrefetch.push.apply(deferredPrefetch, prefetchChunks);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\tif(deferredModules.length === 0) {\n \t\t\t// chunk prefetching for javascript\n \t\t\tdeferredPrefetch.forEach(function(chunkId) {\n \t\t\t\tif(installedChunks[chunkId] === undefined) {\n \t\t\t\t\tinstalledChunks[chunkId] = null;\n \t\t\t\t\tvar link = document.createElement('link');\n\n \t\t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\t\tlink.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t\t}\n \t\t\t\t\tlink.rel = \"prefetch\";\n \t\t\t\t\tlink.as = \"script\";\n \t\t\t\t\tlink.href = jsonpScriptSrc(chunkId);\n \t\t\t\t\tdocument.head.appendChild(link);\n \t\t\t\t}\n \t\t\t});\n \t\t\tdeferredPrefetch.length = 0;\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [], deferredPrefetch = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"basic-blocks\":\"basic-blocks\",\"brands\":\"brands\",\"code-block\":\"code-block\",\"myaccount~product-guide\":\"myaccount~product-guide\",\"myaccount\":\"myaccount\",\"product-guide\":\"product-guide\",\"news\":\"news\",\"v-tooltip\":\"v-tooltip\",\"vee-validate\":\"vee-validate\",\"airbnbStyleDatepicker\":\"airbnbStyleDatepicker\"}[chunkId]||chunkId) + \".\" + {\"basic-blocks\":\"832a8c58\",\"brands\":\"e1bed0d6\",\"chunk-014ef2e2\":\"4a1d66b0\",\"chunk-140f6014\":\"a06f5e84\",\"chunk-17de5966\":\"a84a7112\",\"chunk-4d115167\":\"6ace1a6d\",\"chunk-2182ad96\":\"3fd89943\",\"chunk-2296aebf\":\"560da2d1\",\"chunk-25a92012\":\"771a0961\",\"chunk-281586b1\":\"29a2dbfe\",\"chunk-2d0c0ebf\":\"f4a27c8e\",\"chunk-2d0c208b\":\"8232b53e\",\"chunk-2d0daf41\":\"28461260\",\"chunk-2d0de704\":\"53ce1f5b\",\"chunk-2d0e5397\":\"94d04704\",\"chunk-2d21a80f\":\"3b8aee11\",\"chunk-2d21ab1b\":\"e77e78d3\",\"chunk-2d224e86\":\"6a21ae19\",\"chunk-33021848\":\"5aa2ec64\",\"chunk-3ad6b358\":\"9595cc20\",\"chunk-3f7f684e\":\"68a2950f\",\"chunk-4bf94268\":\"92d4294a\",\"chunk-62211888\":\"fcc68ffe\",\"chunk-726ef4c4\":\"59648075\",\"chunk-78c22445\":\"c4cca82c\",\"chunk-934c1100\":\"edce06ff\",\"chunk-b0df89be\":\"670036a9\",\"chunk-b10d2102\":\"8ef748b5\",\"chunk-b6b8b21e\":\"6b7a3b5b\",\"chunk-dcd6363e\":\"b9633788\",\"chunk-fdfe1214\":\"aabcccd6\",\"chunk-ffcb101e\":\"62d3031f\",\"code-block\":\"9b6c2a68\",\"myaccount~product-guide\":\"bd2cf0c9\",\"myaccount\":\"48d6279b\",\"product-guide\":\"eb0c57e2\",\"news\":\"32d2fa47\",\"v-tooltip\":\"c4e2444f\",\"vee-validate\":\"6a1afe78\",\"airbnbStyleDatepicker\":\"d0bb499c\",\"chunk-152b1f96\":\"57745609\",\"chunk-7b38ac2e\":\"fba572e0\",\"chunk-eff069cc\":\"75c1413e\",\"chunk-32fefa4a\":\"95188319\",\"chunk-992b597c\":\"29cdb003\",\"chunk-13dd75dc\":\"81127afa\",\"chunk-25d4e456\":\"4265264a\",\"chunk-2d20866f\":\"4d49b950\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"basic-blocks\":1,\"brands\":1,\"chunk-140f6014\":1,\"chunk-17de5966\":1,\"chunk-4d115167\":1,\"chunk-2182ad96\":1,\"chunk-2296aebf\":1,\"chunk-281586b1\":1,\"chunk-3ad6b358\":1,\"chunk-3f7f684e\":1,\"chunk-4bf94268\":1,\"chunk-62211888\":1,\"chunk-934c1100\":1,\"chunk-b6b8b21e\":1,\"chunk-dcd6363e\":1,\"myaccount~product-guide\":1,\"myaccount\":1,\"news\":1,\"chunk-7b38ac2e\":1,\"chunk-992b597c\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({\"basic-blocks\":\"basic-blocks\",\"brands\":\"brands\",\"code-block\":\"code-block\",\"myaccount~product-guide\":\"myaccount~product-guide\",\"myaccount\":\"myaccount\",\"product-guide\":\"product-guide\",\"news\":\"news\",\"v-tooltip\":\"v-tooltip\",\"vee-validate\":\"vee-validate\",\"airbnbStyleDatepicker\":\"airbnbStyleDatepicker\"}[chunkId]||chunkId) + \".\" + {\"basic-blocks\":\"9cbd72da\",\"brands\":\"078f1d33\",\"chunk-014ef2e2\":\"31d6cfe0\",\"chunk-140f6014\":\"5e2af116\",\"chunk-17de5966\":\"ea7bdd58\",\"chunk-4d115167\":\"6af68712\",\"chunk-2182ad96\":\"a7b18e66\",\"chunk-2296aebf\":\"bd4f7652\",\"chunk-25a92012\":\"31d6cfe0\",\"chunk-281586b1\":\"a4d383d9\",\"chunk-2d0c0ebf\":\"31d6cfe0\",\"chunk-2d0c208b\":\"31d6cfe0\",\"chunk-2d0daf41\":\"31d6cfe0\",\"chunk-2d0de704\":\"31d6cfe0\",\"chunk-2d0e5397\":\"31d6cfe0\",\"chunk-2d21a80f\":\"31d6cfe0\",\"chunk-2d21ab1b\":\"31d6cfe0\",\"chunk-2d224e86\":\"31d6cfe0\",\"chunk-33021848\":\"31d6cfe0\",\"chunk-3ad6b358\":\"3348ab74\",\"chunk-3f7f684e\":\"0e85c200\",\"chunk-4bf94268\":\"0e85c200\",\"chunk-62211888\":\"1f3127ad\",\"chunk-726ef4c4\":\"31d6cfe0\",\"chunk-78c22445\":\"31d6cfe0\",\"chunk-934c1100\":\"286e6e99\",\"chunk-b0df89be\":\"31d6cfe0\",\"chunk-b10d2102\":\"31d6cfe0\",\"chunk-b6b8b21e\":\"a8c76c40\",\"chunk-dcd6363e\":\"23a0909f\",\"chunk-fdfe1214\":\"31d6cfe0\",\"chunk-ffcb101e\":\"31d6cfe0\",\"code-block\":\"31d6cfe0\",\"myaccount~product-guide\":\"f1e3fc98\",\"myaccount\":\"8ee9ae24\",\"product-guide\":\"31d6cfe0\",\"news\":\"b824e98e\",\"v-tooltip\":\"31d6cfe0\",\"vee-validate\":\"31d6cfe0\",\"airbnbStyleDatepicker\":\"31d6cfe0\",\"chunk-152b1f96\":\"31d6cfe0\",\"chunk-7b38ac2e\":\"67fd4065\",\"chunk-eff069cc\":\"31d6cfe0\",\"chunk-32fefa4a\":\"31d6cfe0\",\"chunk-992b597c\":\"0cbcbe1c\",\"chunk-13dd75dc\":\"31d6cfe0\",\"chunk-25d4e456\":\"31d6cfe0\",\"chunk-2d20866f\":\"31d6cfe0\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/static/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \tvar startupResult = (function() {\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n \t})();\n\n \twebpackJsonpCallback([[], {}, 0, [\"chunk-17de5966\",\"chunk-4d115167\",\"basic-blocks\",\"v-tooltip\",\"vee-validate\",\"chunk-281586b1\",\"chunk-140f6014\",\"chunk-dcd6363e\",\"chunk-4bf94268\",\"chunk-3ad6b358\",\"chunk-934c1100\",\"chunk-2182ad96\",\"chunk-ffcb101e\",\"chunk-33021848\",\"chunk-25a92012\",\"chunk-014ef2e2\",\"chunk-2d21ab1b\",\"chunk-2d0de704\"]]);\n \treturn startupResult;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"product-stock overflow-hidden font-medium xl:mt-3\",class:{'flex': _vm.popoverTriggerAsIconOnly}},[(_vm.stock.loaded && !_vm.hideStock)?[_vm._l((_vm.stockDataResume),function(info,i){return [_c('p',{key:i,staticClass:\"flex text-13 mb-2 leading-normal max-w-full\",class:{ 'justify-end': _vm.alignRight, 'w-full pr-20': _vm.showStockPopover && _vm.popoverTriggerAsIconOnly },attrs:{\"title\":_vm.getStockInformationText(info)}},[(!_vm.alignRight)?_c('span',{staticClass:\"stock-icon inline-block mt-3\",class:_vm.getStockIcon(info),attrs:{\"aria-hidden\":\"true\"}}):_vm._e(),_c('span',{staticClass:\"stock-information-text\",class:{ 'truncate': !_vm.showDetailedStock, 'break-words': _vm.showDetailedStock, 'not-logged-in': !_vm.isLoggedIn }},[_vm._v(\" \"+_vm._s(_vm.getStockInformationText(info))+\" \")]),(_vm.alignRight)?_c('span',{staticClass:\"stock-icon stock-icon-right inline-block mt-3 ml-3\",class:_vm.getStockIcon(info),attrs:{\"aria-hidden\":\"true\"}}):_vm._e()])]}),(_vm.isLimitedItem)?_c('div',{staticClass:\"flex text-13\",class:{ 'items-center': !_vm.showDetailedStock }},[_c('c-icon',{staticClass:\"stock-icon\",class:{ 'mt-6': _vm.showDetailedStock },attrs:{\"name\":\"limited-supply\",\"width\":\"11\",\"height\":\"11\",\"original\":true}}),_c('p',{staticClass:\"mt-2\",class:{ 'truncate': _vm.tileMode, 'whitespace-pre-line mt-5': _vm.showDetailedStock }},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")(_vm.showDetailedStock ? 'Product.Stock.LimitedItemDetails' : 'Product.Stock.LimitedItem'))+\" \")])],1):_vm._e(),(_vm.showStockPopover)?_c('v-popover',{class:{'block' :!_vm.popoverTriggerAsIconOnly, '-ml-20 -mt-20' :_vm.popoverTriggerAsIconOnly},attrs:{\"offset\":\"5\",\"placement\":\"top\",\"trigger\":\"hover click\"}},[(_vm.popoverTriggerAsIconOnly)?_c('div',{attrs:{\"aria-label\":_vm._f(\"t\")('Product.Stock.StockInfo')}},[_c('c-icon',{attrs:{\"name\":\"info\",\"width\":\"14\",\"height\":\"14\"}})],1):_c('div',{staticClass:\"flex items-center xl:mt-1\"},[_c('div',{staticClass:\"stock-icon\"}),_c('div',{staticClass:\"xs:text-12 md:text-13 theme-text-linkcolor font-medium underline cursor-pointer\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Stock.StockInfo'))+\" \")])]),_c('template',{slot:\"popover\"},[_c('div',{staticClass:\"flex flex-col text-left font-medium\"},[_c('div',{staticClass:\"font-bold xs:text-12 md:text-13\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Stock.StockInfo'))+\" \")]),(_vm.detailedStockData.length > 0)?_c('div',{staticClass:\"flex flex-col\"},_vm._l((_vm.detailedStockData),function(info,i){return _c('div',{key:i,staticClass:\"flex items-center last:pb-0\"},[_c('div',{staticClass:\"stock-icon\",class:_vm.getStockIcon(info)}),_c('div',{staticClass:\"xs:text-12 md:text-13\"},[_vm._v(\" \"+_vm._s(_vm.getStockInformationText(info))+\" \")])])}),0):_vm._e(),(_vm.isLimitedItem)?_c('div',{staticClass:\"flex text-12\"},[_c('c-icon',{staticClass:\"stock-icon mt-8\",attrs:{\"name\":\"limited-supply\",\"width\":\"11\",\"height\":\"11\",\"original\":true}}),_c('p',{staticClass:\"pt-2 whitespace-pre-line\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Stock.LimitedItemDetails'))+\" \")])],1):_vm._e()])])],2):_vm._e(),(_vm.showNotifyMe)?_c('div',[(!_vm.isOnNotificationList)?_c('temporary',{attrs:{\"has-trigger\":\"\",\"delay\":50,\"duration\":0,\"mode\":\"fade\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(ref){\nvar trigger = ref.trigger;\nreturn [_c('v-popover',{staticClass:\"info-input-icon\",attrs:{\"popover-inner-class\":\"tooltip-inner stock-tooltip-inner\",\"trigger\":\"hover\",\"auto-hide\":\"\",\"offset\":\"5\",\"placement\":\"top\"}},[_c('button',{staticClass:\"flex items-center cursor-pointer mt-3\",class:{ 'opacity-50': _vm.notificationInProgress },attrs:{\"disabled\":_vm.notificationInProgress},on:{\"click\":function($event){return _vm.notifyOnStockReplenish(trigger)}}},[_c('c-icon',{staticClass:\"mr-4\",attrs:{\"name\":\"mail\",\"height\":\"15\",\"width\":\"13\"}}),_c('p',{staticClass:\"xs:text-12 md:text-13 theme-text-linkcolor font-medium hover:underline cursor-pointer text-left leading-normal pt-1\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Stock.NotifyMe'))+\" \")])],1),_c('template',{slot:\"popover\"},[_c('h4',{staticClass:\"font-bold\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Stock.NotifyMe.PopOver.Headline'))+\" \")]),_c('p',{staticClass:\"font-medium\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Stock.NotifyMe.PopOver.Body'))+\" \")])])],2)]}}],null,false,1813139835)},[_c('v-popover',{staticClass:\"info-input-icon\",attrs:{\"popover-inner-class\":\"tooltip-inner stock-tooltip-inner\",\"trigger\":\"hover\",\"auto-hide\":\"\",\"offset\":\"5\",\"placement\":\"top\"}},[_c('div',{staticClass:\"flex items-center text-13 text-green-500 font-bold pr-10\"},[_c('c-icon',{staticClass:\"mr-5\",attrs:{\"name\":\"checkmark\",\"height\":\"18\",\"width\":\"18\"}}),_c('p',[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Stock.Notified'))+\" \")])],1),_c('template',{slot:\"popover\"},[_c('h4',{staticClass:\"font-bold\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Stock.NotifyMe.PopOver.Headline'))+\" \")]),_c('p',{staticClass:\"font-medium\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Stock.NotifyMe.PopOver.NotifiedBody',_vm.account && _vm.account.email))+\" \")])])],2)],1):_c('v-popover',{staticClass:\"info-input-icon\",attrs:{\"popover-inner-class\":\"tooltip-inner stock-tooltip-inner\",\"trigger\":\"hover\",\"auto-hide\":\"\",\"offset\":\"5\",\"placement\":\"top\"}},[_c('div',{staticClass:\"flex items-center text-13 text-green-500 font-bold pr-10\"},[_c('c-icon',{staticClass:\"mr-5\",attrs:{\"name\":\"checkmark\",\"height\":\"18\",\"width\":\"18\"}}),_c('p',[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Stock.Notified'))+\" \")])],1),_c('template',{slot:\"popover\"},[_c('h4',{staticClass:\"font-bold\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Stock.NotifyMe.PopOver.Headline'))+\" \")]),_c('p',{staticClass:\"font-medium\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Stock.NotifyMe.PopOver.NotifiedBody',_vm.account && _vm.account.email))+\" \")])])],2)],1):_vm._e()]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { debounce } from 'lodash';\r\nimport Deferred from '@/core/async/Deferred';\r\nimport Api from '@/project/http/Api.service';\r\n\r\nclass NotificationFetchService {\r\n private debounceTime = 100;\r\n private debouncedFetch = debounce(this.fetch, this.debounceTime);\r\n private deferred = new Deferred();\r\n\r\n public async requestData(): Promise {\r\n this.debouncedFetch();\r\n return this.deferred.promise;\r\n }\r\n\r\n public async fetch() {\r\n const result = await Api.notifications.getNotifications();\r\n this.deferred.resolve(result.itemIds);\r\n this.deferred = new Deferred();\r\n }\r\n}\r\n\r\nexport default new NotificationFetchService();\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Prop, Component, Watch } from 'vue-property-decorator';\r\nimport { StockInformationViewObject, StockLocationTypeViewObject } from '@/types/apiServerContract';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\nimport Temporary from '@/core/ui-components/Temporary.vue';\r\nimport Api from '@/project/http/Api.service';\r\nimport NotificationFetchService from '@/project/product/services/notificationsFetch.service';\r\nimport myAccountStore from '@/project/app/client-pages/my-account/my-account.store';\r\nimport gtmService from '@/project/tracking/gtm/GTM.service';\r\nimport serverContextService from '@/core/serverContext.service';\r\n\r\n@Component({\r\n components: { Temporary }\r\n})\r\nexport default class ProductTileStock extends Vue {\r\n @Prop({ required: true }) itemId!: string;\r\n @Prop({ required: true }) stock!: { loaded: boolean, data: StockInformationViewObject[] | null, simpleData: StockInformationViewObject[] | null };\r\n @Prop({ required: false, type: Boolean, default: false }) private tileMode!: boolean;\r\n @Prop({ required: false, type: Boolean, default: false }) private popoverTriggerAsIconOnly!: boolean;\r\n @Prop({ required: false, type: Boolean, default: false }) private alignRight!: boolean;\r\n @Prop({ required: false, type: Boolean, default: false }) private ignoreNotifyMe!: boolean;\r\n @Prop({ required: false, type: Boolean, default: false }) private showDetailedStock!: boolean;\r\n @Prop({ required: false, type: Number, default: 2 }) private numberOfStockLabels!: number;\r\n @Prop({ required: false, type: Boolean, default: false }) private isLimitedItem!: boolean;\r\n @Prop({ required: false, type: Boolean, default: true }) private allowStockPopover!: boolean;\r\n @Prop({ required: true, type: Boolean }) isLoggedIn!: boolean;\r\n\r\n private notificationInProgress: boolean = false;\r\n private notificationLoading: boolean = false;\r\n private notificationList: string[] = [];\r\n\r\n get hideStock() {\r\n return serverContextService.externalProductGuideSettings?.hideStock === true;\r\n }\r\n\r\n get detailedStockData(): StockInformationViewObject[] {\r\n if (this.hideStock) {\r\n return [];\r\n }\r\n\r\n return this.stock.data && this.stock.data.length > 0 ? this.stock.data : [];\r\n }\r\n\r\n get stockData(): StockInformationViewObject[] {\r\n if (this.hideStock) {\r\n return [];\r\n }\r\n\r\n if (this.showDetailedStock) {\r\n return this.stock.data && this.stock.data.length > 0 ? this.stock.data : [];\r\n } else {\r\n return this.stock.simpleData && this.stock.simpleData.length > 0 ? this.stock.simpleData : [];\r\n }\r\n }\r\n\r\n get stockDataResume(): StockInformationViewObject[] {\r\n if (this.showDetailedStock) {\r\n // Product Details Page shows all stock data\r\n return this.stockData;\r\n } else {\r\n return this.stockData.slice(0, this.numberOfStockLabels);\r\n }\r\n }\r\n\r\n get showStockPopover(): boolean {\r\n if (!this.allowStockPopover || !this.isLoggedIn) {\r\n return false;\r\n }\r\n\r\n if (this.showDetailedStock) {\r\n return false;\r\n }\r\n\r\n if (this.stockData.length < this.detailedStockData.length) {\r\n return true;\r\n }\r\n\r\n if (this.stockDataResume.length < this.stockData.length) {\r\n return true;\r\n }\r\n\r\n // if one of the lines are longer than 20 chars (we then expect 20 to be where the string is truncated)\r\n return !!this.stockDataResume.find(stock => this.getStockInformationText(stock).length > 20);\r\n }\r\n\r\n private get showNotifyMe() {\r\n if (!this.isLoggedIn || this.ignoreNotifyMe === true) {\r\n return false;\r\n }\r\n\r\n return this.stockData.every(x => x.locationType === 2 && x.hasStock) ?? false;\r\n }\r\n\r\n private get account() {\r\n return myAccountStore.account;\r\n }\r\n\r\n private async notifyOnStockReplenish(callback: () => void) {\r\n try {\r\n this.notificationInProgress = true;\r\n await Api.notifications.notifyOnStockReplenish(this.itemId);\r\n gtmService.trackNotifyOnStockReplenish();\r\n callback();\r\n } finally {\r\n this.notificationInProgress = false;\r\n }\r\n }\r\n\r\n private get isOnNotificationList() {\r\n return this.notificationList.some(x => x === this.itemId);\r\n }\r\n\r\n getStockIcon(stock: StockInformationViewObject) {\r\n const stockIcons = {\r\n green: 'stock-icon-green',\r\n yellow: 'stock-icon-yellow',\r\n gray: 'stock-icon-gray'\r\n };\r\n\r\n const type = stock.locationType;\r\n switch (type) {\r\n case StockLocationTypeViewObject.Local:\r\n return stockIcons.green;\r\n case StockLocationTypeViewObject.Remote:\r\n case StockLocationTypeViewObject.InComing:\r\n return stockIcons.yellow;\r\n default:\r\n return stockIcons.gray;\r\n }\r\n }\r\n\r\n getStockInformationText(stock: StockInformationViewObject): string {\r\n return dictionaryService.translate(stock.stockInformationText);\r\n }\r\n\r\n private async checkIfProductIsNotificationListed() {\r\n if (!this.isLoggedIn || this.notificationLoading) return;\r\n this.notificationLoading = true;\r\n\r\n try {\r\n const result = await NotificationFetchService.requestData();\r\n\r\n if (result) {\r\n this.notificationList = result;\r\n }\r\n } catch {\r\n // No need to log any potential errors here since it's dealt with in our \"AbstractBulkFetch\" method.\r\n } finally {\r\n this.notificationLoading = false;\r\n }\r\n }\r\n\r\n @Watch('isLoggedIn')\r\n onLoginStateChange(state: boolean) {\r\n if (state) {\r\n this.checkIfProductIsNotificationListed();\r\n }\r\n }\r\n\r\n created() {\r\n this.checkIfProductIsNotificationListed();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileStock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileStock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductTileStock.vue?vue&type=template&id=b799d432&\"\nimport script from \"./ProductTileStock.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductTileStock.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductTileStock.vue?vue&type=style&index=0&lang=less&\"\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 Vue, { CreateElement, Component } from 'vue';\r\nimport translateFilter from '@/core/translation/translate.filter';\r\nimport password from './custom-rules/password';\r\nimport { ValidationRule } from 'vee-validate/dist/types/types';\r\nimport { ValidationObserver } from 'vee-validate';\r\n\r\nconst loadedState = Vue.observable({\r\n validationProvider: null as Component | null,\r\n validationObserver: null as Component | null\r\n});\r\nlet initCalled = false;\r\n\r\nasync function init() {\r\n if (initCalled) return;\r\n initCalled = true;\r\n\r\n const veeValidateAsyncLoad = () => import(/* webpackPrefetch: true, webpackChunkName: 'vee-validate' */ 'vee-validate');\r\n const veeValidateRulesAsyncLoad = () => import(/* webpackPrefetch: true, webpackChunkName: 'vee-validate' */ 'vee-validate/dist/rules');\r\n const [\r\n { extend, setInteractionMode, ValidationObserver, ValidationProvider },\r\n { email, required, is, min, max }] = await Promise.all([veeValidateAsyncLoad(), veeValidateRulesAsyncLoad()]);\r\n\r\n setupNewRule('required', required, 'Validation.Required');\r\n setupNewRule('email', email, 'Validation.Email');\r\n setupNewRule('password', password.passwordValidator, 'Validation.Password');\r\n setupNewRule('same-password', is, 'Validation.PasswordMustMatch');\r\n setupNewRule('min', min, 'Validation.MinLength', 'length');\r\n setupNewRule('max', max, 'Validation.MaxLength', 'length');\r\n setupNewRule('url', {\r\n validate: value => {\r\n if (value) {\r\n return /^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([-.][a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$/.test(value);\r\n }\r\n return false;\r\n }\r\n } as ValidationRule, 'Validation.Url');\r\n setupNewRule('streetname', {\r\n validate: value => {\r\n return validateStringHasChars(value);\r\n }\r\n } as ValidationRule, 'Validation.StreetName');\r\n setupNewRule('streetnumber', {\r\n validate: value => {\r\n return validateStringHasNumber(value);\r\n }\r\n } as ValidationRule, 'Validation.StreetNumber');\r\n\r\n setInteractionMode('eager');\r\n\r\n loadedState.validationObserver = ValidationObserver;\r\n loadedState.validationProvider = ValidationProvider;\r\n\r\n function setupNewRule(ruleName: string, rule: object, labelMapping: string, paramName: string | undefined = undefined) {\r\n const validationSchema: ValidationRule = ({\r\n ...rule,\r\n message: (field, params?: Record) => translateFilter(labelMapping, paramName && params ? params[paramName] : undefined)\r\n });\r\n if (paramName) {\r\n validationSchema.params = [paramName];\r\n }\r\n extend(ruleName, validationSchema);\r\n }\r\n};\r\n\r\nfunction validateStringHasChars(value: string = ''): boolean {\r\n const regex = new RegExp(/\\p{L}/, 'gu');\r\n const regmatch = value.match(regex);\r\n const match = regmatch && regmatch.length > 1;\r\n return match || false;\r\n}\r\nfunction validateStringHasNumber(value: string = ''): boolean {\r\n const regex = /\\d/;\r\n const regmatch = value.match(regex);\r\n const match = regmatch && regmatch.length > 0;\r\n return match || false;\r\n}\r\nexport function validationRuleAddressField(market: string): string[] {\r\n // For new addresses, validate that street has both chars and numbers - Only not if address country is Norway as few addresses do not have a street number in Norway: https://www.posten.no/en/sending/preparation/addressing\r\n const rules = ['streetname'];\r\n if (market.toLowerCase() !== 'no') {\r\n rules.push('streetnumber');\r\n }\r\n return rules;\r\n}\r\nconst AsyncValidationProvider = Vue.component('AsyncValidationProvider', {\r\n created() {\r\n init();\r\n },\r\n render(h) {\r\n const element = loadedState.validationProvider || 'span';\r\n return h(element, { scopedSlots: this.$scopedSlots, attrs: this.$attrs, props: this.$props, on: this.$listeners }, this.$slots.default);\r\n }\r\n});\r\n\r\nconst AsyncValidationObserver = Vue.component('AsyncValidationObserver', {\r\n created() {\r\n init();\r\n },\r\n methods: {\r\n validate(options: { silent?: boolean | undefined; } | undefined): Promise {\r\n const silent = options?.silent;\r\n return (this.$children[0] as InstanceType).validate({ silent });\r\n },\r\n reset(): void {\r\n return (this.$children[0] as InstanceType).reset();\r\n }\r\n },\r\n render(h: CreateElement) {\r\n const element = loadedState.validationObserver || 'span';\r\n return h(element, { scopedSlots: this.$scopedSlots, attrs: this.$attrs, props: this.$props, on: this.$listeners }, this.$slots.default);\r\n }\r\n});\r\n\r\nVue.component('ValidationProvider', AsyncValidationProvider);\r\nVue.component('ValidationObserver', AsyncValidationObserver);\r\n","// Only stuff needed during bootstrapping (before Vue is loaded)\r\nimport tokenService from '@/core/auth/token.service';\r\n\r\ndeclare global {\r\n interface Window {\r\n dataLayer: Array,\r\n }\r\n}\r\n\r\nexport type DataLayerEntry = { [key: string]: any };\r\n\r\nclass GTMBasics {\r\n public trackUserLogin(): void {\r\n const userData = tokenService.getUserData(true);\r\n const payload = {\r\n event: 'user.login',\r\n language: window.servercontext.languageCode,\r\n country: window.servercontext.countryCode,\r\n companyName: window.servercontext.businessEntityName,\r\n\r\n ...(userData !== null && {\r\n contactKey: userData.contactKey,\r\n contactHash: userData.contactHash,\r\n customerId: userData.customerNo,\r\n webUserId: userData.webUserId,\r\n customInfo1: userData.salesProfitCategory,\r\n ...(userData.impersonatorEmail && { impersonated: 'true' }),\r\n role: userData.role\r\n })\r\n };\r\n\r\n this.pushToDataLayer(payload);\r\n }\r\n\r\n public init() {\r\n window.dataLayer = [];\r\n // Insert userlogin event _before_ GTM script is initialized\r\n this.trackUserLogin();\r\n this.runGTMScript();\r\n }\r\n\r\n public pushToDataLayer(trackingObject: DataLayerEntry): void {\r\n // console.log(trackingObject);\r\n window.dataLayer && window.dataLayer.push(trackingObject);\r\n }\r\n\r\n private runGTMScript() {\r\n const script = document.createElement('script');\r\n script.text =\r\n `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\r\n new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\r\n j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\r\n 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);\r\n})(window, document, 'script', 'dataLayer', '${window.servercontext.googleTagManagerId}');\r\n`;\r\n document.head.appendChild(script);\r\n }\r\n}\r\n\r\nexport default new GTMBasics();\r\n","import { RedirectError } from '@/core/http/RedirectError';\r\nimport { JL } from 'jsnlog';\r\nimport { isDevMode } from '@/core/environmentService';\r\nconst consoleLogsEnabled = location.search.includes('enable-console-logs=true') || isDevMode();\r\nconst serverLogsEnabled = location.search.includes('enable-server-logs=true') || window.servercontext?.siteChrome?.settings?.enableClientSideLogging;\r\nconst jl = JL();\r\n\r\nclass LoggingService {\r\n public debug(logObject: any): void {\r\n // eslint-disable-next-line\r\n this.consoleLogging(() => console.log(logObject));\r\n this.serverLogging(() => jl.debug(logObject));\r\n }\r\n\r\n public info(logObject: any) {\r\n // eslint-disable-next-line\r\n this.consoleLogging(() => console.info(logObject));\r\n this.serverLogging(() => jl.info(logObject));\r\n }\r\n\r\n public warn(logObject: any) {\r\n // eslint-disable-next-line\r\n this.consoleLogging(() => console.warn(logObject));\r\n this.serverLogging(() => jl.warn(logObject));\r\n }\r\n\r\n public error(logObject: any) {\r\n if (isWhitelisted(logObject)) return;\r\n\r\n // eslint-disable-next-line\r\n this.consoleLogging(() => console.error(logObject));\r\n this.serverLogging(() => jl.error(logObject));\r\n\r\n function isWhitelisted(logObject: any) {\r\n return !!(logObject && logObject instanceof RedirectError);\r\n }\r\n }\r\n\r\n public fatal(logObject: any) {\r\n // eslint-disable-next-line\r\n this.consoleLogging(() => console.error(logObject));\r\n this.serverLogging(() => jl.fatal(logObject));\r\n }\r\n\r\n public exception(logObject: any, e: any) {\r\n // eslint-disable-next-line\r\n this.consoleLogging(() => console.error(logObject, e));\r\n this.serverLogging(() => {\r\n try {\r\n jl.fatalException(logObject, e);\r\n } catch {\r\n // It has been seen that an object (e.g. internal vue object cannot be serialized due to circular refs.)\r\n jl.fatal(logObject);\r\n }\r\n });\r\n }\r\n\r\n private consoleLogging(func: () => void) {\r\n if (consoleLogsEnabled) {\r\n func();\r\n }\r\n }\r\n\r\n private serverLogging(func: () => void) {\r\n if (serverLogsEnabled) {\r\n func();\r\n }\r\n }\r\n}\r\n\r\nexport default new LoggingService();\r\n","import Vue from 'vue';\r\nimport dictionaryService from './dictionary.service';\r\n\r\nfunction translateFilter(value: string, ...args: string[]) {\r\n return value ? dictionaryService.get(value, args) : '';\r\n}\r\n\r\nVue.filter('t', translateFilter);\r\n\r\nexport default translateFilter;\r\n","import Vue from 'vue';\r\nimport Deferred from '@/core/async/Deferred';\r\n\r\nexport type ComponentType = object | (() => object);\r\n\r\nexport interface ModalOptions {\r\n disableBodyScroll: boolean;\r\n contentAutoScroll: boolean;\r\n placement: 'left' | 'right' | 'top' | 'center';\r\n singleton: boolean;\r\n usePanelWrapper: boolean;\r\n wide: boolean;\r\n contentMaxHeight: boolean;\r\n showCloseButton: boolean;\r\n disableUserClose: boolean;\r\n closeButtonPosition: null | 'right-30' | 'right-075';\r\n closeOnRouteChange: boolean;\r\n closeOnBreakpointChange: boolean;\r\n}\r\n\r\nexport interface IModal extends ModalOptions {\r\n id: string;\r\n data?: any;\r\n component: ComponentType;\r\n componentAttrs: any;\r\n modalListeners?: any;\r\n deferred: Deferred;\r\n state: 'entering' | 'visible' | 'exiting' | 'hidden';\r\n}\r\n\r\ninterface IModalState {\r\n modals: IModal[];\r\n}\r\n\r\nexport class ModalState {\r\n private static state: IModalState = Vue.observable({\r\n modals: []\r\n })\r\n\r\n public static get modals(): IModal[] {\r\n return this.state.modals;\r\n }\r\n\r\n public static get activeModal(): IModal | null {\r\n return this.state.modals[this.state.modals.length - 1];\r\n }\r\n\r\n public static setActiveModal(modal: IModal) {\r\n this.state.modals.push(modal);\r\n }\r\n\r\n public static async hideModal(id: string, data?: any) {\r\n const modal = this.state.modals.find(x => x.id === id);\r\n if (modal) {\r\n if (data) {\r\n modal.data = data;\r\n }\r\n\r\n if (modal.state === 'visible' || modal.state === 'exiting') {\r\n modal.state = 'exiting';\r\n await modal.deferred.promise;\r\n this.removeModal(modal);\r\n } else {\r\n // Modal was not yet visible, just remove it cleanly - no animation needed\r\n modal.deferred.resolve();\r\n this.removeModal(modal);\r\n }\r\n }\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n public static async hideModals() {\r\n for (const modal of this.modals) {\r\n await this.hideModal(modal.id);\r\n }\r\n }\r\n\r\n private static removeModal(modal: IModal) {\r\n this.state.modals.splice(this.state.modals.indexOf(modal), 1);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileFavorite.vue?vue&type=style&index=0&id=17546bf2&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileFavorite.vue?vue&type=style&index=0&id=17546bf2&lang=less&scoped=true&\"","import Vue from 'vue';\r\nimport makeStoreDebugAccessible from '@/core/store/storeDebug';\r\nimport { AddProductsToBasketRequest, BasketQuoteViewObject, BasketViewModel, LineItem, LineItemViewObject } from '@/types/apiServerContract';\r\nimport Api from '@/project/http/Api.service';\r\nimport { PartialUpdateBasketRequest } from '@/project/http/controllers/basketController';\r\nimport { debounce } from 'lodash';\r\nimport authService, { LOGGED_IN, TOKEN_DATA_CHANGED_MARKET } from '@/core/auth/auth.service';\r\nimport bus from '@/core/bus';\r\nimport Deferred from '@/core/async/Deferred';\r\nimport loggingService from '@/core/logging.service';\r\n\r\ntype JobFunc = () => Promise;\r\n\r\ninterface JobData {\r\n job: JobFunc,\r\n deferred: Deferred\r\n}\r\n\r\ninterface PartialLineItem {\r\n lineItemId: string;\r\n bidId?: number | null;\r\n quantity?: number;\r\n reference?: string;\r\n quoteId?: string;\r\n}\r\n\r\nfunction lineItemIdEqual(lineItemId: string, bidId: number | undefined | null, quoteId?: string | undefined): (lineItem: LineItemViewObject | LineItem) => boolean {\r\n return (lineItem) => {\r\n // Dont simplify this. bideId can be null or undefined or have value.\r\n return lineItemId === lineItem.lineItemId &&\r\n ((bidId === lineItem.bidId || (!bidId && !lineItem.bidId)) &&\r\n ((quoteId === lineItem.quoteId) || (!quoteId && !lineItem.quoteId)));\r\n };\r\n}\r\nfunction lineItemWidEqual(wid: string, bidId: number | undefined | null, quoteId?: string | undefined): (lineItem: LineItemViewObject | LineItem) => boolean {\r\n return (lineItem) => {\r\n // Dont simplify this. bideId can be null or undefined or have value.\r\n return wid === lineItem.wid &&\r\n ((bidId === lineItem.bidId || (!bidId && !lineItem.bidId)) &&\r\n ((quoteId === lineItem.quoteId) || (!quoteId && !lineItem.quoteId)));\r\n };\r\n}\r\n\r\nclass BasketService {\r\n basketState: {\r\n basket: BasketViewModel | null,\r\n loaded: boolean\r\n } = Vue.observable({ basket: null, loaded: false });\r\n\r\n productQueue: LineItem[] = [];\r\n jobQueue: JobData[] = [];\r\n debouncedSendToServer = debounce(this.sendToServer, 500);\r\n isSendingToServer = false;\r\n hasPendingProductUpdates = false;\r\n updateLineItemPrices = false;\r\n updateDeliveryPrice = false;\r\n\r\n constructor() {\r\n makeStoreDebugAccessible('basket-service', this.basketState);\r\n if (authService.isLoggedIn()) {\r\n this.getBasket();\r\n }\r\n\r\n bus.on(LOGGED_IN, () => this.getBasket());\r\n bus.on(TOKEN_DATA_CHANGED_MARKET, () => this.getBasket());\r\n }\r\n\r\n public addProduct(wid: string, bidId: number | undefined | null, quoteId: string | undefined, quantity: number, updateLineItemPrices: boolean, updateDeliveryPrice: boolean): void {\r\n this.updateLineItemPrices = updateLineItemPrices;\r\n this.updateDeliveryPrice = updateDeliveryPrice;\r\n this.queueForServer({\r\n quantity,\r\n wid,\r\n reference: '',\r\n lineItemId: '',\r\n bidId: bidId,\r\n quoteId: '',\r\n isDuplicated: false\r\n });\r\n }\r\n\r\n public deltaUpdateQuantity(lineItemId: string, bidId: number | undefined | null, quoteId: string | undefined, delta: number, updateLineItemPrices: boolean, updateDeliveryPrice: boolean): void {\r\n this.updateLineItemPrices = updateLineItemPrices;\r\n this.updateDeliveryPrice = updateDeliveryPrice;\r\n const existing = this.getLineItem(lineItemId, bidId, quoteId);\r\n if (existing) {\r\n this.setQuantity(existing.lineItemId, bidId, quoteId, existing.quantity + delta, updateLineItemPrices, updateDeliveryPrice);\r\n }\r\n }\r\n\r\n public deltaUpdateQuantityByWid(wid: string, bidId: number | undefined | null, quoteId: string | undefined, delta: number, updateLineItemPrices: boolean, updateDeliveryPrice: boolean): void {\r\n this.updateLineItemPrices = updateLineItemPrices;\r\n this.updateDeliveryPrice = updateDeliveryPrice;\r\n const lineItems = this.getLineItemsByWid(wid, bidId, quoteId);\r\n if (lineItems.length === 0) {\r\n this.addProduct(wid, bidId, quoteId, delta, updateLineItemPrices, updateDeliveryPrice);\r\n } else if (lineItems.length === 1) {\r\n this.setQuantity(lineItems[0].lineItemId, bidId, quoteId, lineItems[0].quantity + delta, updateLineItemPrices, updateDeliveryPrice);\r\n } else {\r\n // Can't update quantity based on wid if multiple lineItems exist\r\n }\r\n }\r\n\r\n public setQuantity(lineItemId: string, bidId: number | undefined | null, quoteId: string | undefined, quantity: number, updateLineItemPrices: boolean, updateDeliveryPrice: boolean): void {\r\n this.updateLineItemPrices = updateLineItemPrices;\r\n this.updateDeliveryPrice = updateDeliveryPrice;\r\n this.updateLineItemIntern({\r\n lineItemId,\r\n bidId,\r\n quoteId,\r\n quantity\r\n });\r\n }\r\n\r\n public setQuantityByWid(wid: string, bidId: number | undefined | null, quoteId: string | undefined, quantity: number, updateLineItemPrices: boolean, updateDeliveryPrice: boolean): void {\r\n this.updateLineItemPrices = updateLineItemPrices;\r\n this.updateDeliveryPrice = updateDeliveryPrice;\r\n\r\n const lineItems = this.getLineItemsByWid(wid, bidId, quoteId);\r\n\r\n if (lineItems.length === 1) {\r\n this.updateLineItemIntern({\r\n lineItemId: lineItems[0].lineItemId,\r\n bidId,\r\n quoteId,\r\n quantity\r\n });\r\n }\r\n }\r\n\r\n public updateLineItemReference(lineItemId: string, bidId: number | undefined, quoteId: string | undefined, reference: string): void {\r\n this.updateLineItemIntern({\r\n lineItemId,\r\n bidId,\r\n quoteId,\r\n reference\r\n });\r\n }\r\n\r\n public isProductInBasket(wid: string, bidId: number | undefined, quoteId: string | undefined): boolean {\r\n // console.log('isProductInBasket', this.getLineItemsByWid(wid, bidId, quoteId), bidId, this.getLineItemsByWid(wid, bidId, quoteId).length > 0);\r\n return this.getLineItemsByWid(wid, bidId, quoteId).length > 0;\r\n }\r\n\r\n public isProductDuplicated(wid: string, bidId: number | undefined, quoteId: string | undefined): boolean {\r\n // console.log('isProductDuplicated', this.getLineItemsByWid(wid, bidId, quoteId), this.getLineItemsByWid(wid, bidId, quoteId).length > 1);\r\n return this.getLineItemsByWid(wid, bidId, quoteId).length > 1;\r\n }\r\n\r\n public getQuantity(lineItemId: string, bidId: number | undefined, quoteId: string | undefined): number {\r\n return this.getLineItem(lineItemId, bidId, quoteId)?.quantity || 0;\r\n }\r\n\r\n public getQuantityByWid(wid: string, bidId: number | undefined, quoteId: string | undefined): number {\r\n const lineItems = this.getLineItemsByWid(wid, bidId, quoteId);\r\n if (lineItems.length === 0) return 0;\r\n\r\n return lineItems.reduce((a, b) => a + b.quantity, 0);\r\n }\r\n\r\n public get lineItems(): LineItemViewObject[] {\r\n return this.basketState?.basket?.lineItems ?? [];\r\n }\r\n\r\n public async clearBasket(): Promise {\r\n if (this.basketState.basket?.quotes) {\r\n this.basketState.basket.quotes = [];\r\n }\r\n\r\n if (this.basketState.basket?.lineItems) {\r\n // Temporary local change before updated basket comes back\r\n this.basketState.basket.lineItems = [];\r\n this.productQueue = [];\r\n }\r\n\r\n return this.executeAsyncInSerial(async() => {\r\n this.basketState.basket = await Api.basket.clear();\r\n });\r\n }\r\n\r\n public async removeLineItem(lineItemId: string): Promise {\r\n const existing = this.basketState.basket?.lineItems.find(lineItem => lineItem.lineItemId === lineItemId);\r\n if (!existing) return;\r\n this.updateLineItemPrices = true;\r\n this.updateDeliveryPrice = true;\r\n this.updateLineItemIntern({\r\n lineItemId: existing.lineItemId,\r\n bidId: existing.bidId,\r\n quantity: 0\r\n });\r\n }\r\n\r\n public async duplicateLineItem(lineItemId: string): Promise {\r\n const existing = this.basketState.basket?.lineItems.find(lineItem => lineItem.lineItemId === lineItemId);\r\n if (!existing) return;\r\n this.updateLineItemPrices = true;\r\n this.updateDeliveryPrice = true;\r\n this.makeTemporaryLocalAdd(existing);\r\n this.queueForServer({\r\n wid: existing.wid,\r\n quantity: 1,\r\n reference: '',\r\n lineItemId: '',\r\n bidId: existing.bidId,\r\n quoteId: '',\r\n isDuplicated: true\r\n });\r\n }\r\n\r\n public get basket(): BasketViewModel | null {\r\n return this.basketState.basket;\r\n }\r\n\r\n public async addMultipleItemsToBasket(request: AddProductsToBasketRequest): Promise {\r\n return this.executeAsyncInSerial(async() => {\r\n this.basketState.basket = await Api.basket.addMultipleItemsToBasket(request);\r\n });\r\n }\r\n\r\n public async updateBasket(update: PartialUpdateBasketRequest): Promise {\r\n return this.executeAsyncInSerial(async() => {\r\n this.basketState.basket = await Api.basket.update(update);\r\n });\r\n }\r\n\r\n public async recalcBasket(): Promise {\r\n return this.executeAsyncInSerial(async() => {\r\n this.basketState.basket = await Api.basket.updateDefault();\r\n });\r\n }\r\n\r\n public forceGetBasket() {\r\n this.getBasket();\r\n }\r\n\r\n public get basketWithCommittedLineItems(): BasketViewModel | null {\r\n const basket = this.basket;\r\n if (!basket) return basket;\r\n\r\n const committedLineItems = basket.lineItems.filter(l => !this.isTemporaryLineItemId(l.lineItemId));\r\n\r\n const commitedQuotes = basket.quotes.map(x => ({\r\n ...x,\r\n lineItems: x.lineItems.filter(l => !this.isTemporaryLineItemId(l.lineItemId))\r\n } as BasketQuoteViewObject));\r\n\r\n return {\r\n ...basket,\r\n lineItems: committedLineItems,\r\n quotes: commitedQuotes\r\n };\r\n }\r\n\r\n public get hasPendingServerUpdates(): boolean {\r\n return this.hasPendingProductUpdates;\r\n }\r\n\r\n public async addQuote(quoteId: string, shippingMethodLocked: boolean): Promise {\r\n this.basketState.basket = await Api.basket.addQuote({ quoteId: quoteId, shippingMethodLocked: shippingMethodLocked });\r\n this.basketState.basket!.shippingMethodLocked = shippingMethodLocked;\r\n }\r\n\r\n public removeQuote(quoteId: string): Promise {\r\n if (!this.basketState.basket) {\r\n throw new Error('Basketstate is undefined');\r\n }\r\n\r\n this.basketState.basket.quotes.splice(this.basketState.basket.quotes.findIndex(x => x.quoteId === quoteId), 1);\r\n\r\n return this.executeAsyncInSerial(async() => {\r\n this.basketState.basket = await Api.basket.removeQuote(quoteId);\r\n });\r\n }\r\n\r\n public isLineItemDuplicated(wid: string, bidId: number | undefined | null, quoteId: string | undefined) {\r\n return this.getLineItemsByWid(wid, bidId, quoteId).length > 1;\r\n }\r\n\r\n public quoteInBasket(quoteId: string): boolean {\r\n return !!(this.basketState.basket?.quotes?.find(q => q.quoteId === quoteId));\r\n }\r\n\r\n public noOfBasketItems(): number {\r\n const normalLineItemsCnt = this.basketState.basket?.lineItems?.reduce((previousValue, lineItem: LineItemViewObject) => {\r\n return previousValue + lineItem.quantity;\r\n }, 0) ?? 0;\r\n const quoteLineItemsCnt = this.basketState.basket?.quotes?.reduce((previousOuterValue, quote: BasketQuoteViewObject) => {\r\n return previousOuterValue + quote.lineItems.reduce((previousValue, lineItem: LineItemViewObject) => {\r\n return previousValue + lineItem.quantity;\r\n }, 0) ?? 0;\r\n }, 0) ?? 0;\r\n return normalLineItemsCnt + quoteLineItemsCnt;\r\n }\r\n\r\n public get isBasketLoaded() {\r\n return this.basketState.loaded;\r\n }\r\n\r\n private isTemporaryLineItemId(lineItemId: string | undefined): boolean {\r\n return !lineItemId;\r\n }\r\n\r\n private updateLineItemIntern(partialLineItem: PartialLineItem): void {\r\n const existing = this.getLineItem(partialLineItem.lineItemId, partialLineItem.bidId, partialLineItem.quoteId);\r\n if (!existing) {\r\n throw new Error('Tried to update for non-existing line-item. ID: ' + partialLineItem.lineItemId);\r\n }\r\n this.makeTemporaryLocalUpdate(partialLineItem.lineItemId, partialLineItem.bidId, partialLineItem.quoteId, partialLineItem.quantity);\r\n this.queueForServer({\r\n ...existing,\r\n ...partialLineItem,\r\n isDuplicated: false\r\n });\r\n }\r\n\r\n private queueForServer(lineItem: LineItem) {\r\n const existingIx = this.productQueue.findIndex(lineItem.lineItemId ? lineItemIdEqual(lineItem.lineItemId, lineItem.bidId, lineItem.quoteId) : lineItemWidEqual(lineItem.wid, lineItem.bidId, lineItem.quoteId));\r\n if (existingIx !== -1) {\r\n this.productQueue[existingIx] = lineItem;\r\n } else {\r\n this.productQueue.push(lineItem);\r\n }\r\n this.hasPendingProductUpdates = true;\r\n if (lineItem.lineItemId) {\r\n // If product and lineItemId is known to basket, debounce changes.\r\n this.debouncedSendToServer();\r\n } else {\r\n // If product is not in basket, fire XHR now. This avoids timing issue with lineItemId being slow to update https://dev.azure.com/eet-project/eet-drift/_workitems/edit/3546\r\n this.sendToServer();\r\n }\r\n }\r\n\r\n private sendToServer() {\r\n this.executeAsyncInSerial(async() => {\r\n const toSend = this.productQueue;\r\n if (toSend.length === 0) return;\r\n this.productQueue = [];\r\n\r\n const basket = await Api.basket.addOrUpdateLineItems({\r\n lineItems: toSend,\r\n updateLineItemPrices: this.updateLineItemPrices,\r\n updateDeliveryPrice: this.updateDeliveryPrice\r\n });\r\n\r\n this.updateDeliveryPrice = false;\r\n this.hasPendingProductUpdates = false;\r\n this.basketState.basket = basket;\r\n });\r\n }\r\n\r\n private executeAsyncInSerial(func: JobFunc): Promise {\r\n const deferred = new Deferred();\r\n this.jobQueue.push({\r\n deferred,\r\n job: func\r\n });\r\n this.doExecuteAsyncInSerial();\r\n return deferred.promise;\r\n }\r\n\r\n private doExecuteAsyncInSerial() {\r\n if (this.isSendingToServer || this.jobQueue.length === 0) return;\r\n\r\n this.isSendingToServer = true;\r\n const nextJob = this.jobQueue.shift();\r\n nextJob!.job()\r\n .finally(() => {\r\n nextJob!.deferred.resolve();\r\n this.isSendingToServer = false;\r\n if (this.jobQueue.length > 0) {\r\n setTimeout(() => this.doExecuteAsyncInSerial());\r\n }\r\n });\r\n }\r\n\r\n private makeTemporaryLocalAdd(existingProduct: LineItemViewObject) {\r\n if (!this.basketState.basket) return; // Don't have a basket yet\r\n\r\n // Add fake line-item until basket comes back\r\n const fakeLineItem: LineItemViewObject = {\r\n ...existingProduct,\r\n lineItemId: Math.random().toString(),\r\n quantity: 1,\r\n reference: '',\r\n unitPrice: {},\r\n total: {}\r\n } as LineItemViewObject;\r\n this.basketState.basket.lineItems.push(fakeLineItem);\r\n }\r\n\r\n private makeTemporaryLocalUpdate(lineItemId: string, bidId: number | undefined | null, quoteId: string | undefined, quantity?: number) {\r\n // Temporary local change before updated basket comes back\r\n if (quantity == null) return; // Could be reference update without quantity\r\n if (!this.basketState.basket) return; // Don't have a basket yet\r\n\r\n const existingProductIndex = this.getLineItemIndex(lineItemId, bidId, quoteId);\r\n if (existingProductIndex > -1) {\r\n if (quantity === 0) {\r\n // Remove product if quantity is 0\r\n this.basketState.basket.lineItems.splice(existingProductIndex, 1);\r\n } else {\r\n // Update existing product locally\r\n const updatedExisting = { ...this.basketState.basket.lineItems[existingProductIndex], quantity };\r\n Vue.set(this.basketState.basket.lineItems, existingProductIndex, updatedExisting);\r\n }\r\n }\r\n }\r\n\r\n private getLineItemIndex(lineItemId: string, bidId: number | undefined | null, quoteId: string | undefined): number {\r\n return this.basketState?.basket?.lineItems.findIndex(lineItemIdEqual(lineItemId, bidId, quoteId)) ?? -1;\r\n }\r\n\r\n private getLineItemsByWid(wid: string, bidId: number | undefined | null, quoteId: string | undefined): LineItemViewObject[] {\r\n return this.basket?.lineItems?.filter(lineItemWidEqual(wid, bidId, quoteId)) || [];\r\n }\r\n\r\n private getLineItem(lineItemId: string, bidId: number | undefined | null, quoteId: string | undefined): LineItemViewObject | undefined {\r\n let lineItem: LineItemViewObject | undefined;\r\n\r\n if (quoteId) {\r\n lineItem = this.basketState?.basket?.quotes.find(x => x.quoteId === quoteId)?.lineItems.find(lineItemIdEqual(lineItemId, bidId, quoteId));\r\n } else {\r\n lineItem = this.basketState?.basket?.lineItems.find(lineItemIdEqual(lineItemId, bidId));\r\n }\r\n\r\n return lineItem;\r\n }\r\n\r\n private async getBasket() {\r\n try {\r\n this.basketState.basket = await Api.basket.get();\r\n } catch (e) {\r\n loggingService.error(e);\r\n } finally {\r\n this.basketState.loaded = true;\r\n }\r\n }\r\n}\r\n\r\nexport default new BasketService();\r\n","export const HasOutstandingXhrCallsEventKey = 'NoOfOutstandingXhrCallsEventKey';\r\nexport const MobileFacetsUpdateEventKey = 'MobileFacetsUpdateEventKey';\r\nexport const RouterBeforeChangeKey = 'RouterBeforeChangeKey';\r\nexport const potentialMaintenanceMaxFailedRequestLimit = 4;\r\nexport const potentialMaintenanceMaxFailedRequestLimitReachedKey = 'potentialMaintenanceMaxFailedRequestLimitReachedKey';\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddToBasket.vue?vue&type=style&index=0&id=e01eac92&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddToBasket.vue?vue&type=style&index=0&id=e01eac92&lang=less&scoped=true&\"","import { ImpersonationViewModel, UserViewObject } from '@/types/apiServerContract';\r\nimport Api from '@/project/http/Api.service';\r\nimport { hardRedirect } from '@/core/redirect.service';\r\nimport tokenService from '@/core/auth/token.service';\r\nimport bus from '@/core/bus';\r\nimport authService, { LOGGED_OFF } from '@/core/auth/auth.service';\r\nimport { localStorageService } from '@/core/storage.service';\r\nimport { PageName } from '@/router/routes/constants';\r\nimport { router } from 'spaRouter';\r\n\r\nclass ImpersonationService {\r\n private URL_LOCAL_STORAGE_KEY = 'eetgroup-eet-site';\r\n private _isImpersonating = !!(tokenService.getUserData()?.impersonatorEmail);\r\n private _impersonatorCultureStored = localStorageService.getItemAs(this.URL_LOCAL_STORAGE_KEY);\r\n private _impersonatorCulture = this._impersonatorCultureStored ? this._impersonatorCultureStored : 'en-zz';\r\n\r\n constructor() {\r\n bus.on(LOGGED_OFF, () => {\r\n if (this.isImpersonating) {\r\n hardRedirect(this.redirectUrl(this._impersonatorCulture));\r\n }\r\n });\r\n }\r\n\r\n public async impersonate(user: UserViewObject, messageId: string) {\r\n const result: ImpersonationViewModel = await Api.impersonation.beginImpersonation(user.id, messageId);\r\n\r\n authService.replaceToken(result.token);\r\n\r\n // Create hard redirect to the siteUrl / MarketUrl we receive from the API call\r\n if (result.siteUrl) {\r\n hardRedirect(this.redirectUrl(result.siteUrl));\r\n }\r\n }\r\n\r\n public async endImpersonation() {\r\n const result: ImpersonationViewModel = await Api.impersonation.endImpersonation();\r\n\r\n authService.replaceToken(result.token);\r\n\r\n const myAccountPagePath = router.resolve({ name: PageName.MY_ACCOUNT_IMPERSONATION });\r\n\r\n hardRedirect(this.redirectUrl(this._impersonatorCulture, myAccountPagePath.href));\r\n }\r\n\r\n public get impersonateeName(): string {\r\n if (!this.isImpersonating) return '';\r\n return tokenService.getUserData()?.userName ?? '';\r\n }\r\n\r\n public get isImpersonating(): boolean {\r\n return this._isImpersonating;\r\n }\r\n\r\n private redirectUrl(site: string, href?: string) {\r\n // convert /xx-xx/lajaskldfkf?lksadf or /lajaskldfkf?lksadf to /zz-zz/lajaskldfkf?lksadf\r\n // Where xx-xx is culture and zz-zz is users preferred culture\r\n let url = href != null ? href : location.pathname + location.search;\r\n\r\n if (location.pathname.match(/^\\/[a-z]{2}-[a-z]{2}/i)) {\r\n url = url.substr(6);\r\n }\r\n\r\n return site + url;\r\n }\r\n}\r\n\r\nexport default new ImpersonationService();\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'creditcard': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 32 23',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'arrow-left': {\r\n width: 18,\r\n height: 32,\r\n viewBox: '0 0 18 32',\r\n data: ''\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalOverlay.vue?vue&type=style&index=0&id=188b23dc&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalOverlay.vue?vue&type=style&index=0&id=188b23dc&lang=less&scoped=true&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobilePageHeader.vue?vue&type=style&index=0&id=ad7dc1a4&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobilePageHeader.vue?vue&type=style&index=0&id=ad7dc1a4&lang=less&scoped=true&\"","export function hexToRgb(hex: string, alpha: number | undefined = 1): string {\r\n const { red, green, blue } = hexToRgbValues(hex);\r\n\r\n if (alpha < 0 || alpha > 1) {\r\n throw new Error('Alpha should be between 0 and 1: ' + alpha);\r\n }\r\n\r\n if (alpha !== 1) {\r\n return `rgba(${red}, ${green}, ${blue}, ${alpha})`;\r\n } else {\r\n return `rgb(${red}, ${green}, ${blue})`;\r\n }\r\n}\r\n\r\nexport function isValidHexColor(hex: string): boolean {\r\n if (!hex) return false;\r\n\r\n if ((hex.length === 7 || hex.length === 9) && hex[0] === '#') {\r\n return true;\r\n }\r\n\r\n return hex.length === 6;\r\n}\r\n\r\nexport function hexToRgbValues(hex: string): {red: number, green: number, blue: number } {\r\n if (!isValidHexColor(hex)) throw new Error('Invalid color provided. ' + hex);\r\n\r\n if (hex.length === 7 || hex.length === 9) {\r\n hex = hex.substr(1);\r\n }\r\n\r\n const red = hex2ToDecimal(hex.substr(0, 2));\r\n const green = hex2ToDecimal(hex.substr(2, 2));\r\n const blue = hex2ToDecimal(hex.substr(4, 2));\r\n\r\n return {\r\n red,\r\n green,\r\n blue\r\n };\r\n\r\n function hex2ToDecimal(hexDigits: string): number {\r\n if (!hexDigits || hexDigits.length !== 2) {\r\n throw new Error('Can only convert 2 digit hex-string, but got: ' + hexDigits);\r\n }\r\n return parseInt(hexDigits, 16);\r\n }\r\n}\r\n\r\nexport function luma(r: number|string, g: number|string, b: number|string): number {\r\n if (typeof r === 'string') r = parseInt(r);\r\n if (typeof g === 'string') g = parseInt(g);\r\n if (typeof b === 'string') b = parseInt(b);\r\n // Calculate the perceptive luminance (aka luma) - human eye favors green color...\r\n return ((0.299 * r) + (0.587 * g) + (0.114 * b)) / 255;\r\n}\r\n\r\nexport function RGBToHSLObject(r: number|string, g: number|string, b: number|string): { h: number, s: number, l: number } {\r\n if (typeof r === 'string') r = parseInt(r);\r\n if (typeof g === 'string') g = parseInt(g);\r\n if (typeof b === 'string') b = parseInt(b);\r\n // Make r, g, and b fractions of 1\r\n r /= 255;\r\n g /= 255;\r\n b /= 255;\r\n\r\n // Find greatest and smallest channel values\r\n const cmin = Math.min(r, g, b);\r\n const cmax = Math.max(r, g, b);\r\n const delta = cmax - cmin;\r\n let h = 0;\r\n let s = 0;\r\n let l = 0;\r\n\r\n // Calculate hue\r\n // No difference\r\n if (delta === 0) {\r\n h = 0;\r\n } else if (cmax === r) {\r\n h = ((g - b) / delta) % 6;\r\n } else if (cmax === g) {\r\n h = (b - r) / delta + 2;\r\n } else { h = (r - g) / delta + 4; }\r\n\r\n h = Math.round(h * 60);\r\n\r\n // Make negative hues positive behind 360°\r\n if (h < 0) { h += 360; }\r\n\r\n // Calculate lightness\r\n l = (cmax + cmin) / 2;\r\n\r\n // Calculate saturation\r\n s = delta === 0 ? 0 : delta / (1 - Math.abs(2 * l - 1));\r\n\r\n // Multiply l and s by 100\r\n s = +(s * 100).toFixed(1);\r\n l = +(l * 100).toFixed(1);\r\n\r\n return { h, s, l };\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{staticClass:\"flex justify-center items-center\"},[(_vm.goBackEnabled)?_c('CultureAwareRouterLink',{staticClass:\"c-paginator__previous\",attrs:{\"to\":_vm.pageLink(_vm.currentPage - 1),\"rel\":\"prev\"},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.goto(_vm.currentPage - 1)}}},[_c('c-icon',{class:_vm.goBackEnabled ? 'text-black' : 'text-gray-700',attrs:{\"name\":\"arrow-left\",\"height\":\"12\",\"width\":\"12\",\"title\":_vm._f(\"t\")('Generic.Prev')}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm._f(\"t\")('Generic.Prev')))])],1):_c('span',{staticClass:\"c-paginator__previous\",attrs:{\"aria-hidden\":\"true\"}},[_c('c-icon',{class:_vm.goBackEnabled ? 'text-black' : 'text-gray-700',attrs:{\"name\":\"arrow-left\",\"height\":\"12\",\"width\":\"12\"}})],1),_vm._l((_vm.pages),function(page,ix){return [(page > 0)?_c('CultureAwareRouterLink',{key:ix,staticClass:\"c-paginator__page-marker text-center\",class:{active: page === _vm.currentPage },attrs:{\"aria-current\":page === _vm.currentPage ? 'page' : false,\"to\":_vm.pageLink(page)},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.goto(page)}}},[_vm._v(\" \"+_vm._s(page)+\" \")]):_c('span',{key:ix,staticClass:\"c-paginator__ellipsis\",attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"…\")])]}),(_vm.goForwardEnabled)?_c('CultureAwareRouterLink',{staticClass:\"c-paginator__next\",attrs:{\"to\":_vm.pageLink(_vm.currentPage + 1),\"rel\":\"next\"},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.goto(_vm.currentPage + 1)}}},[_c('c-icon',{class:_vm.goForwardEnabled ? 'text-black' : 'text-gray-700',attrs:{\"name\":\"arrow-right\",\"height\":\"12\",\"width\":\"12\",\"title\":_vm._f(\"t\")('Generic.Next')}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm._f(\"t\")('Generic.Next')))])],1):_c('span',{staticClass:\"c-paginator__next\",attrs:{\"aria-hidden\":\"true\"}},[_c('c-icon',{class:_vm.goForwardEnabled ? 'text-black' : 'text-gray-700',attrs:{\"name\":\"arrow-right\",\"height\":\"12\",\"width\":\"12\"}})],1),_c('nav',{staticClass:\"hidden\"},[_vm._l((_vm.noOfPages),function(page,ix){return [(page > 0)?_c('CultureAwareRouterLink',{key:ix,attrs:{\"aria-current\":page === _vm.currentPage ? 'page' : false,\"to\":_vm.pageLink(page)}},[_vm._v(\" \"+_vm._s(page)+\" \")]):_vm._e()]})],2)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop, Watch } from 'vue-property-decorator';\r\nimport urlHelper from '@/core/urlHelper.service';\r\nimport { pages } from './paging.service';\r\nimport Bus from '@/core/bus/Bus.vue';\r\nimport { RawLocation } from 'vue-router';\r\n@Component({\r\n components: { Bus }\r\n})\r\nexport default class PagingCtrl extends Vue {\r\n private pages: number[] = [];\r\n currentPage = 1;\r\n\r\n @Prop({ type: Number, default: 0 })\r\n private totalResults!: number;\r\n\r\n @Prop({ type: Number, default: 0 })\r\n private pageSize!: number;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private searching!: boolean;\r\n\r\n created() {\r\n this.setup();\r\n }\r\n\r\n @Watch('searching')\r\n private onSearchingChange(value: boolean) {\r\n if (!value) {\r\n this.setup();\r\n }\r\n }\r\n\r\n private setup() {\r\n this.currentPage = this.normalizePageNo(urlHelper.getPage());\r\n this.pages = pages(this.currentPage, this.noOfPages);\r\n\r\n // For now remove the last page (if dots just before) because BE runs into elastic problems when many pages. Devops #2314.\r\n if (this.pages[this.pages.length - 2] === -1) {\r\n this.pages.pop();\r\n }\r\n }\r\n\r\n private get noOfPages(): number {\r\n return Math.ceil(this.totalResults / this.pageSize);\r\n }\r\n\r\n private goto(page): void {\r\n this.currentPage = page;\r\n urlHelper.setPage(page);\r\n }\r\n\r\n private get goBackEnabled(): boolean {\r\n return this.currentPage > 1;\r\n }\r\n\r\n private get goForwardEnabled(): boolean {\r\n return this.currentPage < this.noOfPages;\r\n }\r\n\r\n private pageLink(page: number): RawLocation {\r\n page = this.normalizePageNo(page);\r\n return urlHelper.getLocationForPage(page);\r\n }\r\n\r\n private normalizePageNo(page: number): number {\r\n // Make sure user has not typed crazy value into url\r\n return Math.min(Math.max(page, 1), this.noOfPages);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PagingCtrl.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PagingCtrl.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PagingCtrl.vue?vue&type=template&id=f7090eae&\"\nimport script from \"./PagingCtrl.vue?vue&type=script&lang=ts&\"\nexport * from \"./PagingCtrl.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/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationBanner.vue?vue&type=style&index=0&id=34338b01&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationBanner.vue?vue&type=style&index=0&id=34338b01&lang=less&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputRadio.vue?vue&type=style&index=0&id=0cc0b31c&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputRadio.vue?vue&type=style&index=0&id=0cc0b31c&lang=less&scoped=true&\"","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'basket-plus': {\r\n width: 10,\r\n height: 10,\r\n viewBox: '0 0 10 10',\r\n data: ''\r\n }\r\n})\r\n","// const screens = require('../../styling/screens');\r\n// We get sporadic runtime-errors on the above. Possible a webpack error. che.\r\n\r\n/* REMEMBER TO KEEP IN SYNC WITH screens.js */\r\n\r\nimport { defineBreakpoints } from '@/core/responsive/breakpoints/breakpoints.service';\r\nimport { map } from 'lodash';\r\n\r\nexport const XS = 'xs';\r\nexport const MIN_XS = 'min-xs';\r\nexport const SM = 'sm';\r\nexport const MAX_SM = 'max-sm';\r\nexport const MIN_SM = 'min-sm';\r\nexport const MD = 'md';\r\nexport const MIN_MD = 'min-md';\r\nexport const MAX_MD = 'max-md';\r\nexport const LG = 'lg';\r\nexport const XL = 'xl';\r\nexport const MIN_LG = 'min-lg';\r\n\r\nconst screens = {\r\n [XS]: '0px', // Pure mobile\r\n [SM]: '415px', // Mobile and tablet vertical\r\n [MD]: '769px', // Up to and including old tablet horizontal\r\n [LG]: '1025px', // Desktop,\r\n [XL]: '1280px' // Wide desktop\r\n};\r\n\r\n/*\r\n\r\n// Lets use tailwind config as breakpoint-src\r\n// PREMISE: tailwind config has 'px' units\r\n\r\n Converts something like this:\r\n screens: {\r\n sm: '0',\r\n md: '640px',\r\n lg: '960px',\r\n xl: '1025px',\r\n },\r\n\r\n To something like this:\r\n {\r\n sm: { min: 0, max: 639 },\r\n md: { min: 640, max: 959 },\r\n lg: { min: 960, max: 1024 },\r\n xl: { min: 1025, max: 999999 },\r\n }\r\n*/\r\n\r\nfunction removeUnit(width: string): number {\r\n if (width.endsWith('px')) {\r\n return Number(width.slice(0, width.indexOf('p')));\r\n } else {\r\n return Number(width);\r\n }\r\n}\r\n\r\nconst orderedNormalizedBreakpoints = map(screens, (min, bp) => {\r\n return { name: bp, min: removeUnit(min) };\r\n}).sort((a, b) => a.min - b.min);\r\n\r\nconst breakpointArrayWithMax = map(orderedNormalizedBreakpoints, (bp, ix) => {\r\n let max;\r\n if (ix < orderedNormalizedBreakpoints.length - 1) {\r\n max = orderedNormalizedBreakpoints[ix + 1].min - 1;\r\n } else {\r\n max = 999999;\r\n }\r\n return { ...bp, ...{ max } };\r\n});\r\n\r\nconst finalBreakpoints = breakpointArrayWithMax.reduce((acc, bp) => {\r\n acc[bp.name] = { min: bp.min, max: bp.max };\r\n return acc;\r\n}, {});\r\n\r\ndefineBreakpoints(finalBreakpoints);\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ValidationProvider',{attrs:{\"tag\":\"span\",\"rules\":_vm.rules,\"name\":_vm.name || _vm.label},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('input',_vm._g(_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.modelValue),expression:\"modelValue\"}],staticClass:\"c-checkbox__input\",attrs:{\"id\":_vm.id,\"type\":\"checkbox\",\"name\":_vm.name},domProps:{\"value\":_vm.value,\"checked\":_vm.shouldBeChecked,\"checked\":Array.isArray(_vm.modelValue)?_vm._i(_vm.modelValue,_vm.value)>-1:(_vm.modelValue)},on:{\"input\":function($event){return _vm.updateValue($event, errors)},\"change\":function($event){var $$a=_vm.modelValue,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=_vm.value,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.modelValue=$$a.concat([$$v]))}else{$$i>-1&&(_vm.modelValue=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.modelValue=$$c}}}},'input',_vm.$attrs,false),_vm.listeners)),_c('label',{staticClass:\"c-checkbox__label\",class:{\n 'with-border': _vm.withBorder,\n 'solid-background':_vm.solidBackground,\n 'c-checkbox__label-switch':_vm.styleSwitch },attrs:{\"for\":_vm.id}},[(_vm.styleSwitch)?_c('div',{staticClass:\"c-checkbox__label-switch-dot\"}):_vm._e(),(!_vm.styleSwitch)?_c('c-icon',{staticClass:\"checkmark\",attrs:{\"name\":\"checkmark\"}}):_vm._e(),_c('div',{staticClass:\"my-5 ml-15\",class:{'sr-only': _vm.srOnly}},[(_vm.label && !_vm.links)?_c('span',{staticClass:\"select-none\",domProps:{\"innerHTML\":_vm._s(_vm.label)}}):(_vm.label && _vm.links)?_c('TranslationWithLinks',{attrs:{\"label\":_vm.label,\"links\":_vm.links}}):(_vm.htmlLabel)?_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.htmlLabel)}}):_vm._e()],1)],1),(_vm.showErrors)?[_c('ol',_vm._l((errors),function(error){return _c('li',{key:error,staticClass:\"text-red-500 text-11 font-medium pr-20 pb-5 pt-3\"},[_vm._v(\" \"+_vm._s(error)+\" \")])}),0)]:_vm._e()]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { CreateElement, VNode } from 'vue';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\nimport serverContextService from '@/core/serverContext.service';\r\n\r\nexport interface TranslationLink {\r\n name: string;\r\n url?: string;\r\n action?: () => void\r\n}\r\n\r\n@Component\r\nexport default class TranslationWithLinks extends Vue {\r\n @Prop({ type: String, required: true })\r\n private label!: string;\r\n\r\n @Prop({ type: Array, required: true })\r\n private links!: TranslationLink[];\r\n\r\n private get translatedLinks() {\r\n const links = this.links\r\n .map(x => ({\r\n name: dictionaryService.exists(x.name) ? dictionaryService.get(x.name) : x.name,\r\n url: x.url,\r\n action: x.action\r\n } as TranslationLink));\r\n return links;\r\n }\r\n\r\n private render(createElement: CreateElement) {\r\n const createSpan = (text: string) => createElement('span', text);\r\n const createLink = (text: string, url: string) => createElement('a', {\r\n attrs: {\r\n href: this.fixupUrl(url),\r\n target: url.startsWith('mailto') ? undefined : '_blank'\r\n },\r\n class: 'theme-text-linkcolor hover:underline'\r\n }, text);\r\n const createButton = (text: string, action: () => void) => createElement('button', {\r\n attrs: {\r\n type: 'button'\r\n },\r\n on: {\r\n click: () => action()\r\n },\r\n class: 'theme-text-linkcolor hover:underline'\r\n }, text);\r\n\r\n const nodes: VNode[] = [];\r\n\r\n const labelArgsSplit = this.label.split(/\\{[0-9]\\}/);\r\n\r\n for (let i = 0; i < labelArgsSplit.length; ++i) {\r\n nodes.push(createSpan(labelArgsSplit[i]));\r\n\r\n const translatedLink = this.translatedLinks[i];\r\n if (translatedLink) {\r\n if (translatedLink.url) {\r\n nodes.push(createLink(translatedLink.name, translatedLink.url));\r\n } else if (translatedLink.action) {\r\n nodes.push(createButton(translatedLink.name, translatedLink.action));\r\n }\r\n }\r\n }\r\n\r\n return createElement('p', nodes);\r\n }\r\n\r\n private fixupUrl(location: string): string {\r\n if (location.startsWith('mailto')) return location;\r\n\r\n return hasCulturePrefix(location) ? location : prependCulturePrefix(location);\r\n\r\n function hasCulturePrefix(to: string): boolean {\r\n return to?.startsWith(serverContextService.siteInfo.url!);\r\n }\r\n\r\n function prependCulturePrefix(url: string): string {\r\n return serverContextService.siteInfo.url! + url;\r\n }\r\n }\r\n}\r\n","var render, staticRenderFns\nimport script from \"./translation-with-links.vue?vue&type=script&lang=ts&\"\nexport * from \"./translation-with-links.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/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./translation-with-links.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./translation-with-links.vue?vue&type=script&lang=ts&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport TranslationWithLinks, { TranslationLink } from '@/core/translation/translation-with-links.vue';\r\n/*\r\nInspired by this: https://www.smashingmagazine.com/2017/08/creating-custom-inputs-vue-js/\r\n */\r\n@Component({\r\n model: {\r\n prop: 'modelValue',\r\n event: 'change'\r\n },\r\n components: { TranslationWithLinks }\r\n})\r\nexport default class InputCheckbox extends Vue {\r\n @Prop({ type: String, default: '' })\r\n public label!: string;\r\n\r\n @Prop(String)\r\n public htmlLabel!: string;\r\n\r\n @Prop(String)\r\n public name!: string;\r\n\r\n @Prop({ type: Array })\r\n public links!: TranslationLink[];\r\n\r\n @Prop({ default: true })\r\n public value;\r\n\r\n @Prop({ default: true })\r\n public trueValue;\r\n\r\n @Prop({ default: false })\r\n public falseValue;\r\n\r\n @Prop({ default: false })\r\n public modelValue!: boolean | Array;\r\n\r\n @Prop({\r\n type: [Object, String],\r\n default: ''\r\n })\r\n rules!: string | object;\r\n\r\n @Prop({ type: Boolean, required: false, default: true })\r\n private showErrors!: boolean;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private withBorder!: boolean;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private srOnly!: boolean;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private styleSwitch!: boolean; // Shows \"swipe\" iOS style checkbox\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private solidBackground!: boolean;\r\n\r\n internalValue: string | object | number | null = null;\r\n\r\n get id(): string {\r\n return this.name + Math.random();\r\n }\r\n\r\n private updateValue(event, errors) {\r\n const isChecked = event.target.checked;\r\n\r\n if (this.modelValue instanceof Array) {\r\n const newValue: any = [...this.modelValue];\r\n\r\n if (isChecked) {\r\n newValue.push(this.value);\r\n } else {\r\n newValue.splice(newValue.indexOf(this.value), 1);\r\n }\r\n\r\n // this.$emit('change', newValue);\r\n this.$emit('change', newValue);\r\n } else {\r\n // this.$emit('change', isChecked ? this.trueValue : this.falseValue);\r\n this.$emit('change', isChecked ? this.trueValue : this.falseValue);\r\n }\r\n }\r\n\r\n private get shouldBeChecked() {\r\n if (this.modelValue instanceof Array) {\r\n return this.modelValue.includes(this.value);\r\n }\r\n // Note that `true-value` and `false-value` are camelCase in the JS\r\n return this.modelValue === this.trueValue;\r\n }\r\n\r\n private get listeners() {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { change, ...listeners } = this.$listeners;\r\n return listeners;\r\n }\r\n\r\n created() {\r\n this.internalValue = this.value;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputCheckbox.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputCheckbox.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InputCheckbox.vue?vue&type=template&id=4a58118b&scoped=true&\"\nimport script from \"./InputCheckbox.vue?vue&type=script&lang=ts&\"\nexport * from \"./InputCheckbox.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./InputCheckbox.vue?vue&type=style&index=0&id=4a58118b&lang=less&scoped=true&\"\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 \"4a58118b\",\n null\n \n)\n\nexport default component.exports","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'basket-minus': {\r\n width: 8,\r\n height: 2,\r\n viewBox: '0 0 8 2',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'mail-receipt': {\r\n width: 32,\r\n height: 32,\r\n viewBox: '0 0 32 32',\r\n data: ''\r\n }\r\n})\r\n","import Vue from 'vue';\r\nimport makeStoreDebugAccessible from '@/core/store/storeDebug';\r\nimport {\r\n AccountHeaderOrderType,\r\n AccountLedgerViewObject,\r\n AccountLineType,\r\n AddOrUpdateFavoriteItemListRequest, AllUsersRequest,\r\n CreateFavoriteListRequest,\r\n CustomerViewObject,\r\n DeliveryAddressViewObject,\r\n FavoriteListPermission,\r\n FavoriteListViewModel,\r\n FavoriteListViewObject,\r\n LedgerDocumentType,\r\n LedgerRequest,\r\n NotificationType,\r\n OrderHeaderRequest,\r\n OrderHeaderViewObject,\r\n OrderHistoryDetailViewObject,\r\n OrderLinesRequest,\r\n OrderLineViewObject,\r\n RemoveItemsFromFavoriteListRequest,\r\n RmaHeaderViewObject,\r\n SendMailRequest,\r\n UpdateFavoriteListRequest,\r\n UserViewObject\r\n} from '@/types/apiServerContract';\r\nimport Api from '@/project/http/Api.service';\r\nimport loggingService from '@/core/logging.service';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\nimport urlHelperService from '@/core/urlHelper.service';\r\nimport GTMBasics from '@/project/tracking/gtm/GTM.basics';\r\n\r\ninterface IMyAccountState {\r\n isServiceAvailable: boolean,\r\n\r\n account: UserViewObject | null,\r\n customer: CustomerViewObject | null,\r\n orderDetails: OrderHistoryDetailViewObject[],\r\n orderHeaders: Map,\r\n orderLines: Map,\r\n associatedUsers: UserViewObject[];\r\n inactiveUsersCount: number;\r\n ledgerOrders: AccountLedgerViewObject[];\r\n ledgerDocumentTypes: LedgerDocumentType[];\r\n legerTotalHits: number;\r\n legerPageSize: number;\r\n legerPage: number;\r\n userNotifications: NotificationType[];\r\n editProductGuidesMenuItem: boolean;\r\n showDirectDebitBlock: boolean;\r\n invoices: SendMailRequest[];\r\n rmaHistory: RmaHeaderViewObject[];\r\n addresses: DeliveryAddressViewObject[];\r\n allowedCountryCodes: string[];\r\n favouriteLists: FavoriteListViewModel | null\r\n}\r\n\r\nexport interface AddressWithSearchKey extends DeliveryAddressViewObject {\r\n searchKey?: string;\r\n}\r\n\r\nclass MyAccountStore {\r\n private state: IMyAccountState = Vue.observable({\r\n isServiceAvailable: true,\r\n account: null,\r\n customer: null,\r\n orderDetails: [],\r\n orderHeaders: new Map(),\r\n orderLines: new Map(),\r\n associatedUsers: [],\r\n inactiveUsersCount: 0,\r\n ledgerOrders: [],\r\n ledgerDocumentTypes: [],\r\n legerTotalHits: 0,\r\n legerPageSize: 0,\r\n legerPage: 1,\r\n userNotifications: [],\r\n invoices: [],\r\n rmaHistory: [],\r\n addresses: [],\r\n allowedCountryCodes: [],\r\n favouriteLists: null,\r\n editProductGuidesMenuItem: false,\r\n showDirectDebitBlock: true\r\n });\r\n\r\n constructor() {\r\n makeStoreDebugAccessible('myAccountStore', this.state);\r\n }\r\n\r\n public get isServiceAvailable() {\r\n return this.state.isServiceAvailable;\r\n }\r\n\r\n async getAccountInformation() {\r\n const response = await Api.user.account();\r\n this.state.account = response.userViewObject;\r\n }\r\n\r\n async getCustomerDetails() {\r\n const result = await Api.customer.customer();\r\n this.state.customer = result.customer;\r\n }\r\n\r\n private async getCustomerPermissions() {\r\n try {\r\n const result = await Api.account.permissions();\r\n this.state.editProductGuidesMenuItem = result.showCustomProductGuides;\r\n this.state.showDirectDebitBlock = result.showDirectDebitBlock;\r\n } catch (e) {\r\n this.state.userNotifications = [];\r\n }\r\n }\r\n\r\n private async getCustomerNotifications() {\r\n try {\r\n const result = await Api.account.notifications();\r\n this.state.userNotifications = result.notificationItems;\r\n } catch (e) {\r\n this.state.userNotifications = [];\r\n }\r\n }\r\n\r\n public get hasProductGuideConfigurations(): boolean {\r\n return this.state.editProductGuidesMenuItem;\r\n }\r\n\r\n public get showDirectDebitBlock(): boolean {\r\n return this.state.showDirectDebitBlock;\r\n }\r\n\r\n public notificationForMenuItem(menuItem: NotificationType): boolean {\r\n return !!this.state.userNotifications.find(i => i === menuItem);\r\n }\r\n\r\n public get customerIsDue():boolean {\r\n return !!this.state.userNotifications.find(i => i === NotificationType.Ledger);\r\n }\r\n\r\n public get account() {\r\n return this.state.account;\r\n }\r\n\r\n public get customer() {\r\n return this.state.customer;\r\n }\r\n\r\n public updateAccount(user: UserViewObject) {\r\n Object.assign(this.state.account, user);\r\n }\r\n\r\n public async fetchOrderHeaders(request: OrderHeaderRequest): Promise {\r\n this.state.isServiceAvailable = true;\r\n\r\n try {\r\n const result = await Api.account.orderHeaders(request);\r\n this.state.isServiceAvailable = result.isServiceAvailable;\r\n\r\n if (result.isServiceAvailable) {\r\n this.state.orderHeaders = new Map(this.state.orderHeaders.set(request.type, Object.freeze(result.orderInformation)));\r\n }\r\n return result.resultOverflow;\r\n } catch (e) {\r\n loggingService.error(e);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public getOrderHeaderByOrderId(id: string): OrderHeaderViewObject | null {\r\n for (const entry of Array.from(this.state.orderHeaders.entries())) {\r\n for (const item of entry[1]) {\r\n if (item.orderId === id) { return item; }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public getOrderHeaders(type: AccountHeaderOrderType): readonly OrderHeaderViewObject[] {\r\n return this.state.orderHeaders.get(type) ?? [];\r\n }\r\n\r\n public async fetchOrderLines(request: OrderLinesRequest): Promise {\r\n this.state.isServiceAvailable = true;\r\n\r\n try {\r\n const result = await Api.account.orderLines(request);\r\n this.state.isServiceAvailable = result.isServiceAvailable;\r\n\r\n if (result.isServiceAvailable) {\r\n this.state.orderLines = new Map(this.state.orderLines.set(request.type, Object.freeze(result.orderInformation)));\r\n }\r\n\r\n return result.resultOverflow;\r\n } catch (e) {\r\n loggingService.error(e);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public getOrderLines(type: AccountLineType): readonly OrderLineViewObject[] {\r\n return this.state.orderLines.get(type) ?? [];\r\n }\r\n\r\n public async getAssociatedUsers(payload?: AllUsersRequest) {\r\n const result = await Api.user.allByCustomer(payload);\r\n this.state.associatedUsers = result.users;\r\n this.state.inactiveUsersCount = result.inactiveUsers;\r\n return result;\r\n }\r\n\r\n public get associatedUsers() {\r\n return this.state.associatedUsers;\r\n }\r\n\r\n public get inactiveUsersCount() {\r\n return this.state.inactiveUsersCount;\r\n }\r\n\r\n public updateAssociatedUser(user: UserViewObject) {\r\n const associatedUser = this.associatedUsers.find(x => x.userId === user.userId);\r\n if (associatedUser) {\r\n Object.assign(associatedUser, user);\r\n }\r\n }\r\n\r\n public addAssociatedUser(user: UserViewObject) {\r\n this.state.associatedUsers.push(user);\r\n }\r\n\r\n public async removeAssociatedUser(userId: string, deleteApiKey: string) {\r\n const index = this.state.associatedUsers.findIndex(x => x.userId === userId);\r\n if (index < 0) return false;\r\n\r\n try {\r\n await Api.user.delete(userId, deleteApiKey);\r\n if (this.state.associatedUsers[index].isInactive) {\r\n this.state.inactiveUsersCount--;\r\n }\r\n this.state.associatedUsers.splice(index, 1);\r\n return true;\r\n } catch (e) {\r\n loggingService.error(e);\r\n return false;\r\n }\r\n }\r\n\r\n public async getAddresses() {\r\n const addressesPromise = Api.delivery.getDeliveryAddresses()\r\n .then(result => {\r\n this.state.addresses = result.deliveryAddresses;\r\n this.state.addresses.sort(this.orderAddress);\r\n });\r\n const AllowedCountryCodesPromise = Api.customer.shipToCountries()\r\n .then(result => this.state.allowedCountryCodes = result.countries);\r\n await Promise.all([addressesPromise, AllowedCountryCodesPromise]);\r\n }\r\n\r\n public get addresses(): AddressWithSearchKey[] {\r\n return this.state.addresses;\r\n }\r\n\r\n public async updateAddress(address: DeliveryAddressViewObject, messagesId: string) {\r\n const updatedAddress = await Api.delivery.addOrUpdateDeliveryAddress(address, messagesId);\r\n const existingAddr = this.addresses.find(x => x.webId === updatedAddress.webId);\r\n if (existingAddr) {\r\n if (address.isDefault && !existingAddr.isDefault) {\r\n // Address was set to default - clear old one\r\n const currentDefaultAddr = this.addresses.find(x => x.isDefault);\r\n if (currentDefaultAddr) currentDefaultAddr.isDefault = false;\r\n }\r\n Object.assign(existingAddr, updatedAddress);\r\n // Invalidate searchkey and sort again\r\n existingAddr.searchKey = undefined;\r\n this.state.addresses.sort(this.orderAddress);\r\n }\r\n }\r\n\r\n public async addAddress(address: DeliveryAddressViewObject, messagesId: string) {\r\n const newAddress = await Api.delivery.addOrUpdateDeliveryAddress(address, messagesId);\r\n if (address.isDefault) {\r\n // Address was set to default - clear old one\r\n const currentDefaultAddr = this.addresses.find(x => x.isDefault);\r\n if (currentDefaultAddr) currentDefaultAddr.isDefault = false;\r\n }\r\n this.state.addresses.push(newAddress);\r\n this.state.addresses.sort(this.orderAddress);\r\n }\r\n\r\n public async removeAddress(address: DeliveryAddressViewObject, deleteApiKey: string) {\r\n const index = this.state.addresses.findIndex(x => x.webId === address.webId);\r\n if (index < 0) return false;\r\n\r\n if (!address.webId) {\r\n loggingService.error('MyAccountStore.RemoveAddress: webId is null for ' + JSON.stringify(address));\r\n return;\r\n }\r\n\r\n try {\r\n await Api.delivery.deleteDeliveryAddress(address.webId, deleteApiKey);\r\n this.state.addresses.splice(index, 1);\r\n this.state.addresses.sort(this.orderAddress);\r\n return true;\r\n } catch (e) {\r\n loggingService.error(e);\r\n return false;\r\n }\r\n }\r\n\r\n public get allowedCountryCodes(): string[] {\r\n return this.state.allowedCountryCodes;\r\n }\r\n\r\n private orderAddress(a: DeliveryAddressViewObject, b: DeliveryAddressViewObject): number {\r\n // Always default first, if present, then alphabetic on company\r\n if (a.isDefault) return -1;\r\n if (b.isDefault) return 1;\r\n return ('' + a.companyName).localeCompare(b.companyName);\r\n }\r\n\r\n public async fetchLedger(request: LedgerRequest) {\r\n this.state.isServiceAvailable = true;\r\n if (this.state.legerPageSize > 0 && !request.pageSize) {\r\n request.pageSize = this.state.legerPageSize;\r\n }\r\n\r\n try {\r\n const result = await Api.account.ledger(request);\r\n this.state.ledgerOrders = result.orderInformation;\r\n this.state.ledgerDocumentTypes = result.documentTypes;\r\n this.state.isServiceAvailable = result.isServiceAvailable;\r\n this.state.legerTotalHits = result.totalHits;\r\n this.state.legerPage = result.page;\r\n this.state.legerPageSize = result.pageSize;\r\n if (request.page && urlHelperService.getPage() !== request.page) {\r\n urlHelperService.setPage(request.page);\r\n }\r\n } catch (e) {\r\n loggingService.error(e);\r\n }\r\n }\r\n\r\n public getLedgerOrders(): readonly AccountLedgerViewObject[] {\r\n return this.state.ledgerOrders ?? [];\r\n }\r\n\r\n public getLedgerDocumentTypes(): readonly LedgerDocumentType[] {\r\n return this.state.ledgerDocumentTypes ?? [];\r\n }\r\n\r\n public getLedgerPageSize(): number {\r\n return this.state.legerPageSize ?? 0;\r\n }\r\n\r\n public getLedgerPage(): number {\r\n return this.state.legerPage ?? 1;\r\n }\r\n\r\n public getLedgerTotalHits(): number {\r\n return this.state.legerTotalHits ?? 0;\r\n }\r\n\r\n public updateInvoiceArray(invoice: SendMailRequest) {\r\n const orderIndex = this.state.invoices.findIndex(order => order.documentNumber === invoice.documentNumber);\r\n\r\n if (orderIndex === -1) {\r\n this.state.invoices.push(invoice);\r\n } else {\r\n this.state.invoices.splice(orderIndex, 1);\r\n }\r\n }\r\n\r\n public async fetchRmaHistory() {\r\n const result = await Api.rma.getRmaHistory();\r\n this.state.rmaHistory = result.rmaHeaders;\r\n }\r\n\r\n public get rmaHistory() {\r\n return this.state.rmaHistory;\r\n }\r\n\r\n public setServiceAvailableStatus(status: boolean) {\r\n this.state.isServiceAvailable = status;\r\n }\r\n\r\n public async fetchAllFavouriteLists() {\r\n try {\r\n this.state.favouriteLists = await Api.favorites.getAllLists();\r\n } catch (error) {\r\n loggingService.error(error);\r\n }\r\n }\r\n\r\n public get favouriteLists() {\r\n return this.state.favouriteLists;\r\n }\r\n\r\n public get allFavouriteLists() {\r\n const lists = [\r\n ...this.state.favouriteLists?.private ?? [],\r\n ...this.state.favouriteLists?.myShared ?? [],\r\n ...this.state.favouriteLists?.sharedWithMe ?? []\r\n ];\r\n\r\n return lists.length ? lists : [this.defaultList];\r\n }\r\n\r\n public get editAbleFavoriteLists() {\r\n if (!this.state.favouriteLists) return [];\r\n\r\n const editAbleLists =\r\n ([\r\n ...this.state.favouriteLists.myShared,\r\n ...this.state.favouriteLists.sharedWithMe])\r\n .filter(x => x.permission === FavoriteListPermission.Edit);\r\n\r\n return [...this.state.favouriteLists.private, ...editAbleLists];\r\n }\r\n\r\n public async deleteFavouriteList(id: number) {\r\n try {\r\n this.state.favouriteLists = await Api.favorites.delete(id);\r\n return true;\r\n } catch (error) {\r\n loggingService.error(error);\r\n return false;\r\n }\r\n }\r\n\r\n public async removeFromSharedFavouriteList(id: number) {\r\n try {\r\n this.state.favouriteLists = await Api.favorites.removeFromSharedList(id);\r\n return true;\r\n } catch (error) {\r\n loggingService.error(error);\r\n return false;\r\n }\r\n }\r\n\r\n public async addFavoriteItem(request: AddOrUpdateFavoriteItemListRequest) {\r\n const list = this.allFavouriteLists.find(x => x.id === request.listId);\r\n if (!list) return;\r\n\r\n try {\r\n await Api.favorites.addOrUpdateItem(request);\r\n list.itemsCount += request.items.length;\r\n } catch (error) {\r\n loggingService.error(error);\r\n }\r\n\r\n GTMBasics.pushToDataLayer({\r\n event: 'button.click',\r\n buttonTarget: 'addToFavourites'\r\n });\r\n }\r\n\r\n public async removeFavoriteItems(request: RemoveItemsFromFavoriteListRequest) {\r\n const list = this.allFavouriteLists.find(x => x.id === request.listId);\r\n if (!list) return;\r\n\r\n try {\r\n await Api.favorites.removeItems(request);\r\n Math.max(0, list.itemsCount -= request.itemIds.length);\r\n } catch (error) {\r\n loggingService.error(error);\r\n }\r\n\r\n GTMBasics.pushToDataLayer({\r\n event: 'button.click',\r\n buttonTarget: 'removeFromFavourites'\r\n });\r\n }\r\n\r\n public async createFavouriteList(request: CreateFavoriteListRequest) {\r\n const updatedFavouriteLists = await Api.favorites.create(request);\r\n\r\n this.state.favouriteLists = updatedFavouriteLists;\r\n\r\n return updatedFavouriteLists;\r\n }\r\n\r\n public async updateFavouriteList(request: UpdateFavoriteListRequest) {\r\n this.state.favouriteLists = await Api.favorites.update(request);\r\n }\r\n\r\n public async init() {\r\n await Promise.all([\r\n this.getAccountInformation(),\r\n this.getCustomerDetails(),\r\n this.fetchAllFavouriteLists(),\r\n this.getCustomerPermissions(),\r\n this.getCustomerNotifications()]);\r\n }\r\n\r\n public clear() {\r\n this.state.isServiceAvailable = true;\r\n this.state.account = null;\r\n this.state.customer = null;\r\n this.state.orderDetails = [];\r\n this.state.orderHeaders = new Map();\r\n this.state.orderLines = new Map();\r\n this.state.ledgerOrders = [];\r\n this.state.invoices = [];\r\n this.state.rmaHistory = [];\r\n this.state.addresses = [];\r\n this.state.allowedCountryCodes = [];\r\n this.state.favouriteLists = null;\r\n }\r\n\r\n get defaultList(): FavoriteListViewObject {\r\n return {\r\n createdBy: -1,\r\n id: -1,\r\n itemsCount: 0,\r\n name: dictionaryService.get('FavoriteList.DefaultListName'),\r\n permission: FavoriteListPermission.Edit\r\n };\r\n };\r\n}\r\n\r\nexport default new MyAccountStore();\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'plus-big': {\r\n width: 32,\r\n height: 32,\r\n viewBox: '0 0 32 32',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'support': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 32 32',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'favorite-add': {\r\n width: 39,\r\n height: 30,\r\n viewBox: '0 0 39 30',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'account-setting': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 32 32',\r\n data: ''\r\n }\r\n})\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"read-more\"},[_c(_vm.tag,{ref:\"body\",tag:\"component\",staticClass:\"read-more-body\",class:[{ expanded: _vm.showFullContent }, _vm.bodyClass],style:(_vm.getStyle),on:{\"transitionend\":function($event){return _vm.setAutoHeight()}}},[_vm._t(\"default\"),(_vm.withFade && _vm.isContentOverflowing && !_vm.showFullContent)?_vm._t(\"fade\",function(){return [_c('div',{staticClass:\"fade\"})]}):_vm._e()],2),(_vm.isContentOverflowing)?_c('button',{class:_vm.buttonClass,attrs:{\"type\":\"button\"},on:{\"click\":_vm.toggleShowFullContent}},[(!_vm.showFullContent)?_vm._t(\"expand\",function(){return [_c('span',[_vm._v(_vm._s(_vm._f(\"t\")('Generic.ReadMore')))])]}):_vm._e(),(_vm.showFullContent)?_vm._t(\"collapse\",function(){return [_c('span',[_vm._v(_vm._s(_vm._f(\"t\")('Generic.ReadLess')))])]}):_vm._e()],2):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop, Watch } from 'vue-property-decorator';\r\nimport breakpointsState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\nimport scrollService from '@/core/scroll/scroll.service';\r\n\r\n@Component\r\nexport default class ReadMore extends Vue {\r\n @Prop({ default: 0, type: Number }) minHeight!: number;\r\n @Prop({ default: 0, type: Number }) minItems!: number;\r\n\r\n /*\r\n Animation time in MS\r\n */\r\n @Prop({ default: 200, type: Number }) animationTime!: number;\r\n\r\n /*\r\n Percentage of height in px to alter the speed of animation\r\n */\r\n @Prop({ default: 0.20, type: Number }) animationTimeMod!: number;\r\n @Prop({ default: '', type: String }) buttonClass!: string;\r\n @Prop({ default: 'div', type: String }) tag!: string;\r\n @Prop({ default: '', type: String }) bodyClass!: string;\r\n @Prop({ default: false, type: Boolean }) expanded!: boolean;\r\n @Prop({ default: false, type: Boolean }) withFade!: boolean;\r\n @Prop({ default: false, type: Boolean }) useObserver!: boolean;\r\n @Prop({ default: false, type: Boolean }) scrollToElementTopOnCollapse!: boolean;\r\n\r\n private isContentOverflowing: boolean = false;\r\n private showFullContent: boolean = this.expanded;\r\n private animationDuration: number = this.animationTime;\r\n private observer: any = null;\r\n\r\n public $refs!: {\r\n body: HTMLDivElement;\r\n };\r\n\r\n private init() {\r\n this.determineMode();\r\n this.calculateAnimDuration();\r\n }\r\n\r\n mounted() {\r\n this.$nextTick(() => {\r\n this.init();\r\n\r\n if (this.useObserver) {\r\n this.observer = new MutationObserver(() => {\r\n this.init();\r\n });\r\n\r\n // Setup the observer\r\n this.observer.observe(\r\n this.$refs.body,\r\n { childList: true, subtree: true }\r\n );\r\n }\r\n });\r\n }\r\n\r\n beforeDestroy() {\r\n if (this.observer) {\r\n this.observer.disconnect();\r\n this.observer = null;\r\n }\r\n }\r\n\r\n private setAutoHeight(force?: boolean) {\r\n if (this.showFullContent || force) {\r\n this.$refs.body.style.height = 'auto';\r\n }\r\n };\r\n\r\n private determineMode(): void {\r\n const minHeight = this.calculateMinHeight();\r\n\r\n // Only show \"show more\" if needed. Hide gradient if not relevant.\r\n this.isContentOverflowing = this.$refs.body.scrollHeight > minHeight;\r\n if (this.isContentOverflowing) {\r\n // the height of body is larger than \"min height\", so \"read more\" feature makes sense.\r\n this.showFullContent = false;\r\n }\r\n\r\n if (this.showFullContent) {\r\n const expandedHeight = this.$refs.body.scrollHeight;\r\n this.$refs.body.style.height = expandedHeight + 'px';\r\n } else if (this.isContentOverflowing) {\r\n this.$refs.body.style.height = minHeight + 'px';\r\n } else {\r\n this.setAutoHeight(true);\r\n }\r\n }\r\n\r\n private calculateAnimDuration() {\r\n if (this.isContentOverflowing) {\r\n const animationTime = this.animationTime + (this.calculateMinHeight(true) * this.animationTimeMod);\r\n this.animationDuration = animationTime;\r\n }\r\n }\r\n\r\n private get getStyle() {\r\n return {\r\n 'transition-duration': `${this.animationDuration}ms`\r\n };\r\n }\r\n\r\n private calculateMinHeight(forced = false): number {\r\n if (this.minItems || forced) {\r\n const items = this.$slots.default;\r\n if (items && items.length > this.minItems) {\r\n let totalHeight = 0;\r\n\r\n for (let i = 0; i < this.minItems; ++i) {\r\n if (!forced && i >= this.minItems) break;\r\n\r\n totalHeight += (items[i].elm as HTMLElement).scrollHeight;\r\n }\r\n\r\n return totalHeight;\r\n } else { // Do not show overflow if there is fewer items than allowed to show\r\n return Number.MAX_VALUE;\r\n }\r\n }\r\n return this.minHeight;\r\n }\r\n\r\n private toggleShowFullContent(state?: boolean): void {\r\n this.showFullContent = typeof state === 'boolean' ? state : !this.showFullContent;\r\n\r\n const expandedHeight = this.$refs.body.scrollHeight;\r\n this.$refs.body.style.height = expandedHeight + 'px';\r\n\r\n // Set a timeout to allow the browser to calculate the transition\r\n if (!this.showFullContent) {\r\n setTimeout(() => {\r\n this.$refs.body.style.height = this.calculateMinHeight() + 'px';\r\n }, 0);\r\n if (this.scrollToElementTopOnCollapse) {\r\n scrollService.scrollToElement(this.$el as HTMLElement, -50, this.animationDuration / 2);\r\n }\r\n }\r\n }\r\n\r\n public open() {\r\n this.toggleShowFullContent(true);\r\n }\r\n\r\n public close() {\r\n this.toggleShowFullContent(false);\r\n }\r\n\r\n private get activeBreakpoint() {\r\n return breakpointsState.activeBreakpoint;\r\n }\r\n\r\n @Watch('activeBreakpoint')\r\n onBreakpointChange(activeBp: string) {\r\n this.determineMode();\r\n this.calculateAnimDuration();\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReadMore.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReadMore.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ReadMore.vue?vue&type=template&id=b3e6e43a&\"\nimport script from \"./ReadMore.vue?vue&type=script&lang=ts&\"\nexport * from \"./ReadMore.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ReadMore.vue?vue&type=style&index=0&lang=less&\"\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","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'notification': {\r\n width: 31,\r\n height: 30,\r\n viewBox: '0 0 31 30',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nexport interface MoneyViewObject {\r\n cultureFormatted?: string;\r\n currency: string;\r\n invariantCultureFormatted?: string;\r\n}\r\nexport interface MaintenanceViewModel {\r\n maintenanceIsActive: boolean;\r\n}\r\nexport interface TypescriptViewModel {\r\n feature: Feature;\r\n siteName: SiteName;\r\n}\r\nexport interface IErpResponseViewModel {\r\n isServiceAvailable: boolean;\r\n}\r\nexport interface CompanySearchViewModel {\r\n companySearchResults: CompanySearchViewObject[];\r\n}\r\nexport interface CompanySearchViewObject {\r\n city: string;\r\n companyName: string;\r\n country: string;\r\n cvr: string;\r\n duns: string;\r\n phone: string;\r\n postalCode: string;\r\n street: string;\r\n website: string;\r\n}\r\nexport interface PaginatedViewModel {\r\n page: number;\r\n pageSize: number;\r\n totalHits: number;\r\n}\r\nexport enum AllUsersColumn {\r\n UserGroup = 0,\r\n Name = 1,\r\n Email = 2,\r\n JobTitle = 3,\r\n LastLogin = 4\r\n}\r\nexport interface AllUsersRequest {\r\n page?: number;\r\n pageSize?: number;\r\n searchText?: string;\r\n sortColumn?: AllUsersColumn;\r\n sortOrder?: ListSortDirection;\r\n}\r\nexport interface SalesRepViewModel {\r\n isServiceAvailable: boolean;\r\n salesRep?: SalesRepViewObject;\r\n}\r\nexport interface SalesRepViewObject {\r\n directPhoneNo?: string;\r\n email?: string;\r\n initials: string;\r\n mobilePhoneNo?: string;\r\n name?: string;\r\n phoneNo?: string;\r\n picture?: string;\r\n title?: string;\r\n}\r\nexport interface UsersViewModel extends PaginatedViewModel {\r\n inactiveUsers: number;\r\n users: UserViewObject[];\r\n}\r\nexport interface UserViewModel {\r\n userViewObject: UserViewObject;\r\n}\r\nexport interface UserViewObject {\r\n companyName?: string;\r\n customerNo: string;\r\n departmentCode?: string;\r\n directPhoneNo?: string;\r\n email: string;\r\n id: number;\r\n includeInCampaigns: boolean;\r\n isInactive: boolean;\r\n jobTitle?: string;\r\n lastLogin?: string;\r\n lastLoginLabel?: string;\r\n marketName: string;\r\n mobilePhoneNo?: string;\r\n name: string;\r\n userGroup: string;\r\n userId: string;\r\n}\r\nexport interface CrudUserRequest {\r\n directPhoneNo?: string;\r\n email: string;\r\n includeInCampaigns: boolean;\r\n jobTitle?: string;\r\n mobilePhoneNo?: string;\r\n name: string;\r\n userGroup: string;\r\n userId: string;\r\n}\r\nexport interface RequestServiceRequest {\r\n details: string;\r\n integrationType: string;\r\n type: RequestServiceType;\r\n}\r\nexport interface TranslationResultViewModel {\r\n translatedData?: string;\r\n}\r\nexport enum DurationTypeViewObject {\r\n Day = 0,\r\n Days = 1,\r\n Week = 2,\r\n Weeks = 3,\r\n Month = 4,\r\n Months = 5\r\n}\r\nexport interface StockInformationViewModel {\r\n isServiceAvailable: boolean;\r\n stockByItemId: StockViewObject[];\r\n}\r\nexport interface StockInformationViewObject {\r\n hasStock: boolean;\r\n locationType: StockLocationTypeViewObject;\r\n stockInformationText: string;\r\n}\r\nexport interface StockViewObject {\r\n itemId: string;\r\n simpleStockInformation: StockInformationViewObject[];\r\n stockInformation: StockInformationViewObject[];\r\n}\r\nexport interface SwitchSiteRequest {\r\n siteId: number;\r\n}\r\nexport interface CountryOptionsViewModel {\r\n countries: CountryOptionViewObject[];\r\n}\r\nexport interface CountryOptionViewObject {\r\n countryCode: string;\r\n id: number;\r\n sites: SiteViewObject[];\r\n}\r\nexport interface CountryPickerOptionsViewModel {\r\n options: CountryPickerOptionViewObject[];\r\n}\r\nexport interface CountryPickerOptionViewObject {\r\n countryCode: string;\r\n}\r\nexport interface DefaultSiteViewModel {\r\n countryCode: string;\r\n culture: string;\r\n erpBusinessEntityId: number;\r\n languageCode: string;\r\n siteId: number;\r\n url: string;\r\n}\r\nexport interface SiteViewObject {\r\n countryCode: string;\r\n languageCode: string;\r\n siteId: number;\r\n url: string;\r\n}\r\nexport interface SwitchSiteResponseViewModel {\r\n countryCode: string;\r\n culture: string;\r\n erpBusinessEntityId: number;\r\n languageCode: string;\r\n marketId: number;\r\n siteId: number;\r\n token?: string;\r\n url: string;\r\n}\r\nexport interface AddressRequestObject {\r\n city: string;\r\n code?: string;\r\n companyName: string;\r\n contact?: string;\r\n countryCode: string;\r\n email: string;\r\n isDefault: boolean;\r\n isEditable: boolean;\r\n phone?: string;\r\n postalCode?: string;\r\n region?: string;\r\n street: string;\r\n street2?: string;\r\n webId?: string;\r\n}\r\nexport interface AddressViewObject {\r\n city: string;\r\n code?: string;\r\n companyName: string;\r\n contact?: string;\r\n countryCode: string;\r\n email?: string;\r\n phone?: string;\r\n postalCode?: string;\r\n region?: string;\r\n street: string;\r\n street2?: string;\r\n}\r\nexport enum SelectionTypeViewObject {\r\n MultiSelect = 1,\r\n Toggle = 2,\r\n SingleSelect = 3\r\n}\r\nexport interface FacetsViewModel {\r\n facets: FacetViewObject[];\r\n filters?: FacetViewObject;\r\n sorting?: FacetViewObject;\r\n}\r\nexport interface FacetValueViewObject {\r\n displayLabel: string;\r\n displayName: string;\r\n isFacet: boolean;\r\n key: string;\r\n productCount: number;\r\n selected: boolean;\r\n}\r\nexport interface FacetViewObject {\r\n enabled: boolean;\r\n facetDisplayLabel?: string;\r\n facetDisplayName: string;\r\n facetId: string;\r\n highlight: boolean;\r\n isFacet: boolean;\r\n isRangeCompatible: boolean;\r\n position: number;\r\n rangeFrom: number | undefined;\r\n rangeTo: number | undefined;\r\n selectionType: SelectionTypeViewObject;\r\n unitClarification?: string;\r\n values: FacetValueViewObject[];\r\n}\r\nexport interface ProductFlatViewObject {\r\n brand: string;\r\n categoryId?: string;\r\n description?: string;\r\n displayName?: string;\r\n image?: ImageViewObject;\r\n inStock: number;\r\n itemId: string;\r\n mpn?: string;\r\n name?: string;\r\n url: string;\r\n wid: string;\r\n}\r\nexport interface ProductIdsViewModel {\r\n products: ProductIdsViewObject[];\r\n}\r\nexport interface ProductIdsViewObject {\r\n id: string;\r\n mpn?: string;\r\n}\r\nexport interface ProductTileViewModel {\r\n products: ProductTileViewObject[];\r\n}\r\nexport interface ProductTileViewObject {\r\n accessories: ProductRelationViewObject[];\r\n alternatives: ProductRelationViewObject[];\r\n bid?: BidViewObject;\r\n blocking: number | undefined;\r\n brand: string;\r\n campaigns: CampaignViewObject[];\r\n categoryId?: string;\r\n conditionCode: ProductConditionCode | undefined;\r\n description?: string;\r\n designedFor?: string;\r\n displayName?: string;\r\n hasAccessories: boolean;\r\n hasExactAlternatives: boolean;\r\n hasSimilarAlternatives: boolean;\r\n image?: ImageViewObject;\r\n isNew: boolean;\r\n itemId: string;\r\n mpn?: string;\r\n name?: string;\r\n productId: string;\r\n productTypeCode?: string;\r\n salesIndex: number | undefined;\r\n score: number | undefined;\r\n subLine?: string;\r\n url: string;\r\n wid: string;\r\n}\r\nexport interface SearchProductFlatViewModel {\r\n dubletsFound: boolean;\r\n product: ProductFlatViewObject;\r\n}\r\nexport interface SearchTranslationViewObject {\r\n hits: number;\r\n translation: string;\r\n}\r\nexport interface SearchViewModel {\r\n brandName?: string;\r\n changedTerm?: string;\r\n explanation?: string;\r\n hasItemSelectionCode: boolean;\r\n hitsShowing: number;\r\n page: number;\r\n products: ProductTileViewObject[];\r\n showPriceSort: boolean;\r\n suggestions: SuggestionViewObject[];\r\n totalHits: number;\r\n translation?: SearchTranslationViewObject;\r\n}\r\nexport interface SuggestionViewObject {\r\n suggestion: string;\r\n}\r\nexport interface AssetViewObject {\r\n extension: string;\r\n isOriginIceCat: boolean;\r\n name?: string;\r\n sortOrder: number | undefined;\r\n uri: string;\r\n}\r\nexport interface BrandLogoViewModel {\r\n brandLogoUrl: string;\r\n brandLogoUrl125px: string;\r\n brandLogoUrl250px: string;\r\n}\r\nexport interface CampaignViewObject {\r\n campaignCode: string;\r\n campaignIconUrl?: string;\r\n description: string;\r\n showCampaignIcon: boolean;\r\n}\r\nexport interface CategoryFallbackViewObject extends ImageViewObject {\r\n isDefaultFallback: boolean;\r\n}\r\nexport interface CategoryTreeViewModel {\r\n breadcrumb: MenuItem[];\r\n menuItems: MenuItem[];\r\n rootMenu?: MenuItem;\r\n selectedMenu?: MenuItem;\r\n}\r\nexport interface CompabilityViewObject {\r\n modelDisplayName: string;\r\n systemDisplayName: string;\r\n}\r\nexport interface DocumentViewObject extends AssetViewObject {\r\n description?: string;\r\n languages: string[];\r\n thumbnailUrl?: string;\r\n uri: string;\r\n}\r\nexport interface FrequentlyAskedQuestionViewObject {\r\n answer: string;\r\n question: string;\r\n}\r\nexport interface ImageViewObject extends AssetViewObject {\r\n uri: string;\r\n}\r\nexport interface ProductAttributeViewObject {\r\n displayName: string;\r\n unit?: string;\r\n url?: string;\r\n value?: string;\r\n values?: string[];\r\n}\r\nexport interface ProductBidsViewModel {\r\n bids: ProductBidViewObject[];\r\n}\r\nexport interface ProductBidViewObject {\r\n productBids: ProductTileViewObject[];\r\n productWid: string;\r\n}\r\nexport interface ProductDetailsViewModel {\r\n accessories: ProductRelationViewObject[];\r\n alternatives: ProductRelationViewObject[];\r\n alternativeUrls: AlternativeUrlViewObject[];\r\n bids: ProductTileViewObject[];\r\n blocking: number | undefined;\r\n brand?: string;\r\n brandLogos?: BrandLogoViewModel;\r\n breadCrumb: LinkItem[];\r\n bulletPoints?: string[];\r\n campaigns: CampaignViewObject[];\r\n canonical: string;\r\n categoryFallbackImage?: ImageViewObject;\r\n categoryFallbackImageMap: KeyValuePair[];\r\n categoryId?: string;\r\n conditionCode: ProductConditionCode | undefined;\r\n designedFor?: string;\r\n displayName: string;\r\n documents: DocumentViewObject[];\r\n ean?: string;\r\n frequentlyAskedQuestions: FrequentlyAskedQuestionViewObject[];\r\n hasAccessories: boolean;\r\n hasExactAlternatives: boolean;\r\n hasSimilarAlternatives: boolean;\r\n images: ImageViewObject[];\r\n isNew: boolean;\r\n itemId: string;\r\n longDescription?: string;\r\n longSummaryDescription?: string;\r\n mpn?: string;\r\n oem?: string;\r\n pph?: string;\r\n productGroup?: string;\r\n productSeries?: string;\r\n reasonsToBuy: ReasonToBuyViewObject[];\r\n shortDescription?: string;\r\n specifications: SpecificationViewObject[];\r\n subLine?: string;\r\n videoes: VideoViewObject[];\r\n wid: string;\r\n}\r\nexport interface ProductRelationViewObject {\r\n productId: string;\r\n relationType: string;\r\n}\r\nexport interface ProductSeriesFacetValueViewObject {\r\n displayValue: string;\r\n isActive: boolean;\r\n isLimited: boolean;\r\n isSelected: boolean;\r\n itemId: string;\r\n productUrl: string;\r\n wid: string;\r\n}\r\nexport interface ProductSeriesFacetViewObject {\r\n facetDisplayName: string;\r\n facetId: string;\r\n values: ProductSeriesFacetValueViewObject[];\r\n}\r\nexport interface ProductSeriesProductViewObject {\r\n displayName: string;\r\n facetValues: KeyValuePair[];\r\n isLimited: boolean;\r\n itemId: string;\r\n productUrl: string;\r\n wid: string;\r\n}\r\nexport interface ProductSeriesViewObject {\r\n productSeriesProducts: ProductSeriesProductViewObject[];\r\n values: ProductSeriesFacetViewObject[];\r\n}\r\nexport interface ReasonToBuyViewObject {\r\n bodyText: string;\r\n imageUrl?: string;\r\n sortOrder: number | undefined;\r\n title: string;\r\n}\r\nexport interface ReferencedProductsViewModel {\r\n categoryFacet: FacetViewObject;\r\n from: number;\r\n hasMorePages: boolean;\r\n products: ProductTileViewObject[];\r\n size: number;\r\n totalProducts: number;\r\n}\r\nexport interface RelatedModelsGroupViewObject {\r\n brandId: number;\r\n brandName: string;\r\n relatedModels: RelatedModelsViewObject[];\r\n}\r\nexport interface RelatedModelsViewModel {\r\n isServiceAvailable: boolean;\r\n relatedModelGroups: RelatedModelsGroupViewObject[];\r\n}\r\nexport interface RelatedModelsViewObject {\r\n brandSeries: string;\r\n overflow: boolean;\r\n relations: RelationViewObject[];\r\n}\r\nexport interface RelationViewObject {\r\n fullModelName: string;\r\n modelId: string;\r\n modelName: string;\r\n}\r\nexport interface SpecificationViewObject {\r\n displayName: string;\r\n features: ProductAttributeViewObject[];\r\n}\r\nexport interface VideoViewObject extends AssetViewObject {\r\n uri: string;\r\n}\r\nexport interface BidsViewModel {\r\n bids: BidViewObject[];\r\n facets: FacetViewObject[];\r\n}\r\nexport interface BidViewObject {\r\n bidNo: string;\r\n brand?: string;\r\n customerId: string;\r\n description?: string;\r\n displayName: string;\r\n endDate?: string;\r\n id: number;\r\n image?: ImageViewObject;\r\n itemId: string;\r\n minOrderQty: number;\r\n mpn?: string;\r\n name: string;\r\n price?: MoneyViewObject;\r\n quantity: number;\r\n remQty: number;\r\n shortProductDescription?: string;\r\n url: string;\r\n usedQty: number;\r\n webCategory?: string;\r\n wid: string;\r\n}\r\nexport interface DiscountViewObject {\r\n amount?: MoneyViewObject;\r\n quantity: number;\r\n}\r\nexport interface DutyViewObject {\r\n dutyCode: string;\r\n dutyDescription: string;\r\n price: MoneyViewObject;\r\n vatAmount: MoneyViewObject;\r\n vatPercent: string;\r\n}\r\nexport interface PriceDetailedViewModel {\r\n isServiceAvailable: boolean;\r\n prices: PriceDetailedViewObject[];\r\n}\r\nexport interface PriceDetailedViewObject {\r\n currencyCode?: string;\r\n discounts?: DiscountViewObject[];\r\n duties?: DutyViewObject[];\r\n itemId: string;\r\n previousPrice: MoneyViewObject;\r\n price: MoneyViewObject;\r\n suggestedRetailPrice: MoneyViewObject;\r\n vatAmount: MoneyViewObject;\r\n vatPercent: string;\r\n}\r\nexport interface PriceSimpleViewModel {\r\n isServiceAvailable: boolean;\r\n prices: PriceSimpleViewObject[];\r\n}\r\nexport interface PriceSimpleViewObject {\r\n amount: MoneyViewObject;\r\n hasQuantityDiscounts: boolean;\r\n itemId: string;\r\n previousPrice: MoneyViewObject;\r\n suggestedRetailPrice: MoneyViewObject;\r\n}\r\nexport interface SearchRequest {\r\n allowedBrands?: string[];\r\n brandName?: string;\r\n cableEndTypeA?: string;\r\n cableEndTypeB?: string;\r\n cableType?: string;\r\n campaignCode?: string;\r\n categoryId?: string;\r\n categoryIds?: string[];\r\n explain: boolean | undefined;\r\n filter: SearchFilters | undefined;\r\n isExternalProductGuide?: boolean | undefined;\r\n lastFacet?: string;\r\n page: number | undefined;\r\n pageSize: number | undefined;\r\n priceSort: SearchPriceSort | undefined;\r\n showInStockFilter?: boolean | undefined;\r\n showScore: boolean | undefined;\r\n term?: string;\r\n useFlattenedCategoryTree: boolean | undefined;\r\n wIds: string[];\r\n}\r\nexport enum SearchFilters {\r\n None = 0,\r\n InStock = 1,\r\n New = 2,\r\n Refurbished = 4,\r\n CampaignClearance = 8,\r\n CampaignsExceptClearance = 16,\r\n All = 31\r\n}\r\nexport enum SearchPriceSort {\r\n None = 0,\r\n Ascending = 1,\r\n Descending = 2\r\n}\r\nexport interface SelectedFacet {\r\n key: string;\r\n negate: boolean;\r\n position: number;\r\n rangeFrom: number | undefined;\r\n rangeTo: number | undefined;\r\n values: string[];\r\n}\r\nexport interface RmaHeaderViewModel {\r\n rmaHeaders: RmaHeaderViewObject[];\r\n}\r\nexport interface RmaHeaderViewObject {\r\n date: string;\r\n dispatchInfo?: string;\r\n documentNo?: string;\r\n itemId: string;\r\n itemUrl?: string;\r\n mpnNumber?: string;\r\n orderStatus: RmaHeaderOrderStatus;\r\n quantity: number;\r\n receivedQty: number;\r\n referenceNo?: string;\r\n referenceNoLine?: string;\r\n trackingLink?: RmaHeaderTrackingLink;\r\n type: RmaType;\r\n}\r\nexport interface RmaInfoViewModel {\r\n items: RmaSearchResultViewObject[];\r\n productExists: boolean;\r\n rmaInvoices: RmaInvoiceViewObject[];\r\n rmaItemRequestFields: RmaQuestionViewObject[];\r\n}\r\nexport interface RmaProfileViewModel {\r\n invoiceAddress: AddressViewObject;\r\n rmaProfile: RmaProfileViewObject;\r\n}\r\nexport interface RmaProfileViewObject {\r\n rmaRequestItems: RmaRequestItem[];\r\n shippingAddress?: RmaShippingAddressResource;\r\n}\r\nexport interface RmaHeaderTrackingLink {\r\n itemId: string;\r\n shippedQty: number;\r\n shippingAgent: string;\r\n trackingLink: string;\r\n trackingNo: string;\r\n}\r\nexport interface RmaInvoiceViewObject {\r\n invoiceId: string;\r\n postingDate: string;\r\n quantity: number;\r\n referenceNo: string;\r\n}\r\nexport interface RmaQuestionViewObject {\r\n handle: boolean;\r\n mandatory: boolean | undefined;\r\n question: string;\r\n questionCode?: string;\r\n serialNo: boolean | undefined;\r\n}\r\nexport interface RmaSearchResultViewObject {\r\n displayName: string;\r\n itemId: string;\r\n mpnNumber?: string;\r\n}\r\nexport interface RmaRequestItem {\r\n invoiceId?: string;\r\n itemId: string;\r\n maxQuantity: number;\r\n quantity: number;\r\n referenceNo: string;\r\n rmaRequestItemQuestions: RmaRequestItemQuestion[];\r\n type: RmaType;\r\n}\r\nexport interface RmaShippingAddressResource {\r\n city: string;\r\n companyName: string;\r\n contact?: string;\r\n countryCode: string;\r\n email: string;\r\n isDefault: boolean;\r\n isEditable: boolean;\r\n phone: string;\r\n postalCode: string;\r\n reference?: string;\r\n region?: string;\r\n street: string;\r\n webId?: string;\r\n}\r\nexport interface RmaRequestItemQuestion {\r\n answer: string;\r\n handle: boolean;\r\n mandatory: boolean;\r\n question: string;\r\n questionCode: string;\r\n serialNo: boolean;\r\n}\r\nexport interface AddOrUpdateRmaRequest {\r\n rmaRequestItems: RmaRequestItem[];\r\n shippingAddress?: RmaShippingAddressResource;\r\n}\r\nexport interface RmaRequestItem {\r\n invoiceId?: string;\r\n itemId: string;\r\n maxQuantity: number;\r\n quantity: number;\r\n referenceNo: string;\r\n rmaRequestItemQuestions: RmaRequestItemQuestion[];\r\n type: RmaType;\r\n}\r\nexport interface RmaShippingAddressResource {\r\n city: string;\r\n companyName: string;\r\n contact?: string;\r\n countryCode: string;\r\n email: string;\r\n isDefault: boolean;\r\n isEditable: boolean;\r\n phone: string;\r\n postalCode: string;\r\n reference?: string;\r\n region?: string;\r\n street: string;\r\n webId?: string;\r\n}\r\nexport interface RmaRequestItemQuestion {\r\n answer: string;\r\n handle: boolean;\r\n mandatory: boolean;\r\n question: string;\r\n questionCode: string;\r\n serialNo: boolean;\r\n}\r\nexport enum PopularityType {\r\n Purchased = 1,\r\n Viewed = 2\r\n}\r\nexport enum ProductRecommendationType {\r\n RecentlyViewedProducts = 1,\r\n PurchasedWithBasket = 2,\r\n PopularProducts = 3,\r\n PurchasedWithProduct = 4,\r\n ViewedAfterViewingProduct = 5\r\n}\r\nexport interface RecommendationsBrandsRequest {\r\n brandCount: number;\r\n categoryIdFilterNegativeList: string[];\r\n categoryIdFilterPositiveList: string[];\r\n displayedAtLocation: string;\r\n periodDays: number;\r\n popularityType: PopularityType;\r\n}\r\nexport interface RecommendationsBySearchTermRequest {\r\n allowFillIfNecessary: boolean;\r\n brandId?: string;\r\n categoryId: string;\r\n categoryIdFilterNegativeList: string[];\r\n categoryIdFilterPositiveList: string[];\r\n displayedAtLocation: string;\r\n hasImages: boolean;\r\n productCount: number;\r\n searchTerm: string;\r\n showFeedProducts: boolean;\r\n stockFilter: ProductRecommendationStockFilterType;\r\n}\r\nexport interface RecommendationsCategoriesRequest {\r\n brandIdFilterList: string[];\r\n categoryCount: number;\r\n categoryIdFilterNegativeList: string[];\r\n categoryIdFilterPositiveList: string[];\r\n displayedAtLocation: string;\r\n periodDays: number;\r\n popularityType: PopularityType;\r\n}\r\nexport interface RecommendationsRequest {\r\n allowFillIfNecessary: boolean;\r\n brandId?: string;\r\n categoryId?: string;\r\n categoryIdFilterNegativeList: string[];\r\n categoryIdFilterPositiveList: string[];\r\n displayedAtLocation: string;\r\n hasImages: boolean;\r\n intervalDays: number;\r\n popularityType: PopularityTypes;\r\n productCount: number;\r\n productId?: string;\r\n recommendationType: ProductRecommendationType;\r\n showFeedProducts: boolean;\r\n stockFilter: ProductRecommendationStockFilterType;\r\n}\r\nexport interface RecommendedBrandsViewModel {\r\n recommendedBrands: RecommendedBrandViewObject[];\r\n}\r\nexport interface RecommendedBrandViewObject {\r\n brandLogo: ImageViewObject;\r\n brandName: string;\r\n categoryCount: number;\r\n productCount: number;\r\n}\r\nexport interface RecommendedCategoriesViewModel {\r\n recommendedCategories: RecommendedCategoryViewObject[];\r\n}\r\nexport interface RecommendedCategoryViewObject {\r\n brandCount: number;\r\n categoryId: string;\r\n displayName: string;\r\n images: ImageViewObject[];\r\n productCount: number;\r\n url: string;\r\n}\r\nexport interface LinkItem {\r\n id: string;\r\n name: string;\r\n url: string;\r\n}\r\nexport interface MenuItem {\r\n categoryIds: string[];\r\n children: MenuItem[];\r\n disabled: boolean;\r\n displayLabel?: string;\r\n displaySequence: number;\r\n highlight: boolean;\r\n id: string;\r\n name: string;\r\n parentId: string;\r\n productCount: number;\r\n selected: boolean;\r\n url: string;\r\n}\r\nexport interface KeyValuePair {\r\n key: TKey;\r\n value: TValue;\r\n}\r\nexport interface AlternativeUrlViewModel {\r\n alternativeUrls: AlternativeUrlViewObject[];\r\n}\r\nexport interface AlternativeUrlViewObject {\r\n language: string;\r\n url: string;\r\n}\r\nexport interface ProductIssueReportRequest {\r\n brandName: string;\r\n description: string;\r\n issueCategory: string;\r\n itemId: string;\r\n mpn: string;\r\n productName: string;\r\n productUrl: string;\r\n wid: string;\r\n}\r\nexport interface ReferencedProductsRequest {\r\n categoryIds: string[];\r\n from: number;\r\n productWid: string;\r\n size: number;\r\n}\r\nexport interface CreateProductGuideOwnershipViewModel {\r\n externalId: string;\r\n}\r\nexport interface ProductGuideBrandViewModel {\r\n brands: ProductGuideBrandViewObject[];\r\n isServiceAvailable: boolean;\r\n}\r\nexport interface ProductGuideBrandViewObject {\r\n brandId: number;\r\n brandName: string;\r\n}\r\nexport interface ProductGuideConfigurationViewModel {\r\n allowedBrands: string[];\r\n externalProductLink?: string;\r\n externalProductLinkText?: string;\r\n externalStylesheet?: string;\r\n hideStock: boolean;\r\n invertTheme: boolean;\r\n language: string;\r\n showFacets: boolean;\r\n startPage: string;\r\n theme?: string;\r\n type: string;\r\n}\r\nexport interface ProductGuideItemViewModel extends SearchViewModel {\r\n categories: MenuItem[];\r\n facets?: FacetsViewModel;\r\n}\r\nexport interface ProductGuideItemViewObject {\r\n manufacturerPartNo?: string;\r\n product: ProductTileViewObject;\r\n wid: string;\r\n}\r\nexport interface ProductGuideModelViewModel {\r\n isServiceAvailable: boolean;\r\n models: ProductGuideModelViewObject[];\r\n}\r\nexport interface ProductGuideModelViewObject {\r\n modelId: string;\r\n modelName: string;\r\n}\r\nexport interface ProductGuideOwnershipViewModel {\r\n guides: ProductGuideOwnershipViewObject[];\r\n}\r\nexport interface ProductGuideOwnershipViewObject {\r\n configuration: ProductGuideConfigurationViewModel;\r\n created: string;\r\n email: string;\r\n externalId: string;\r\n fullName: string;\r\n name: string;\r\n websiteUrl: string;\r\n}\r\nexport interface ProductGuideSearchGroupViewObject {\r\n displayName: string;\r\n models: ProductGuideSearchViewObject[];\r\n}\r\nexport interface ProductGuideSearchViewModel {\r\n isServiceAvailable: boolean;\r\n models: ProductGuideSearchGroupViewObject[];\r\n}\r\nexport interface ProductGuideSearchViewObject {\r\n brandId: number;\r\n brandName: string;\r\n modelId: string;\r\n modelName: string;\r\n seriesName: string;\r\n}\r\nexport interface ProductGuideSeriesViewModel {\r\n isServiceAvailable: boolean;\r\n series: ProductGuideSeriesViewObject[];\r\n}\r\nexport interface ProductGuideSeriesViewObject {\r\n seriesName: string;\r\n}\r\nexport interface ProductGuideConfiguration {\r\n allowedBrands: string[];\r\n externalProductLink?: string;\r\n externalProductLinkText?: string;\r\n externalStylesheet?: string;\r\n hideStock: boolean;\r\n invertTheme: boolean;\r\n language: string;\r\n showFacets: boolean;\r\n startPage: string;\r\n theme: string;\r\n type: string;\r\n}\r\nexport interface ProductGuideSearchRequest extends SearchRequest {\r\n guideId: string;\r\n level1CategoryId?: string;\r\n modelId: string;\r\n}\r\nexport interface SaveExternalGuideRequest {\r\n configuration: ProductGuideConfiguration;\r\n email: string;\r\n externalId: string | undefined;\r\n fullName: string;\r\n guideName: string;\r\n websiteUrl: string;\r\n}\r\nexport interface AdContentBlocksApiRequest extends BasePersonalizedContentApiRequest {\r\n adUnitIds: string[];\r\n}\r\nexport interface BasePersonalizedContentApiRequest {\r\n brands?: string[];\r\n contactKey: string;\r\n currentUrl: string;\r\n customerKey?: string;\r\n searchTerm?: string;\r\n}\r\nexport interface BasketPageApiRequest extends BasePersonalizedContentApiRequest {\r\n categoryIds: string[];\r\n itemIds: string[];\r\n}\r\nexport interface BrandLogosApiRequest extends BasePersonalizedContentApiRequest {\r\n breakpoint: RequestBreakpoint;\r\n}\r\nexport interface PartnerLogosApiRequest extends BasePersonalizedContentApiRequest {\r\n brandName: string;\r\n condition?: string;\r\n department?: string;\r\n itemNo: string;\r\n mpnNumber: string;\r\n pph?: string;\r\n productCategory: string;\r\n productGroup?: string;\r\n}\r\nexport interface ProductListApiRequest extends BasePersonalizedContentApiRequest {\r\n brandName?: string;\r\n categoryIds: string[];\r\n itemIds: string[];\r\n listLocation: string;\r\n}\r\nexport interface RecommendedBrandsApiRequest extends BasePersonalizedContentApiRequest {\r\n}\r\nexport interface NotificationListViewModel {\r\n itemIds: string[];\r\n}\r\nexport interface CategoryNamesViewModel {\r\n names: { [key: string]: string };\r\n}\r\nexport interface CategoryNameViewModel {\r\n name?: string;\r\n}\r\nexport interface MegaMenuViewModel {\r\n menu: MenuItem[];\r\n}\r\nexport interface BeginImpersonationRequest {\r\n userId: number;\r\n}\r\nexport interface ImpersonationViewModel {\r\n siteUrl?: string;\r\n token: string;\r\n}\r\nexport interface SearchImpersonationViewModel {\r\n hasMoreResults: boolean;\r\n users: UserViewObject[];\r\n}\r\nexport interface AddOrUpdateFavoriteItemListRequest {\r\n items: FavoriteListItemRequestObject[];\r\n listId: number;\r\n}\r\nexport interface CreateFavoriteListRequest {\r\n description?: string;\r\n name: string;\r\n shareWithOrganization?: CustomerShareOptions[];\r\n shareWithUsers: UserShareOptions[];\r\n}\r\nexport interface FavoriteListItemRequestObject {\r\n itemId: string;\r\n quantity: number;\r\n}\r\nexport interface RemoveItemsFromFavoriteListRequest {\r\n itemIds: string[];\r\n listId: number;\r\n}\r\nexport interface UpdateFavoriteListRequest extends CreateFavoriteListRequest {\r\n id: number;\r\n}\r\nexport interface CustomerShareOptions extends ShareOptions {\r\n customerId: number;\r\n}\r\nexport interface ShareOptions {\r\n permission: FavoriteListPermission;\r\n}\r\nexport interface UserShareOptions extends ShareOptions {\r\n userId: number;\r\n}\r\nexport interface FavoriteListDetailsViewModel {\r\n details: FavoriteViewObject;\r\n}\r\nexport interface FavoriteListViewModel {\r\n myShared: FavoriteSharedListViewObject[];\r\n private: FavoriteListViewObject[];\r\n sharedWithMe: FavoriteSharedListViewObject[];\r\n}\r\nexport interface FavoriteListViewObject {\r\n createdBy: number;\r\n description?: string;\r\n id: number;\r\n itemsCount: number;\r\n name: string;\r\n permission: FavoriteListPermission;\r\n}\r\nexport interface FavoriteSharedListViewObject extends FavoriteListViewObject {\r\n sharedWithOrganizationCount: number;\r\n sharedWithUsersCount: number;\r\n}\r\nexport interface FavoritesItemsListedViewModel {\r\n listed: FavoritesItemsListedViewObject[];\r\n}\r\nexport interface FavoritesItemsListedViewObject {\r\n itemId: string;\r\n listIds: number[];\r\n}\r\nexport interface FavoriteViewObject {\r\n description?: string;\r\n id: number;\r\n listOwnerId: number;\r\n name: string;\r\n products: ProductTileViewObject[];\r\n sharedWith: UserShareViewObject[];\r\n sharedWithMe: boolean;\r\n shareWithOrganizations: OrganizationShareViewObject[];\r\n}\r\nexport interface OrganizationShareViewObject {\r\n companyName: string;\r\n customerId: number;\r\n permission: FavoriteListPermission;\r\n}\r\nexport interface SearchShareFavoriteViewModel {\r\n customers?: CustomerViewObject[];\r\n hasMoreResults: boolean;\r\n users?: UserViewObject[];\r\n}\r\nexport interface UserShareViewObject {\r\n permission: FavoriteListPermission;\r\n user: UserViewObject;\r\n}\r\nexport interface CustomerAddressViewObject {\r\n address1?: string;\r\n address2?: string;\r\n city: string;\r\n companyName: string;\r\n contact?: string;\r\n countryCode: string;\r\n county?: string;\r\n email: string;\r\n phone?: string;\r\n postalCode?: string;\r\n region?: string;\r\n street: string;\r\n zip?: string;\r\n}\r\nexport interface CustomerBrandTilesViewModel {\r\n brandTiles: CustomerBrandTileViewObject[];\r\n isServiceAvailable: boolean;\r\n}\r\nexport interface CustomerBrandTileViewObject {\r\n brandId: number;\r\n brandName: string;\r\n imageUrl: string;\r\n}\r\nexport interface CustomerContactViewObject {\r\n contact?: string;\r\n email?: string;\r\n phone?: string;\r\n}\r\nexport interface CustomerPaymentMethodViewObject {\r\n code?: string;\r\n description?: string;\r\n feePct: number | undefined;\r\n fixedFee: number | undefined;\r\n isDefault: boolean;\r\n maxFeeAmount: number | undefined;\r\n minFeeAmount: number | undefined;\r\n restrictForCurrency?: string;\r\n restrictForDepartment?: string;\r\n terminal?: string;\r\n}\r\nexport interface CustomerShippingViewObject {\r\n isPartDeliveryAllowed: boolean;\r\n isPartDeliveryDefault: boolean;\r\n shipmentEmail?: string;\r\n shipmentMethod?: string;\r\n}\r\nexport interface CustomerViewModel {\r\n customer: CustomerViewObject;\r\n isServiceAvailable: boolean;\r\n}\r\nexport interface CustomerViewObject {\r\n activeDirectDebit: boolean;\r\n activePriceFiles: boolean;\r\n activeXmlEdiIntegrations: boolean;\r\n addressInformation: CustomerAddressViewObject;\r\n billToCustomer?: string;\r\n blocking: CustomerBlockingType;\r\n contactInformation: CustomerContactViewObject;\r\n customerNo: string;\r\n description?: string;\r\n dpaSignedCustom: Date | undefined;\r\n dpaSignedOnWeb: Date | undefined;\r\n id: number;\r\n invoiceEmail?: string;\r\n lineReferenceRequired: boolean;\r\n name?: string;\r\n orderEmail?: string;\r\n priceInclVat: boolean;\r\n referenceNoRequired: boolean;\r\n shippingDetails: CustomerShippingViewObject;\r\n}\r\nexport interface ShipToCountriesViewModel {\r\n countries: string[];\r\n isServiceAvailable: boolean;\r\n}\r\nexport interface EmployeeViewModel {\r\n employees: EmployeeViewObject[];\r\n}\r\nexport interface EmployeeViewObject {\r\n directPhone: string;\r\n displayName: string;\r\n email: string;\r\n id: string;\r\n initials: string;\r\n mobilePhone?: string;\r\n photoUrl?: string;\r\n title: string;\r\n}\r\nexport interface AddOrUpdateDeliveryAddressRequest {\r\n city: string;\r\n code?: string;\r\n companyName: string;\r\n contact: string;\r\n countryCode: string;\r\n email: string;\r\n isDefault: boolean;\r\n isFavorite: boolean;\r\n phone: string;\r\n postalCode: string;\r\n region?: string;\r\n street: string;\r\n street2?: string;\r\n webId?: string;\r\n}\r\nexport interface DeleteDeliveryAddressRequest {\r\n webId: string;\r\n}\r\nexport interface DeliveryPriceViewModel {\r\n isServiceAvailable: boolean;\r\n price: MoneyViewObject;\r\n shippingMethodCode?: string;\r\n vat: MoneyViewObject;\r\n}\r\nexport interface DepartmentRequest {\r\n department?: string;\r\n}\r\nexport interface AltaPayRequest {\r\n amount: string;\r\n culture: string;\r\n currency: number;\r\n ip: string;\r\n siteName: SiteName;\r\n transactionId: number;\r\n uniqueIdentifier: string;\r\n xml: string;\r\n}\r\nexport interface CheckoutViewModel {\r\n deliveryAddresses: DeliveryAddressViewObject[];\r\n deliveryMethods: DeliveryMethodViewObject[];\r\n isErpServiceAvailable: boolean;\r\n isLineReferenceRequired: boolean;\r\n isPartDeliveryAllowed: boolean;\r\n isPartDeliveryDefault: boolean;\r\n isReferenceRequired: boolean;\r\n maxNumberOfShipments: number;\r\n paymentMethods: PaymentMethodViewObject[];\r\n shipToCountries: string[];\r\n}\r\nexport interface DeliveryAddressViewModel {\r\n deliveryAddresses: DeliveryAddressViewObject[];\r\n isServiceAvailable: boolean;\r\n}\r\nexport interface DeliveryAddressViewObject {\r\n city: string;\r\n code?: string;\r\n companyName: string;\r\n contact: string;\r\n countryCode: string;\r\n email: string;\r\n isDefault: boolean;\r\n isEditable: boolean;\r\n isFavorite: boolean;\r\n phone: string;\r\n postalCode: string;\r\n region?: string;\r\n street: string;\r\n street2?: string;\r\n webId?: string;\r\n}\r\nexport interface DeliveryMethodViewObject {\r\n description: string;\r\n shipmentEmailMandatory: boolean;\r\n shipmentPhoneMandatory: boolean;\r\n shippingMethodCode: string;\r\n}\r\nexport interface OrderViewModel {\r\n paymentUrl?: string;\r\n uniqueIdentifier: string;\r\n}\r\nexport interface PaymentMethodViewObject {\r\n description?: string;\r\n isCreditCard: boolean;\r\n paymentMethodCode: string;\r\n terminal?: string;\r\n type: PaymentMethodType;\r\n}\r\nexport interface ReceiptViewModel {\r\n additionalEmail?: string;\r\n comment?: string;\r\n customerNumber: string;\r\n deliveryAddress: AddressViewObject;\r\n deliveryMethod?: DeliveryMethodViewObject;\r\n deliveryPrice: DeliveryPriceWithLinesViewModel;\r\n email: string;\r\n invoiceAddress: AddressViewObject;\r\n lineItems: ReceiptLineItemViewObject[];\r\n name: string;\r\n orderContact?: string;\r\n paymentMethod?: PaymentMethodViewObject;\r\n quotes: ReceiptQuoteViewObject[];\r\n reference?: string;\r\n subTotal: MoneyViewObject;\r\n total: MoneyViewObject;\r\n totalExVat: MoneyViewObject;\r\n totalVat: MoneyViewObject;\r\n}\r\nexport interface SendReceiptRequest {\r\n email: string;\r\n orderId: string;\r\n}\r\nexport interface SubmitOrderRequest {\r\n creditCardName?: string;\r\n terminal?: string;\r\n}\r\nexport interface ReceiptLineItemViewObject {\r\n bidDescription?: string;\r\n bidNumber?: string;\r\n brand?: string;\r\n displayName?: string;\r\n duties?: DutyViewObject[];\r\n euEccn?: string;\r\n image?: ImageViewObject;\r\n itemId: string;\r\n mpnNumber?: string;\r\n quantity: number;\r\n quoteId?: string;\r\n reference?: string;\r\n total: MoneyViewObject;\r\n unitPrice: MoneyViewObject;\r\n url?: string;\r\n usEccn?: string;\r\n}\r\nexport interface ReceiptQuoteViewObject {\r\n deliveryAddress: AddressViewObject;\r\n invoiceAddress: AddressViewObject;\r\n lineItems: ReceiptLineItemViewObject[];\r\n partDelivery: boolean;\r\n quoteId: string;\r\n shippingAgent: string;\r\n shipToCode: string;\r\n total: MoneyViewObject;\r\n totalWithVat: MoneyViewObject;\r\n yourReference: string;\r\n}\r\nexport interface BasketQuoteViewObject {\r\n deliveryAddress: AddressViewObject;\r\n invoiceAddress: AddressViewObject;\r\n lineItems: LineItemViewObject[];\r\n partDelivery: boolean;\r\n quoteId: string;\r\n shippingAgent: string;\r\n shipToCode: string;\r\n total: MoneyViewObject;\r\n totalWithVat: MoneyViewObject;\r\n yourReference: string;\r\n}\r\nexport interface BasketViewModel {\r\n additionalEmailForDeliveryUpdates?: string;\r\n comment?: string;\r\n currencyCode?: string;\r\n deliveryAddress?: AddressViewObject;\r\n deliveryPrice?: DeliveryPriceWithLinesViewModel;\r\n informationLabels: InformationBoxViewObject[];\r\n invoiceAddress?: AddressViewObject;\r\n isPartDelivery: boolean | undefined;\r\n lineItems: LineItemViewObject[];\r\n orderContact?: string;\r\n paymentMethodCode?: string;\r\n postponeShipmentDate: Date | undefined;\r\n quotes: BasketQuoteViewObject[];\r\n reference?: string;\r\n shippingMethodCode?: string;\r\n shippingMethodLocked: boolean;\r\n subTotal: MoneyViewObject;\r\n total: MoneyViewObject;\r\n totalExVat: MoneyViewObject;\r\n totalVat: MoneyViewObject;\r\n}\r\nexport interface DeliveryPriceLineViewObject {\r\n description: string;\r\n price: MoneyViewObject;\r\n}\r\nexport interface DeliveryPriceWithLinesViewModel {\r\n deliveryPriceLines: DeliveryPriceLineViewObject[];\r\n price: MoneyViewObject;\r\n vat: MoneyViewObject;\r\n}\r\nexport interface InformationBoxViewObject {\r\n descriptionLabel: string;\r\n textToMergeInLabel?: string;\r\n titleLabel: string;\r\n}\r\nexport interface LineItemViewObject {\r\n bidDescription?: string;\r\n bidId: number | undefined;\r\n bidMaxQty: number | undefined;\r\n bidNumber?: string;\r\n brand?: string;\r\n categoryId?: string;\r\n conditionCode: ProductConditionCode | undefined;\r\n displayName: string;\r\n duties?: DutyViewObject[];\r\n image?: ImageViewObject;\r\n itemId: string;\r\n lineItemId: string;\r\n mpnNumber?: string;\r\n originalTotal?: MoneyViewObject;\r\n originalUnitPrice?: MoneyViewObject;\r\n priceChanged: boolean;\r\n quantity: number;\r\n quoteId?: string;\r\n reference?: string;\r\n supplementaryProducts: ProductTileViewObject[];\r\n total: MoneyViewObject;\r\n unitPrice: MoneyViewObject;\r\n url?: string;\r\n wid: string;\r\n}\r\nexport interface CategorySeoInformationViewModel {\r\n seoDescription: string;\r\n seoTitle: string;\r\n}\r\nexport interface CableGuideCableTypesViewModel {\r\n cableTypes: CableGuideCableTypeViewObject[];\r\n}\r\nexport interface CableGuideCableTypeViewObject {\r\n icon?: ImageViewObject;\r\n id: string;\r\n name: string;\r\n productCount: number;\r\n}\r\nexport interface BusinessEntityInformationViewModel {\r\n businessEntityInformationViewObjects: BusinessEntityInformationViewObject[];\r\n isServiceAvailable: boolean;\r\n}\r\nexport interface BusinessEntityInformationViewObject {\r\n businessEntityName?: string;\r\n companyEmail?: string;\r\n companyOpeningHours?: string;\r\n companyPhoneNo?: string;\r\n id: number;\r\n}\r\nexport interface BrandGroupViewObject {\r\n brands: BrandLogoViewObject[];\r\n name: string;\r\n}\r\nexport interface BrandLogoViewObject {\r\n brandName: string;\r\n logoUrl: string;\r\n url: string;\r\n}\r\nexport interface BrandViewModel {\r\n brandGroup: BrandGroupViewObject[];\r\n}\r\nexport interface CountryOptionsPreselectViewModel {\r\n options: CountryPickerOptionPreselectViewObject[];\r\n}\r\nexport interface CountryPickerOptionPreselectViewObject {\r\n countryCode: string;\r\n preSelected: boolean;\r\n}\r\nexport interface AddProductsToBasketRequest {\r\n items: ItemIdWithCount[];\r\n}\r\nexport interface AddQuoteToBasketRequest {\r\n quoteId: string;\r\n shippingMethodLocked: boolean;\r\n}\r\nexport interface AddToBasketRequest extends BasketRequest {\r\n lineItems: LineItem[];\r\n}\r\nexport interface BasketRequest {\r\n updateDeliveryPrice: boolean;\r\n updateLineItemPrices: boolean;\r\n}\r\nexport interface RemoveFromBasketRequest extends BasketRequest {\r\n lineItemIds: number[];\r\n}\r\nexport interface UpdateBasketRequest extends BasketRequest {\r\n additionalEmailForDeliveryUpdates?: string;\r\n comment?: string;\r\n deliveryAddress?: AddressRequestObject;\r\n deliveryPhoneNumber?: string;\r\n isPartDelivery: boolean | undefined;\r\n orderContact?: string;\r\n paymentMethodCode?: string;\r\n postponeShipmentDate: Date | undefined;\r\n reference?: string;\r\n shippingMethodCode?: string;\r\n shouldPostponeShipment: boolean | undefined;\r\n}\r\nexport interface UpdateLineItemRequest extends BasketRequest {\r\n wid: string;\r\n}\r\nexport interface ItemIdWithCount {\r\n count: number;\r\n itemId: string;\r\n}\r\nexport interface LineItem {\r\n bidId: number | undefined | null;\r\n isDuplicated: boolean;\r\n lineItemId?: string;\r\n quantity: number;\r\n quoteId?: string;\r\n reference?: string;\r\n wid: string;\r\n}\r\nexport interface ChangePasswordRequest {\r\n confirmNewPassword: string;\r\n newPassword: string;\r\n oldPassword: string;\r\n}\r\nexport interface LoginRequest {\r\n email: string;\r\n password: string;\r\n siteId: number;\r\n}\r\nexport interface LoginViewModel {\r\n contactKey?: string;\r\n countryCode: string;\r\n culture: string;\r\n customerKey?: string;\r\n erpBusinessEntityId: number;\r\n languageCode: string;\r\n marketId: number;\r\n siteId: number;\r\n token: string;\r\n url: string;\r\n}\r\nexport interface RequestResetPasswordRequest {\r\n email: string;\r\n}\r\nexport interface ResetPasswordRequest {\r\n password: string;\r\n token: string;\r\n}\r\nexport enum NotificationType {\r\n Profile = 0,\r\n OrderHistory = 1,\r\n ProductBacklog = 2,\r\n Quotes = 3,\r\n BlanketOrders = 4,\r\n Bids = 5,\r\n RmaReturns = 6,\r\n Ledger = 7,\r\n Favourites = 8,\r\n Settings = 9,\r\n AddressBook = 10,\r\n Administration = 11,\r\n Impersonation = 12\r\n}\r\nexport enum OrderStatusViewObject {\r\n Received = 0,\r\n PickingInProgress = 1,\r\n PartlyDispatched = 2,\r\n Dispatched = 3\r\n}\r\nexport interface AccountLedgerViewModel extends PaginatedViewModel {\r\n documentTypes: LedgerDocumentType[];\r\n isServiceAvailable: boolean;\r\n orderInformation: AccountLedgerViewObject[];\r\n}\r\nexport interface AccountLedgerViewObject {\r\n amount: MoneyViewObject;\r\n documentNo: string;\r\n documentType: LedgerDocumentType;\r\n dueDate: string;\r\n id: number;\r\n isDue: boolean;\r\n openingBalance: MoneyViewObject;\r\n orderId: string;\r\n postingDate: string;\r\n referenceNo: string;\r\n total: MoneyViewObject;\r\n totalEntries: MoneyViewObject;\r\n}\r\nexport interface BidsQuotesRmaViewModel {\r\n numberOfActiveBids: number;\r\n numberOfActiveQuotes: number;\r\n numberOfRmaCases: number;\r\n}\r\nexport interface MyAccountCompletionViewModel {\r\n completionInPercent: number;\r\n}\r\nexport interface NotificationsViewModel {\r\n notificationItems: NotificationType[];\r\n}\r\nexport interface OrderHeaderViewModel {\r\n isServiceAvailable: boolean;\r\n orderInformation: OrderHeaderViewObject[];\r\n resultOverflow: boolean;\r\n}\r\nexport interface OrderHeaderViewObject {\r\n amount: MoneyViewObject;\r\n amountWithVat: MoneyViewObject;\r\n blocked: boolean;\r\n expirationDate?: string;\r\n expireSoon: boolean;\r\n itemIds: string[];\r\n orderDate: string;\r\n orderId: string;\r\n ourContact: string;\r\n quantity: number;\r\n referenceNo: string;\r\n remainingQuantity: number | undefined;\r\n shipmentDate: string;\r\n shippedQuantity: number | undefined;\r\n shippingAgent: string;\r\n shipToAddress: string;\r\n shipToContact: string;\r\n status: OrderStatusViewObject;\r\n total: MoneyViewObject;\r\n trackingLinks: TrackingLinkViewObject[];\r\n yourReference: string;\r\n}\r\nexport interface OrderHistoryDetailLineViewObject {\r\n brand?: string;\r\n categoryId?: string;\r\n comment?: string;\r\n conditionCode: ProductConditionCode | undefined;\r\n displayName?: string;\r\n image?: ImageViewObject;\r\n itemId: string;\r\n lineDiscountAmount: number | undefined;\r\n lineDiscountPercent: number | undefined;\r\n mpnNumber?: string;\r\n nextShipment: string[];\r\n quantity: number;\r\n referenceNo: string;\r\n remainingQuantity: number;\r\n shippedQuantity: number;\r\n total: MoneyViewObject;\r\n totalWithVat: MoneyViewObject;\r\n unitPrice: MoneyViewObject;\r\n url?: string;\r\n}\r\nexport interface OrderHistoryDetailShippedLineItemViewObject {\r\n description: string;\r\n isReceipt: boolean;\r\n itemId: string;\r\n mpnNumber?: string;\r\n quantity: number;\r\n serialNumbers?: string;\r\n shipmentDate: string;\r\n shipmentNo: string;\r\n trackingUrl: string;\r\n}\r\nexport interface OrderHistoryDetailShippedLineViewObject {\r\n isReceipt: boolean;\r\n lineItems: OrderHistoryDetailShippedLineItemViewObject[];\r\n serialNumbers?: string;\r\n shipmentDate: string;\r\n shipmentNo: string;\r\n trackingUrl: string;\r\n}\r\nexport interface OrderHistoryDetailViewModel {\r\n isServiceAvailable: boolean;\r\n orderHistoryDetail?: OrderHistoryDetailViewObject;\r\n}\r\nexport interface OrderHistoryDetailViewObject {\r\n amountExclVat: MoneyViewObject;\r\n amountInclVat: MoneyViewObject;\r\n amountSubTotal: MoneyViewObject;\r\n amountVat: MoneyViewObject;\r\n authAmount: string;\r\n blocked: boolean;\r\n createdBy?: EmployeeViewObject;\r\n currency: string;\r\n deliveryAddress: AddressViewObject;\r\n deliveryPrice: DeliveryPriceWithLinesViewModel;\r\n expirationDate?: string;\r\n expireSoon: boolean;\r\n invoiceAddress: AddressViewObject;\r\n invoiced: boolean;\r\n maxShipments: number;\r\n orderDate: string;\r\n orderEmail?: string;\r\n orderId: string;\r\n orderLines: OrderHistoryDetailLineViewObject[];\r\n partDelivery: boolean;\r\n referenceNo: string;\r\n shippedLines: OrderHistoryDetailShippedLineViewObject[];\r\n shippingAgent: string;\r\n shippingAgentName: string;\r\n shipToCode: string;\r\n transactionNo: string;\r\n webPaymentCode: string;\r\n yourReference: string;\r\n}\r\nexport interface OrderLinesViewModel {\r\n isServiceAvailable: boolean;\r\n orderInformation: OrderLineViewObject[];\r\n resultOverflow: boolean;\r\n}\r\nexport interface OrderLineViewObject {\r\n amount: MoneyViewObject;\r\n amountWithVat: MoneyViewObject;\r\n bidNo: string;\r\n blocked: boolean;\r\n brand?: string;\r\n categoryId?: string;\r\n conditionCode: ProductConditionCode | undefined;\r\n displayName?: string;\r\n image?: ImageViewObject;\r\n itemId: string;\r\n lineDiscountAmount: number;\r\n lineDiscountPercent: number;\r\n lineReference: string;\r\n manufacturerPartNo?: string;\r\n mpnNumber?: string;\r\n nextShipment: string[];\r\n orderDate: string;\r\n orderedQty: number;\r\n orderId: string;\r\n overflow: boolean;\r\n price: MoneyViewObject;\r\n referenceNo: string;\r\n remQty: number;\r\n rmaNo: string;\r\n shipmentDate: string;\r\n shippedQty: number;\r\n shippingAgent: string;\r\n shipToAddress: string;\r\n shipToContact: string;\r\n trackingLink?: string;\r\n trackingNo?: string;\r\n url?: string;\r\n yourReference: string;\r\n}\r\nexport interface PermissionsViewModel {\r\n showCustomProductGuides: boolean;\r\n showDirectDebitBlock: boolean;\r\n}\r\nexport interface SendMailViewModel {\r\n mailViewObject: SendMailViewObject[];\r\n}\r\nexport interface SendMailViewObject {\r\n documentNumber: string;\r\n success: boolean;\r\n}\r\nexport interface TrackingLinkViewObject {\r\n itemId: string;\r\n link: string;\r\n shipmentDate: string;\r\n shippedQty: number;\r\n shippingAgent: string;\r\n trackingNo: string;\r\n}\r\nexport enum LedgerColumn {\r\n DueDate = 0,\r\n PostingDate = 1,\r\n OrderId = 2,\r\n ReferenceNo = 3,\r\n DocumentNo = 4\r\n}\r\nexport interface BidRequest {\r\n bids?: string[];\r\n brands?: string[];\r\n lastFacet?: string;\r\n webCategories?: string[];\r\n}\r\nexport interface LedgerDownloadRequest {\r\n documentTypes?: LedgerDocumentType[];\r\n endDate: Date | undefined;\r\n searchText?: string;\r\n showOpenOnly: boolean;\r\n sortColumn?: LedgerColumn;\r\n sortOrder?: ListSortDirection;\r\n startDate: Date | undefined;\r\n}\r\nexport interface LedgerRequest {\r\n documentTypes?: LedgerDocumentType[];\r\n endDate: Date | undefined;\r\n page?: number;\r\n pageSize?: number;\r\n searchText?: string;\r\n showOpenOnly: boolean;\r\n sortColumn?: LedgerColumn | undefined;\r\n sortOrder?: ListSortDirection | undefined;\r\n startDate: Date | undefined;\r\n}\r\nexport interface OrderHeaderRequest {\r\n dateEnd: Date | undefined;\r\n dateStart: Date | undefined;\r\n searchText: string;\r\n type: AccountHeaderOrderType;\r\n}\r\nexport interface OrderLinesRequest {\r\n dateEnd: Date | undefined;\r\n dateStart: Date | undefined;\r\n searchText: string;\r\n type: AccountLineType;\r\n}\r\nexport interface OrderRequest {\r\n orderId: string;\r\n orderType: AccountDetailOrderType;\r\n}\r\nexport interface SendMailRequest {\r\n documentNumber: string;\r\n documentType: EmailDocumentType;\r\n recipient: string;\r\n}\r\nexport interface RequestAccessRequest {\r\n address: string;\r\n businessLines: string[];\r\n city: string;\r\n companyRegistrationNumber: string;\r\n contact: string;\r\n contactKey: string;\r\n countryCode: string;\r\n cvrNumber: string;\r\n duns?: string;\r\n email: string;\r\n emailCompany?: string;\r\n emailInvoice: string;\r\n emailStatement?: string;\r\n homepage: string;\r\n name: string;\r\n newsLetterAccepted: boolean;\r\n origin?: string;\r\n phone: string;\r\n termsAccepted: boolean;\r\n zip: string;\r\n}\r\nexport enum ContentWidth {\r\n FullWidth = 0,\r\n TwoThird = 1,\r\n OneThird = 2\r\n}\r\nexport enum HorizontalAlignment {\r\n Left = 0,\r\n Right = 1\r\n}\r\nexport enum RequestBreakpoint {\r\n Mobile = 0,\r\n Tablet = 1,\r\n Desktop = 2\r\n}\r\nexport enum SubheaderFontSize {\r\n Normal = 0,\r\n Large = 1\r\n}\r\nexport interface AdContentBlockViewModel {\r\n adUnitId?: string;\r\n backgroundColor?: string;\r\n backgroundImages: AdImage[];\r\n callToAction?: Link;\r\n callToActionColor?: string;\r\n caption?: string;\r\n captionColor?: string;\r\n clickPixelUrl: string;\r\n contentAligmentValue: HorizontalAlignment | undefined;\r\n contentBackgroundColor?: string;\r\n contentWidthValue: ContentWidth | undefined;\r\n creativeId?: string;\r\n header?: string;\r\n headerColor?: string;\r\n imageLeft?: AdImage;\r\n imageRight?: AdImage;\r\n layoutId?: string;\r\n lineItemId?: string;\r\n makeContentBackgroundTransparent: boolean | undefined;\r\n marginColor?: string;\r\n menuColor?: string;\r\n overlayVimeoCta?: string;\r\n overlayVimeoVideoId?: string;\r\n renderedPixelUrl: string;\r\n shim: boolean | undefined;\r\n shimColor?: string;\r\n subheader?: string;\r\n subheaderColor?: string;\r\n subheaderFontSizeValue: SubheaderFontSize | undefined;\r\n takeoverTheme?: string;\r\n topColor?: string;\r\n viewPixelUrl: string;\r\n vimeoVideoId?: string;\r\n visiblePixelUrl: string;\r\n}\r\nexport interface AdImage {\r\n height: number;\r\n url: string;\r\n width: number;\r\n}\r\nexport interface BrandLogoViewModel extends AdnuntiusResponse {\r\n image: AdImage;\r\n name?: string;\r\n}\r\nexport interface CategoryItemViewModel extends AdnuntiusResponse {\r\n categoryDisplayName?: string;\r\n icon: AdImage;\r\n}\r\nexport interface Link {\r\n name?: string;\r\n target?: string;\r\n url?: string;\r\n}\r\nexport interface PartnerLogoViewModel extends AdnuntiusResponse {\r\n image: AdImage;\r\n name?: string;\r\n}\r\nexport interface AdnuntiusResponse {\r\n clickPixelUrl: string;\r\n renderedPixelUrl: string;\r\n url?: string;\r\n viewPixelUrl: string;\r\n visiblePixelUrl: string;\r\n}\r\nexport interface AdnuntiusPixelForwardRequest {\r\n deliveryUrls: string[];\r\n}\r\nexport enum Feature {\r\n Rma = 0,\r\n PrerenderRedirect = 1,\r\n AddressSuggest = 2,\r\n GoogleTranslatePdp = 3\r\n}\r\nexport enum SiteName {\r\n Eet = 0,\r\n Oprema = 1\r\n}\r\nexport enum ListSortDirection {\r\n Ascending = 0,\r\n Descending = 1\r\n}\r\nexport enum RequestServiceType {\r\n OrderIntegration = 1,\r\n PriceFiles = 2,\r\n DirectDebit = 3\r\n}\r\nexport enum StockLocationTypeViewObject {\r\n Local = 0,\r\n Remote = 1,\r\n InComing = 2,\r\n Leadtime = 3,\r\n Unknown = 4\r\n}\r\nexport enum ProductConditionCode {\r\n C1 = 1,\r\n C2 = 2,\r\n C3 = 3,\r\n Exchange = 4,\r\n Refurb = 5,\r\n SpecialOr = 6\r\n}\r\nexport enum RmaHeaderOrderStatus {\r\n Requested = 1,\r\n Pending = 2,\r\n Approved = 3,\r\n Inprogress = 4,\r\n AwaitingCredit = 5,\r\n Closed = 6,\r\n Rejected = 7\r\n}\r\nexport enum RmaType {\r\n Exchange = 0,\r\n Credit = 1,\r\n Return = 2\r\n}\r\nexport enum ProductRecommendationStockFilterType {\r\n None = 0,\r\n Local = 1,\r\n Remote = 2,\r\n Both = 3\r\n}\r\nexport enum PopularityTypes {\r\n MostPurchased = 5,\r\n MostViewed = 10\r\n}\r\nexport enum FavoriteListPermission {\r\n View = 0,\r\n Edit = 1\r\n}\r\nexport enum CustomerBlockingType {\r\n None = 0,\r\n CanLoginButCannotPlaceOrder = 1,\r\n Complete = 2\r\n}\r\nexport enum PaymentMethodType {\r\n Account = 0,\r\n CreditCard = 2,\r\n Prepaid = 3\r\n}\r\nexport enum AccountDetailOrderType {\r\n Quotes = 0,\r\n Order = 1,\r\n BlanketOrders = 2\r\n}\r\nexport enum AccountHeaderOrderType {\r\n Quotes = 0,\r\n CurrentOrders = 1,\r\n HistoricOrders = 3,\r\n BlanketOrders = 5\r\n}\r\nexport enum AccountLineType {\r\n CurrentOrders = 1,\r\n HistoricOrders = 2\r\n}\r\nexport enum EmailDocumentType {\r\n Invoice = 2,\r\n CreditMemo = 3,\r\n FinanceChargeMemo = 4,\r\n SalesShipmentHeader = 6\r\n}\r\nexport enum LedgerDocumentType {\r\n Blank = 0,\r\n Payment = 1,\r\n Invoice = 2,\r\n CreditMemo = 3,\r\n RenteNota = 4,\r\n Reminder = 5\r\n}\r\n\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'link-arrow': {\r\n width: 32,\r\n height: 20,\r\n viewBox: '0 0 32 20',\r\n data: ''\r\n }\r\n})\r\n","const tailwind = {\r\n target: 'ie11',\r\n\r\n theme: {\r\n screens: require('./screens'),\r\n colors: {\r\n currentcolor: 'currentColor',\r\n transparent: 'transparent',\r\n black: '#262422',\r\n white: '#ffffff',\r\n gray: {\r\n 250: '#F9F9F9',\r\n 300: '#F6F6F6',\r\n 400: '#EDEDED',\r\n 500: '#DCDCDC',\r\n 700: '#B2B2B2',\r\n 720: '#C7C5C5',\r\n 750: '#AAA',\r\n 800: '#959595',\r\n 825: '#7b7b7b',\r\n 850: '#5c5b59',\r\n 900: '#4C4C4C'\r\n },\r\n blue: {\r\n 300: '#C5D2E0',\r\n 400: '#E5EAEF',\r\n 425: '#AFC1D4',\r\n 450: '#6C87AE',\r\n 500: '#3062A9',\r\n 600: '#264E87',\r\n 700: '#122245'\r\n },\r\n opremablue: {\r\n 75: '#c0dfe7',\r\n 100: '#9DBCB0',\r\n 300: '#2D92AE',\r\n 500: '#3062A9'\r\n },\r\n opremayellow: {\r\n 500: '#FFF200'\r\n },\r\n green: {\r\n 200: '#E2EBE8',\r\n 300: '#9DBCB0',\r\n 400: '#89C081',\r\n 450: '#627C75',\r\n 500: '#006A4D'\r\n },\r\n red: {\r\n 100: '#F2E7E7',\r\n 300: '#C55D5D',\r\n 500: '#d94949',\r\n 700: '#A34646'\r\n },\r\n brown: {\r\n 500: '#BDB1A6'\r\n },\r\n yellow: {\r\n 500: '#FFCA56',\r\n 600: '#DBA16D'\r\n }\r\n },\r\n textColor: theme => theme('colors'),\r\n fill: theme => theme('colors'),\r\n backgroundColor: theme => theme('colors'),\r\n borderColor: theme => theme('colors'),\r\n borderRadius: {\r\n none: '0',\r\n sm: '0.125rem',\r\n default: '0.25rem',\r\n 7: '0.7rem',\r\n 8: '0.8rem',\r\n md: '0.375rem',\r\n lg: '0.5rem',\r\n xl: '0.75rem',\r\n '2xl': '1rem',\r\n '3xl': '1.5rem',\r\n 30: '3rem',\r\n full: '9999px'\r\n },\r\n fontSize: {\r\n 9: '0.9rem',\r\n 10: '1.0rem',\r\n 11: '1.1rem',\r\n 12: '1.2rem',\r\n 13: '1.3rem',\r\n 14: '1.4rem',\r\n 15: '1.5rem',\r\n 16: '1.6rem',\r\n 18: '1.8rem',\r\n 20: '2.0rem',\r\n 22: '2.2rem',\r\n 24: '2.4rem',\r\n 34: '3.4rem',\r\n 36: '3.6rem',\r\n 46: '4.6rem',\r\n 50: '5rem',\r\n 64: '6.4rem'\r\n },\r\n height: theme => ({\r\n auto: 'auto',\r\n 0: '0',\r\n 4: '0.4rem',\r\n 5: '0.5rem',\r\n 10: '1rem',\r\n 12: '1.2rem',\r\n 16: '1.6rem',\r\n 20: '2rem',\r\n 25: '2.5rem',\r\n 30: '3rem',\r\n 32: '3.2rem',\r\n 34: '3.4rem',\r\n 36: '3.6rem',\r\n 40: '4rem',\r\n 50: '5rem',\r\n 60: '6rem',\r\n 70: '7rem',\r\n 80: '8rem',\r\n 100: '10rem',\r\n 150: '15rem',\r\n 160: '16rem',\r\n full: '100%',\r\n 'screen-half': '50vh',\r\n screen: '100vh'\r\n }),\r\n minHeight: theme => ({\r\n auto: 'auto',\r\n '3/4': '75%',\r\n full: '100%',\r\n screen: '100vh',\r\n 15: '1.5rem',\r\n 60: '6rem',\r\n 80: '8rem',\r\n 100: '10rem',\r\n 140: '14rem',\r\n 200: '20rem',\r\n 250: '25rem',\r\n 280: '28rem',\r\n 350: '35rem',\r\n 400: '40rem',\r\n 450: '45rem',\r\n 0: '0'\r\n }),\r\n width: theme => ({\r\n auto: 'auto',\r\n '1/2': '50%',\r\n '1/3': `${100 / 3}%`,\r\n '2/3': `${200 / 3}%`,\r\n '1/5': '20%',\r\n '2/5': '40%',\r\n '3/5': `${300 / 5}%`,\r\n '4/5': `${400 / 5}%`,\r\n '1/4': '25%',\r\n '2/4': '50%',\r\n '3/4': '75%',\r\n '1/12': `${100 / 12}%`,\r\n '2/12': `${200 / 12}%`,\r\n '3/12': `${300 / 12}%`,\r\n 10: '1rem',\r\n 12: '1.2rem',\r\n 16: '1.6rem',\r\n 20: '2rem',\r\n 25: '2.5rem',\r\n 30: '3rem',\r\n 32: '3.2rem',\r\n 34: '3.4rem',\r\n 40: '4rem',\r\n 50: '5rem',\r\n 60: '6rem',\r\n 70: '7rem',\r\n 80: '8rem',\r\n 100: '10rem',\r\n 160: '16rem',\r\n 800: '80rem',\r\n full: '100%',\r\n screen: '100vw'\r\n }),\r\n padding: {\r\n 0: '0',\r\n 1: '0.1rem',\r\n 2: '0.2rem',\r\n 3: '0.3rem',\r\n 4: '0.4rem',\r\n 5: '0.5rem',\r\n 6: '0.6rem',\r\n 7: '0.7rem',\r\n 8: '0.8rem',\r\n 9: '0.9rem',\r\n 10: '1rem',\r\n 12: '1.2rem',\r\n 13: '1.3rem',\r\n 15: '1.5rem',\r\n 18: '1.8rem',\r\n 20: '2rem',\r\n 22: '2.2rem',\r\n 25: '2.5rem',\r\n 30: '3rem',\r\n 35: '3.5rem',\r\n 40: '4rem',\r\n 50: '5rem',\r\n 60: '6rem',\r\n 70: '7rem',\r\n 80: '8rem',\r\n 100: '10rem',\r\n '1/12': `${100 / 12}%`\r\n },\r\n margin: {\r\n auto: 'auto',\r\n '-2': '-0.2rem',\r\n '-3': '-0.3rem',\r\n '-10': '-1rem',\r\n '-20': '-2rem',\r\n '-30': '-3rem',\r\n '-40': '-4rem',\r\n 0: '0',\r\n 1: '0.1rem',\r\n 2: '0.2rem',\r\n 3: '0.3rem',\r\n 4: '0.4rem',\r\n 5: '0.5rem',\r\n 6: '0.6rem',\r\n 7: '0.7rem',\r\n 8: '0.8rem',\r\n 9: '0.9rem',\r\n 10: '1rem',\r\n 14: '1.4rem',\r\n 15: '1.5rem',\r\n 17: '1.7rem',\r\n 20: '2rem',\r\n 22: '2.2rem',\r\n 25: '2.5rem',\r\n 30: '3rem',\r\n 35: '3.5rem',\r\n 40: '4rem',\r\n 45: '4.5rem',\r\n 50: '5rem',\r\n 60: '6rem',\r\n 70: '7rem',\r\n 90: '9rem',\r\n 110: '11rem',\r\n 120: '12rem',\r\n '1/12': `${100 / 12}%`,\r\n '2/12': `${200 / 12}%`,\r\n '3/12': `${300 / 12}%`\r\n },\r\n maxHeight: {\r\n full: '100%',\r\n screen: '100vh',\r\n initial: 'initial',\r\n 35: '3.5rem'\r\n },\r\n maxWidth: {\r\n full: '100%',\r\n '1/2': '50%',\r\n '2/3': '66%',\r\n '1/3': '33%',\r\n '1/4': '25%',\r\n '1/5': '20%',\r\n 'page-max': '144rem',\r\n 100: '10rem',\r\n 150: '15rem',\r\n 210: '21rem',\r\n 250: '25rem',\r\n 350: '35rem',\r\n 420: '42rem',\r\n 600: '60rem',\r\n 850: '85rem'\r\n },\r\n lineHeight: {\r\n none: '1',\r\n normal: '1.2',\r\n large: '1.4',\r\n double: '2',\r\n 40: '4rem'\r\n },\r\n zIndex: {\r\n '-1': -1,\r\n 0: '0',\r\n 1: '1',\r\n 2: '2',\r\n 3: '3',\r\n\r\n header: '10',\r\n facetOverlay: '11',\r\n facetSelector: '12',\r\n facetSpinner: '13',\r\n overlay: '20',\r\n 'overlay-2': '21',\r\n errorToaster: '30'\r\n },\r\n fontFamily: {\r\n montserrat: ['Montserrat', 'sans-serif']\r\n },\r\n fontWeight: {\r\n regular: 400,\r\n medium: 500,\r\n 'semi-bold': 600,\r\n bold: 700\r\n },\r\n inset: {\r\n '-10': '-1rem',\r\n 30: '3rem',\r\n 10: '1rem',\r\n 5: '0.5rem',\r\n 1: '1px',\r\n '075': '0.75rem',\r\n 0: 0,\r\n '-4': '-4px',\r\n '-5': '-5px'\r\n },\r\n opacity: {\r\n 0: '0',\r\n 15: '0.15',\r\n 20: '0.20',\r\n 25: '0.25',\r\n 30: '0.3',\r\n 40: '0.4',\r\n 50: '0.5',\r\n 75: '0.75',\r\n 80: '0.80',\r\n 100: '1'\r\n },\r\n extend: {\r\n minWidth: theme => ({\r\n 15: '1.5rem',\r\n 16: '1.6rem',\r\n 20: '2rem',\r\n 25: '2.5rem',\r\n 30: '3rem',\r\n 50: '5rem',\r\n 90: '9rem',\r\n 100: '10rem',\r\n 120: '12rem',\r\n 200: '20rem',\r\n 300: '30rem',\r\n 'min-content': 'min-content'\r\n })\r\n }\r\n },\r\n\r\n variants: {\r\n objectFit: ['responsive'],\r\n margin: ['responsive', 'first', 'last', 'oprema'],\r\n padding: ['responsive', 'first', 'last', 'oprema'],\r\n textColor: ['responsive', 'hover', 'oprema'],\r\n backgroundColor: ['responsive', 'hover', 'oprema'],\r\n borderColor: ['oprema']\r\n },\r\n\r\n corePlugins: {\r\n float: false,\r\n objectFit: true,\r\n objectPosition: true,\r\n container: false,\r\n backgroundAttachment: false,\r\n gap: false,\r\n gridAutoFlow: false,\r\n gridColumn: false,\r\n gridColumnStart: false,\r\n gridColumnEnd: false,\r\n gridRow: false,\r\n gridRowStart: false,\r\n gridRowEnd: false,\r\n gridTemplateColumns: false,\r\n gridTemplateRows: false\r\n },\r\n plugins: require('./plugins'),\r\n experimental: {\r\n applyComplexClasses: true\r\n }\r\n};\r\n\r\n/*\r\n|-----------------------------------------------------------------------------\r\n| Global variables\r\n|-----------------------------------------------------------------------------\r\n|\r\n| Variables for use in custom less like this\r\n| width: config('variables.canvasNavWidth')\r\n|\r\n*/\r\ntailwind.variables = require('./0-Settings/variables')(tailwind);\r\n\r\n// Export\r\nmodule.exports = tailwind;\r\n","/*\r\n|-----------------------------------------------------------------------------\r\n| Screens https://tailwindcss.com/docs/responsive-design\r\n|-----------------------------------------------------------------------------\r\n|\r\n| Screens in Tailwind are translated to CSS media queries. They define the\r\n| responsive breakpoints for your project. By default Tailwind takes a\r\n| \"mobile first\" approach, where each screen size represents a minimum\r\n| viewport width. Feel free to have as few or as many screens as you\r\n| want, naming them in whatever way you'd prefer for your project.\r\n|\r\n| Tailwind also allows for more complex screen definitions, which can be\r\n| useful in certain situations. Be sure to see the full responsive\r\n| documentation for a complete list of options.\r\n|\r\n| Class name: .{screen}:{utility}\r\n|\r\n*/\r\n\r\n/* REMEMBER TO KEEP IN SYNC WITH breakpointConfig.ts */\r\n\r\nconst screens = {\r\n print: { raw: 'print' },\r\n xs: '0px', // mobile and up\r\n 'only-xs': { min: 0, max: '414px' }, // Pure mobile\r\n sm: '415px', // Mobile and tablet vertical and up\r\n 'tween-sm-md': { min: '415px', max: '768px' }, // tweenpoint between sm and md\r\n md: '769px', // Up to and including old tablet horizontal and up\r\n 'only-md': { min: 0, max: '768px' }, // Mobile up until tablet\r\n lg: '1025px', // Desktop and up\r\n xl: '1280px' // Large desktop\r\n};\r\n\r\n/* REMEMBER TO KEEP IN SYNC WITH breakpointConfig.ts */\r\n\r\nmodule.exports = screens;\r\n","export default class Deferred {\r\n private _resolve: (value?: T) => void = () => {};\r\n private _reject: (value?: T) => void = () => {};\r\n private _isSettled = false;\r\n\r\n private _promise: Promise = new Promise((resolve, reject) => {\r\n this._reject = reject;\r\n this._resolve = resolve;\r\n })\r\n\r\n public get promise(): Promise {\r\n return this._promise;\r\n }\r\n\r\n public resolve(value?: T): void {\r\n this._resolve(value);\r\n this._isSettled = true;\r\n }\r\n\r\n public reject(value?: any): void {\r\n this._reject(value);\r\n this._isSettled = true;\r\n }\r\n\r\n public get isSettled(): boolean {\r\n return this._isSettled;\r\n }\r\n}\r\n","const plugins = [\r\n // Tailwind themes\r\n require('./4-Objects/themes')(['responsive']),\r\n\r\n // Objects\r\n require('./4-Objects/aspect-ratio')(['responsive']),\r\n\r\n // Utilities\r\n require('./6-Utilities/anim-timing')(['responsive']),\r\n require('./6-Utilities/center')()\r\n];\r\n\r\nmodule.exports = plugins;\r\n","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopHeader.vue?vue&type=style&index=0&id=2960b9f2&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopHeader.vue?vue&type=style&index=0&id=2960b9f2&lang=less&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputFile.vue?vue&type=style&index=0&id=26149499&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputFile.vue?vue&type=style&index=0&id=26149499&lang=less&scoped=true&\"","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'new-customer': {\r\n width: 32,\r\n height: 32,\r\n viewBox: '0 0 32 32',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'export': {\r\n width: 32,\r\n height: 30,\r\n viewBox: '0 0 32 30',\r\n data: ''\r\n }\r\n})\r\n","import { includes, isArray, isString, trim, map, find, throttle } from 'lodash';\r\nimport viewportEvents from '@/core/responsive/viewport/viewportEvents.service';\r\n\r\ntype BreakpointDef = { name: string; min: number; max: number };\r\ntype BreakpointsDef = BreakpointDef[];\r\n\r\nexport default {\r\n isActiveBreakpoint,\r\n getActiveBreakpoint,\r\n getBreakpoints,\r\n getBreakpoint,\r\n addListener,\r\n removeListener,\r\n getExpandedBreakpoints\r\n};\r\n\r\nlet breakpoints: BreakpointsDef;\r\n\r\nfunction getBreakpoints(): BreakpointsDef {\r\n return breakpoints;\r\n}\r\n\r\nfunction getBreakpoint(name: string): BreakpointDef {\r\n const bp = find(breakpoints, { name });\r\n if (!bp) {\r\n throw new Error(`${name} is not a known breakpoint`);\r\n }\r\n return bp;\r\n}\r\n\r\n/*\r\n Given breakpoints: 'xs', 'sm', 'md', 'lg', 'xl'\r\n Expands\r\n\r\n 'xs,sm,lg' => ['xs','sm','lg']\r\n 'min-md' => ['md','lg','xl']\r\n 'min-sm,max-lg' => ['sm','md','lg']\r\n\r\n breakpoints can also be excluded with the 'not-' prefix: example: [max-xl, not-md] for all breakpoints besides md\r\n\r\n NB: Only expects to find at most 1 breakpoint with min- prefix and at most 1 with max- prefix, so only 1 range!\r\n NB: Might contain duplicates.\r\n */\r\nfunction getExpandedBreakpoints(breakpoints: string): string[] {\r\n const bpsAsArray = breakpoints.split(',').map(l => l.trim());\r\n let finalSizes: string[] = [...bpsAsArray].filter(bps => !bps.startsWith('min-') && !bps.startsWith('max-') && !bps.startsWith('not-'));\r\n const breakpointKeys = getBreakpoints().map(bp => bp.name);\r\n\r\n while (hasExcludedPrefixes(bpsAsArray)) {\r\n const excluded = bpsAsArray.find(s => s.startsWith('not'));\r\n if (!excluded) break;\r\n\r\n let excludedIdx = breakpointKeys.indexOf(stripPrefix(excluded));\r\n if (excludedIdx >= 0) { breakpointKeys.splice(excludedIdx, 1); }\r\n\r\n excludedIdx = bpsAsArray.indexOf(excluded);\r\n if (excludedIdx >= 0) { bpsAsArray.splice(excludedIdx, 1); }\r\n }\r\n\r\n if (hasMinMaxPrefixes(bpsAsArray)) {\r\n const minBp = bpsAsArray.find(s => s.startsWith('min-'));\r\n const minBpIx = minBp ? breakpointKeys.indexOf(stripPrefix(minBp)) : 0;\r\n const maxBp = bpsAsArray.find(s => s.startsWith('max-'));\r\n const maxBpIx = maxBp ? breakpointKeys.indexOf(stripPrefix(maxBp)) + 1 : breakpointKeys.length;\r\n const range = breakpointKeys.slice(minBpIx, maxBpIx);\r\n\r\n finalSizes = [...finalSizes, ...range];\r\n }\r\n\r\n return finalSizes;\r\n\r\n function hasMinMaxPrefixes(keys: string[]): boolean {\r\n return keys.some(k => k.startsWith('min-') || keys.some(k => k.startsWith('max-')));\r\n }\r\n\r\n function hasExcludedPrefixes(keys: string[]): boolean {\r\n return keys.some(k => k.startsWith('not-'));\r\n }\r\n\r\n function stripPrefix(size: string): string {\r\n return size.substr(size.indexOf('-') + 1);\r\n }\r\n}\r\n\r\nexport function defineBreakpoints(bps: { [bp: string]: { min: number; max: number } }) {\r\n breakpoints = map(bps, (range, bp) => {\r\n return { name: bp, min: range.min, max: range.max };\r\n }).sort((a, b) => a.min - b.min);\r\n}\r\n\r\nfunction normalizeBreakpoints(bps: string) {\r\n const normalizedBps = isString(bps) ? bps.split(',') : isArray(bps) ? bps : [];\r\n return map(normalizedBps, trim);\r\n}\r\n\r\nfunction isActiveBreakpoint(bps: string) {\r\n const arrayOfBreakpointNames = normalizeBreakpoints(bps);\r\n const activeBreakpoint = getActiveBreakpoint();\r\n return includes(arrayOfBreakpointNames, activeBreakpoint);\r\n}\r\n\r\nfunction getActiveBreakpoint(): string {\r\n const width = Math.max(window.innerWidth, window.document.documentElement!.clientWidth);\r\n\r\n const activeBreakpoint = breakpoints.find(bp => {\r\n return bp.min <= width && bp.max >= width;\r\n })!.name;\r\n\r\n return activeBreakpoint;\r\n}\r\n\r\nlet listeners: Array<() => void> = [];\r\n\r\nfunction addListener(listener: () => void) {\r\n listeners.push(listener);\r\n listener();\r\n}\r\n\r\nfunction removeListener(listener: Function) {\r\n listeners = listeners.filter(l => l !== listener);\r\n}\r\n\r\nclass Worker {\r\n private throttleTimer = 500;\r\n private winWidth = 0;\r\n private checkActiveBreakpointThrottled: any;\r\n\r\n constructor(private callback: any) {\r\n this.checkActiveBreakpointThrottled = throttle(this.handleViewportEvents.bind(this), this.throttleTimer, {\r\n trailing: true\r\n });\r\n\r\n viewportEvents.setCallback(this.checkActiveBreakpointThrottled);\r\n }\r\n\r\n public destroy() {\r\n viewportEvents.removeCallback(this.checkActiveBreakpointThrottled);\r\n }\r\n\r\n public handleViewportEvents(viewport: any) {\r\n const currentWinWidth = viewport.width;\r\n if (currentWinWidth === this.winWidth) {\r\n return;\r\n }\r\n this.winWidth = currentWinWidth;\r\n this.callback();\r\n }\r\n}\r\n\r\n// eslint-disable-next-line no-new\r\nnew Worker(() => {\r\n for (const l of listeners) {\r\n l();\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport makeStoreDebugAccessible from '@/core/store/storeDebug';\r\nimport { BreadcrumbItem } from '@/types/contentServerContract';\r\nimport { startCase } from 'lodash';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\nimport serverContextService from '@/core/serverContext.service';\r\n\r\ninterface IAppState {\r\n breadcrumb: BreadcrumbItem[];\r\n isTunnelView: boolean;\r\n isFrontPage: boolean;\r\n hideBreadcrumb: boolean;\r\n hideMobileSearch: boolean;\r\n disableContainer: boolean;\r\n maintenanceMode: boolean;\r\n}\r\n\r\nclass AppStore {\r\n private state: IAppState = Vue.observable({\r\n breadcrumb: [],\r\n isTunnelView: false,\r\n isFrontPage: location.pathname === serverContextService.siteInfo.url,\r\n hideBreadcrumb: false,\r\n hideMobileSearch: false,\r\n disableContainer: false,\r\n maintenanceMode: window.servercontext.maintenance\r\n });\r\n\r\n constructor() {\r\n makeStoreDebugAccessible('appStore', this.state);\r\n }\r\n\r\n public get breadcrumb(): BreadcrumbItem[] {\r\n return this.state.breadcrumb;\r\n }\r\n\r\n public get breadcrumbPrettified(): BreadcrumbItem[] {\r\n const crumbs = this.state.breadcrumb ? [...this.state.breadcrumb] : [];\r\n\r\n // Prepend home\r\n crumbs.unshift({\r\n name: dictionaryService.get('FrontPage.Home'),\r\n url: '/',\r\n id: '0'\r\n });\r\n\r\n // Provide dictionary keys for \"Brands\" and \"Department\" pages\r\n crumbs.find(item => {\r\n if (item.name?.toLowerCase() === 'brands') {\r\n item.name = dictionaryService.get('Breadcrumbs.Brands');\r\n }\r\n\r\n if (item.name?.toLowerCase() === 'departments') {\r\n item.name = dictionaryService.get('Breadcrumbs.Departments');\r\n }\r\n });\r\n\r\n return crumbs;\r\n }\r\n\r\n public setBreadcrumb(breadcrumb: BreadcrumbItem[]): void {\r\n this.state.breadcrumb = [...breadcrumb];\r\n }\r\n\r\n public addBreadcrumb(breadcrumbItem: BreadcrumbItem) {\r\n this.state.breadcrumb.push(breadcrumbItem);\r\n }\r\n\r\n public initPage({ breadcrumb, isTunnelView = false, hideBreadcrumb = false }: {\r\n breadcrumb?: BreadcrumbItem[], isTunnelView?: boolean, hideBreadcrumb?: boolean\r\n }) {\r\n if (breadcrumb) {\r\n this.state.breadcrumb = breadcrumb;\r\n }\r\n\r\n this.state.isTunnelView = isTunnelView;\r\n this.state.hideBreadcrumb = hideBreadcrumb;\r\n }\r\n\r\n public setTunnelView(isTunnelView: boolean) {\r\n this.state.isTunnelView = isTunnelView;\r\n }\r\n\r\n public get isTunnelView(): boolean {\r\n return this.state.isTunnelView;\r\n }\r\n\r\n public setDisableContainer(disableContainer: boolean) {\r\n this.state.disableContainer = disableContainer;\r\n }\r\n\r\n public get isContainerDisabled(): boolean {\r\n return this.state.disableContainer;\r\n }\r\n\r\n public get isFrontPage(): boolean {\r\n return this.state.isFrontPage;\r\n }\r\n\r\n public set isFrontPage(isFront:boolean) {\r\n this.state.isFrontPage = isFront;\r\n }\r\n\r\n public setHideBreadcrumb(hide: boolean) {\r\n this.state.hideBreadcrumb = hide;\r\n }\r\n\r\n public get hideBreadcrumb(): boolean {\r\n return this.state.hideBreadcrumb;\r\n }\r\n\r\n public get hideMobileSearch(): boolean {\r\n return this.state.hideMobileSearch;\r\n }\r\n\r\n public set hideMobileSearch(hide: boolean) {\r\n this.state.hideMobileSearch = hide;\r\n }\r\n\r\n public getBreadcrumbFromRoute(route: string): BreadcrumbItem[] {\r\n const breadcrumb = route.split('/')\r\n .filter(x => x.length > 0)\r\n .map(x => {\r\n const name = decodeURIComponent(x.split(/^(.*?)(#|\\?)/gi).filter(x => x.length > 0)[0]);\r\n const url = decodeURIComponent(route.substring(0, route.indexOf(x) + x.length));\r\n return ({\r\n name: startCase(name),\r\n url: url\r\n } as BreadcrumbItem);\r\n });\r\n\r\n return breadcrumb;\r\n }\r\n\r\n public get isMaintenanceMode(): boolean {\r\n return this.state.maintenanceMode;\r\n }\r\n\r\n public set isMaintenanceMode(maintenanceMode: boolean) {\r\n const bypassMaintenance = location.search.toLowerCase().includes('bypassMaintenance=926665286'.toLowerCase());\r\n if (!bypassMaintenance) {\r\n this.state.maintenanceMode = maintenanceMode;\r\n }\r\n }\r\n}\r\n\r\nexport default new AppStore();\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"c-minus\",class:_vm.mode,attrs:{\"type\":\"button\",\"role\":\"button\"},on:{\"click\":function($event){return _vm.$emit((_vm.mode + \"-click\"))}}},[_c('div',{staticClass:\"line line1\"}),_c('div',{staticClass:\"line line2\"}),_c('div',{staticClass:\"sr-only\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")((_vm.mode === 'minus' ? 'Product.AddToBasket.AriaLabelRemoveOne' : 'Generic.Cancel')))+\" \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class MinusCancel extends Vue {\r\n @Prop({\r\n required: true,\r\n type: String,\r\n default: 'minus',\r\n validator: value => ['minus', 'cancel'].includes(value as string)\r\n })\r\n private mode;\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MinusCancel.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MinusCancel.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MinusCancel.vue?vue&type=template&id=2f9084da&\"\nimport script from \"./MinusCancel.vue?vue&type=script&lang=ts&\"\nexport * from \"./MinusCancel.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MinusCancel.vue?vue&type=style&index=0&lang=less&\"\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/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputCheckbox.vue?vue&type=style&index=0&id=4a58118b&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputCheckbox.vue?vue&type=style&index=0&id=4a58118b&lang=less&scoped=true&\"","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'login': {\r\n width: 26,\r\n height: 34,\r\n viewBox: '0 0 26 34',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'plus-medium': {\r\n width: 18,\r\n height: 18,\r\n viewBox: '0 0 18 18',\r\n data: ''\r\n }\r\n})\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileCondition.vue?vue&type=style&index=0&id=b9b237e2&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileCondition.vue?vue&type=style&index=0&id=b9b237e2&lang=less&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileCampaign.vue?vue&type=style&index=0&id=369ddabc&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileCampaign.vue?vue&type=style&index=0&id=369ddabc&lang=less&scoped=true&\"","class CopyService {\r\n public copyTextToClipboard(text: string) {\r\n const el = document.createElement('textarea');\r\n el.value = text;\r\n document.body.appendChild(el);\r\n el.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(el);\r\n }\r\n}\r\n\r\nexport default new CopyService();\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.notification && _vm.notification.message)?_c('div',{staticClass:\"notification z-header fixed top-0 left-0 right-0 bg-yellow-500 min-h-60 flex items-center justify-center\"},[_c('div',{staticClass:\"notification p-10 bg-yellow-500 flex items-center justify-between o-chrome-container\"},[_c('p',{staticClass:\"w-full\",domProps:{\"innerHTML\":_vm._s(_vm.notification.message)}}),_c('button',{staticClass:\"reset-icon\",on:{\"click\":_vm.hideNotification}},[_c('c-icon',{attrs:{\"name\":\"close\",\"width\":\"15\",\"height\":\"15\"}})],1)])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\r\nimport contentApiService from '@/core/http/contentApi.service';\r\nimport serverContextService from '@/core/serverContext.service';\r\nimport { WebsiteNotificationViewModel } from '@/types/contentServerContract';\r\nimport loggingService from '@/core/logging.service';\r\nimport { LOGGED_IN, LOGGED_OFF } from '@/core/auth/auth.service';\r\nimport bus from '@/core/bus';\r\n\r\ninterface INotifcationsState {\r\n notification: WebsiteNotificationViewModel | null;\r\n visible: boolean;\r\n}\r\n\r\n// const pollingInterval = 60 * 5 * 1000; // 5 minutes in milliseconds\r\n\r\nclass NotificationsService {\r\n private state: INotifcationsState = Vue.observable({\r\n notification: null,\r\n visible: true\r\n });\r\n\r\n constructor() {\r\n // Delay initial load of notifications\r\n setTimeout(() => this.getNotifications(), 1500);\r\n\r\n bus.on(LOGGED_IN, () => {\r\n this.showNotification();\r\n this.getNotifications();\r\n });\r\n\r\n bus.on(LOGGED_OFF, () => {\r\n this.showNotification();\r\n this.getNotifications();\r\n });\r\n }\r\n\r\n private async getNotifications() {\r\n const url = serverContextService.settings?.notificationsLink;\r\n if (!url) {\r\n loggingService.warn('Tried to fetch website notifications but notificationsLink not present in server context!');\r\n return;\r\n }\r\n\r\n try {\r\n const result = await contentApiService.getContent(url);\r\n if (result.message) {\r\n // Notification changed - show it\r\n if (result.message !== this.state.notification?.message) {\r\n this.showNotification();\r\n }\r\n\r\n this.state.notification = result;\r\n }\r\n } catch (e) {\r\n // No content - ignored\r\n }\r\n }\r\n\r\n public get notification(): WebsiteNotificationViewModel | null {\r\n return this.state.visible ? this.state.notification : null;\r\n }\r\n\r\n public hideNotification() {\r\n this.state.visible = false;\r\n }\r\n\r\n public showNotification() {\r\n this.state.visible = true;\r\n }\r\n}\r\n\r\nexport default new NotificationsService();\r\n","\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue } from 'vue-property-decorator';\r\nimport notificationsStore from '@/project/shared/notifications/notifications.service';\r\n\r\n@Component\r\nexport default class NotificationBanner extends Vue {\r\n private get notification() {\r\n return notificationsStore.notification;\r\n }\r\n\r\n private hideNotification() {\r\n notificationsStore.hideNotification();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationBanner.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationBanner.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NotificationBanner.vue?vue&type=template&id=34338b01&scoped=true&\"\nimport script from \"./NotificationBanner.vue?vue&type=script&lang=ts&\"\nexport * from \"./NotificationBanner.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NotificationBanner.vue?vue&type=style&index=0&id=34338b01&lang=less&scoped=true&\"\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 \"34338b01\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{staticClass:\"bg-white p-20 relative\"},[(_vm.showTitle)?_c('div',{staticClass:\"h3 mb-20 font-medium\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Search.CategoriesTitle'))+\" \")]):_vm._e(),_c('section',[_c('read-more',{attrs:{\"min-items\":_vm.minItems,\"button-class\":\"w-full\",\"body-class\":\"pt-2\",\"use-observer\":\"\",\"tag\":\"ul\"}},[_vm._l((_vm.menuItems),function(menu){return _c('li',{key:menu.name,staticClass:\"pb-15 relative\",class:{ 'opacity-50 pointer-events-none' : menu.disabled }},[_c('input',{staticClass:\"sr-only top-0\",attrs:{\"id\":(\"category-facet-\" + (menu.name)),\"disabled\":menu.disabled,\"name\":(\"facet-\" + (menu.name)),\"type\":\"checkbox\"},domProps:{\"checked\":menu.selected},on:{\"change\":function($event){return _vm.toggle(menu)}}}),_c('label',{staticClass:\"facet-label flex items-center cursor-pointer leading-normal select-none\",attrs:{\"for\":(\"category-facet-\" + (menu.name))}},[_c('c-icon',{staticClass:\"facet-checkmark\",class:{'opacity-100': menu.selected, 'opacity-0': !menu.selected},attrs:{\"name\":\"checkmark\",\"width\":\"16\",\"height\":\"16\"}}),_c('p',{staticClass:\"flex text-13 font-medium w-full\"},[_c('span',{staticClass:\"text-left flex-1 hover:underline\",class:{ 'font-bold underline': menu.highlight }},[(menu.displayLabel)?[_vm._v(\" \"+_vm._s(_vm._f(\"t\")(menu.displayLabel))+\" \")]:[_vm._v(\" \"+_vm._s(menu.name)+\" \")]],2),(menu.productCount >= 0)?_c('span',{staticClass:\"text-13 text-gray-800 font-medium flex items-start h-full ml-5\"},[_vm._v(\" (\"+_vm._s(_vm._f(\"localeNumber\")(menu.productCount))+\") \")]):_vm._e()])],1)])}),_c('div',{attrs:{\"slot\":\"collapse\"},slot:\"collapse\"},[_c('div',{staticClass:\"cursor-pointer text-13 bg-white theme-text-linkcolor p-2 flex items-center justify-center\"},[_c('c-icon',{staticClass:\"mr-10\",attrs:{\"height\":\"12\",\"width\":\"12\",\"name\":\"minus-big\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.ShowLess'))+\" \")],1)]),_c('div',{attrs:{\"slot\":\"expand\"},slot:\"expand\"},[_c('div',{staticClass:\"cursor-pointer text-13 bg-white theme-text-linkcolor p-2 flex items-center justify-center\"},[_c('c-icon',{staticClass:\"mr-10\",attrs:{\"height\":\"12\",\"width\":\"12\",\"name\":\"plus-big\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.ShowMore'))+\" \")],1)])],2)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { MenuItem } from '@/types/apiServerContract';\r\nimport urlHelperService from '@/core/urlHelper.service';\r\nimport CategoryNameAndCount from '@/project/search/navigation/CategoryNameAndCount.vue';\r\nimport ReadMore from '@/core/ui-components/ReadMore.vue';\r\n\r\n@Component({\r\n components: { CategoryNameAndCount, ReadMore }\r\n})\r\nexport default class CategoryFacets extends Vue {\r\n @Prop({ type: Array, required: true })\r\n private menuItems!: MenuItem[];\r\n\r\n @Prop({ type: Boolean, default: true })\r\n private showTitle!: boolean;\r\n\r\n @Prop({ type: Number, default: 10 })\r\n private minItems!: number;\r\n\r\n private toggle(menuItem: MenuItem) {\r\n menuItem.selected = !menuItem.selected;\r\n urlHelperService.setCategoryIds(menuItem.categoryIds, menuItem.selected, false);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryFacets.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryFacets.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CategoryFacets.vue?vue&type=template&id=fd0f3150&\"\nimport script from \"./CategoryFacets.vue?vue&type=script&lang=ts&\"\nexport * from \"./CategoryFacets.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","export interface CookieSetStructure {\r\n name: string,\r\n value?: string,\r\n exdays?: number,\r\n path?: string,\r\n domain?: string\r\n}\r\n\r\nfunction set(options: CookieSetStructure): void {\r\n options.value = options.value || '';\r\n options.path = options.path || '/';\r\n\r\n const domain = options.domain ? 'domain=' + options.domain + ';' : '';\r\n const path = 'path=' + options.path;\r\n let expires = '';\r\n\r\n // create the expiration date\r\n if (options.exdays) {\r\n var d = new Date();\r\n\r\n d.setTime(d.getTime() + (options.exdays * 24 * 60 * 60 * 1000));\r\n expires = 'expires=' + d.toUTCString();\r\n }\r\n\r\n document.cookie = options.name + '=' + options.value + ';' + domain + path + ';' + expires;\r\n}\r\n\r\nfunction get(cname: string): string | undefined {\r\n const name = cname + '=';\r\n const cookies = document.cookie.split(';').map(c => c.trim());\r\n const cookie = cookies.find(c => c.startsWith(cname));\r\n return cookie ? cookie.substring(name.length, cookie.length) : undefined;\r\n}\r\n\r\nfunction del(name: string): void {\r\n set({\r\n name,\r\n exdays: -1\r\n });\r\n}\r\n\r\nexport default {\r\n set,\r\n get,\r\n del\r\n};\r\n","import { debounce } from 'lodash';\r\nimport Deferred from '@/core/async/Deferred';\r\nimport Api from '@/project/http/Api.service';\r\nimport { AdContentBlockViewModel } from '@/types/apiServerContract';\r\nimport { localStorageService } from '@/core/storage.service';\r\nimport UUID from '@/core/uuid.service';\r\nimport bus from '@/core/bus';\r\nimport { UserData } from '@/core/auth/token.service';\r\nimport { TOKEN_DATA_CHANGED } from '@/core/auth/auth.service';\r\nimport cookieService from '@/core/cookie.service';\r\n\r\ninterface AdnuntiusKeys {\r\n contactKey: string,\r\n customerKey?: string\r\n}\r\n\r\nconst LOCAL_STORAGE_KEY = 'eetgroup-eet-adnuntius';\r\nconst debouncedGetPersonalizedContent = debounce(getPersonalizedContentFromServer, 200); // There should be time enough so all blocks on page has been created\r\n\r\nlet keys: AdnuntiusKeys = {\r\n contactKey: ''\r\n};\r\n\r\ninit();\r\n\r\nbus.on(TOKEN_DATA_CHANGED, (userData: UserData | null) => {\r\n if (userData) {\r\n setKeys(userData.contactHash, userData.customerKey); // Using contactHash instead of contactKey is correct. #2414. CHE.\r\n }\r\n});\r\n\r\nfunction init() {\r\n let tmpKeys = localStorageService.getItemAs(LOCAL_STORAGE_KEY);\r\n if (!tmpKeys || contactKeyIsAnonymousGuid(tmpKeys.contactKey)) {\r\n tmpKeys = {\r\n contactKey: getAnonymousContactKey()\r\n };\r\n setKeys(tmpKeys.contactKey);\r\n } else {\r\n keys = tmpKeys;\r\n }\r\n}\r\n\r\nfunction contactKeyIsAnonymousGuid(contactKey: string) {\r\n return contactKey.startsWith('temp');\r\n}\r\n\r\nfunction getAnonymousContactKey(): string {\r\n if (keys.contactKey && !contactKeyIsAnonymousGuid(keys.contactKey)) {\r\n // Probably lytics id already set\r\n return keys.contactKey;\r\n }\r\n\r\n // Else no value or temp value - try to get lytics cookie\r\n const lyticsCookie = cookieService.get('seerid'); // Lytics uid.\r\n if (lyticsCookie) {\r\n return lyticsCookie;\r\n }\r\n\r\n // If no key at all set to temporary - until we read lytics cookie\r\n if (!keys.contactKey) return 'temp_' + UUID();\r\n\r\n // Return already set temp key\r\n return keys.contactKey;\r\n}\r\n\r\nfunction setKeys(contactKey: string, customerKey?: string): void {\r\n keys = {\r\n contactKey,\r\n customerKey\r\n };\r\n localStorageService.setItemAs(LOCAL_STORAGE_KEY, keys);\r\n}\r\n\r\nfunction getContactKey(): string {\r\n if (contactKeyIsAnonymousGuid(keys.contactKey)) {\r\n // Need to update if we were using tmp guid and lytics cookie now present.\r\n const anonymousContactKey = getAnonymousContactKey();\r\n if (keys.contactKey !== anonymousContactKey) {\r\n setKeys(anonymousContactKey, keys.customerKey);\r\n }\r\n }\r\n return keys.contactKey;\r\n}\r\n\r\nfunction getCustomerKey(): string | undefined {\r\n return keys.customerKey;\r\n}\r\n\r\n// Get all adnuntius data for blocks for one url in one go.\r\nlet _currentUrl;\r\nconst outstandingRequests: Map[]> =\r\n new Map[]>();\r\nfunction getBundledPersonalizedContent(adUnitId: string, currentUrl: string): Promise {\r\n if (currentUrl !== _currentUrl) {\r\n _currentUrl = currentUrl;\r\n cleanUpOutstanding();\r\n }\r\n let deferreds = outstandingRequests.get(adUnitId);\r\n if (!deferreds) {\r\n deferreds = [];\r\n outstandingRequests.set(adUnitId, deferreds);\r\n }\r\n const deferred = new Deferred();\r\n deferreds.push(deferred);\r\n debouncedGetPersonalizedContent();\r\n return deferred.promise;\r\n}\r\n\r\nfunction getPersonalizedContentFromServer(): void {\r\n // There shouldn't be requests for more than url at a time, but\r\n const ids = Array.from(outstandingRequests.keys());\r\n Api.personalization.personalizedContent(ids, _currentUrl, getContactKey(), getCustomerKey())\r\n .then(adnuntiusBlockData => {\r\n adnuntiusBlockData.forEach(adnuntiusBlock => {\r\n const deferredsForId = adnuntiusBlock.adUnitId && outstandingRequests.get(adnuntiusBlock.adUnitId);\r\n deferredsForId && deferredsForId.forEach(deferred => deferred.resolve(adnuntiusBlock));\r\n });\r\n // Will leave resolved promises resolved and reject rest.\r\n cleanUpOutstanding();\r\n })\r\n .catch(() => {\r\n cleanUpOutstanding();\r\n });\r\n}\r\n\r\nfunction cleanUpOutstanding() {\r\n outstandingRequests.forEach(deferreds => {\r\n deferreds.forEach(d => d.reject());\r\n });\r\n outstandingRequests.clear();\r\n}\r\n\r\nexport default {\r\n getContactKey,\r\n getCustomerKey,\r\n getBundledPersonalizedContent\r\n};\r\n","import Vue from 'vue';\r\nimport { Dictionary, RawLocation, Route } from 'vue-router/types/router';\r\nimport { isEqual } from 'lodash';\r\nimport { router } from 'spaRouter';\r\n\r\nexport enum UrlQueryKey {\r\n termKey = 'term',\r\n pageKey = 'page',\r\n sortByKey = 'sortBy',\r\n searchFilterKey = 'filter',\r\n searchPriceSortKey = 'priceSort',\r\n categoryKey = 'category',\r\n categoryIdKey = 'categoryId',\r\n categoryIdsKey = 'categoryIds',\r\n campaignKey = 'campaignCode',\r\n lastFacetKey = 'lastFacet',\r\n showScoreKey = 'showscore',\r\n showExplanationKey = 'explain',\r\n showRawKey = 'raw',\r\n labelsdebug = 'labelsdebug',\r\n productGuideGuideId = 'guideId',\r\n productGuideProductPageSize = 'productPageSize',\r\n productGuideModeKey = 'pg-mode',\r\n productGuideBrandKey = 'brand',\r\n productGuideSeriesKey = 'series',\r\n productGuideModelKey = 'model',\r\n productGuideSearchKey = 'search',\r\n productGuideExternalId = 'externalId',\r\n productGuideOverrideProductUrl = 'overrideProductUrl',\r\n productGuideExternalButtonText = 'buttonText',\r\n productGuideExternalButtonLink = 'buttonLink',\r\n cableGuideCableTypeKey = 'cableType',\r\n cableGuideCableEndAKey = 'cableEndA',\r\n cableGuideCableEndBKey = 'cableEndB',\r\n productGuideConfigurationStep = 'configStep',\r\n origin = 'origin',\r\n theme = 'theme',\r\n hideStock = 'hideStock',\r\n hideFacets = 'hideFacets',\r\n wid = 'wid',\r\n css = 'css',\r\n bidsKey = 'bids',\r\n bidsWebCategoriesKey = 'webcategories',\r\n bidsBrandKey = 'brands',\r\n language = 'language',\r\n\r\n // External queries e.g. google and facebook\r\n // eslint-disable-next-line camelcase\r\n utm_source = 'utm_source',\r\n // eslint-disable-next-line camelcase\r\n utm_medium = 'utm_medium',\r\n // eslint-disable-next-line camelcase\r\n utm_campaign = 'utm_campaign',\r\n // eslint-disable-next-line camelcase\r\n utm_content = 'utm_content',\r\n // eslint-disable-next-line camelcase\r\n utm_id = 'utm_id',\r\n // eslint-disable-next-line camelcase\r\n utm_source_platform = 'utm_source_platform',\r\n // eslint-disable-next-line camelcase\r\n utm_campaign_id = 'utm_campaign_id',\r\n // eslint-disable-next-line camelcase\r\n utm_term = 'utm_term',\r\n // eslint-disable-next-line camelcase\r\n utm_creative_format = 'utm_creative_format',\r\n // eslint-disable-next-line camelcase\r\n utm_marketing_tactic = 'utm_marketing_tactic',\r\n fbclid = 'fbclid',\r\n gclid = 'gclid',\r\n rckh = 'rckh'\r\n}\r\n\r\nconst nonFacetKeys = [\r\n UrlQueryKey.termKey,\r\n UrlQueryKey.categoryKey,\r\n UrlQueryKey.categoryIdKey,\r\n UrlQueryKey.categoryIdsKey,\r\n UrlQueryKey.campaignKey,\r\n UrlQueryKey.sortByKey,\r\n UrlQueryKey.pageKey,\r\n UrlQueryKey.lastFacetKey,\r\n UrlQueryKey.showScoreKey,\r\n UrlQueryKey.showExplanationKey,\r\n UrlQueryKey.showRawKey,\r\n UrlQueryKey.labelsdebug,\r\n UrlQueryKey.productGuideGuideId,\r\n UrlQueryKey.productGuideProductPageSize,\r\n UrlQueryKey.productGuideModeKey,\r\n UrlQueryKey.productGuideBrandKey,\r\n UrlQueryKey.productGuideSeriesKey,\r\n UrlQueryKey.productGuideModelKey,\r\n UrlQueryKey.productGuideSearchKey,\r\n UrlQueryKey.cableGuideCableTypeKey,\r\n UrlQueryKey.cableGuideCableEndAKey,\r\n UrlQueryKey.cableGuideCableEndBKey,\r\n UrlQueryKey.productGuideConfigurationStep,\r\n UrlQueryKey.productGuideExternalButtonLink,\r\n UrlQueryKey.productGuideExternalButtonText,\r\n UrlQueryKey.origin,\r\n UrlQueryKey.theme,\r\n UrlQueryKey.css,\r\n UrlQueryKey.language,\r\n UrlQueryKey.hideStock,\r\n UrlQueryKey.hideFacets,\r\n UrlQueryKey.wid,\r\n UrlQueryKey.utm_content,\r\n UrlQueryKey.utm_campaign,\r\n UrlQueryKey.utm_source,\r\n UrlQueryKey.utm_medium,\r\n UrlQueryKey.utm_id,\r\n UrlQueryKey.utm_source_platform,\r\n UrlQueryKey.utm_campaign_id,\r\n UrlQueryKey.utm_term,\r\n UrlQueryKey.utm_creative_format,\r\n UrlQueryKey.utm_marketing_tactic,\r\n UrlQueryKey.fbclid,\r\n UrlQueryKey.gclid,\r\n UrlQueryKey.rckh\r\n];\r\n\r\nconst observableFacets: {\r\n facets: UrlFacets\r\n} = Vue.observable({\r\n facets: { }\r\n});\r\n\r\nexport const WID_REGEX_LOCATOR = /[wW][A-Za-z0-9]{9}/gi;\r\n\r\nexport type UrlFacets = { [key: string]: string[] };\r\n\r\nexport default {\r\n updateFacetValue,\r\n setFacetValues,\r\n clearFacets,\r\n clearNonFacets,\r\n getFacets,\r\n getLastFacet,\r\n isSearching,\r\n getPage,\r\n setPage,\r\n getTerm,\r\n setTerm,\r\n setCategory,\r\n getCategory,\r\n getCategoryId,\r\n setCategoryId,\r\n getCategoryIds,\r\n setCategoryIds,\r\n getSearchFilterId,\r\n setSearchFilterId,\r\n getSearchPriceSortFilter,\r\n setSearchPriceSortFilter,\r\n getSortBy,\r\n setSortBy,\r\n getLocationForPage,\r\n getLocationForTerm,\r\n getCampaignCode,\r\n setCampaignCode,\r\n getShowScore,\r\n setShowScore,\r\n getShowExplanation,\r\n getShowRaw,\r\n setHash,\r\n getHash,\r\n getWidsFromTerm,\r\n clearHash,\r\n cleanupUrl,\r\n setProductGuideMode,\r\n getProductGuideMode,\r\n setProductGuideParams,\r\n setProductGuideSearchTerm,\r\n getProductGuideBrand,\r\n getProductGuideSeries,\r\n getProductGuideModel,\r\n getProductSearchTerm,\r\n getCableGuideCableType,\r\n getCableGuideCableEndA,\r\n getCableGuideCableEndB,\r\n setCableGuideParams,\r\n getQueryParam,\r\n removeQueryParams,\r\n setFacetRanges,\r\n getBids,\r\n getBidsBrand,\r\n getBidsWebCategories\r\n};\r\n\r\n// Resets observable facets for every route-change\r\nrouter.afterEach(updateObservableFacets);\r\n\r\nfunction updateFacetValue(facetId: string, key: string, selected: boolean, updateLastFacet: boolean) {\r\n let facetValues = router.currentRoute.query[facetId];\r\n\r\n // Convert to array for all cases\r\n if (!facetValues) {\r\n facetValues = [];\r\n } else if (!(facetValues instanceof Array)) {\r\n facetValues = [facetValues];\r\n } else {\r\n // Create new array or changes wont be detected\r\n facetValues = [...facetValues];\r\n }\r\n\r\n // Add or remove\r\n if (selected) {\r\n facetValues.push(key);\r\n } else {\r\n facetValues = facetValues.filter(v => v !== key);\r\n }\r\n\r\n setFacetValues(facetId, facetValues as string[], updateLastFacet);\r\n}\r\n\r\nfunction setFacetValues(facetId: string, facetValues: string[], updateLastFacet: boolean) {\r\n // Cleans all facets for this group and set the new ones\r\n const query = { ...router.currentRoute.query };\r\n delete query[facetId];\r\n\r\n if (facetValues.length > 0) {\r\n query[facetId] = facetValues;\r\n }\r\n\r\n if (updateLastFacet) {\r\n query[UrlQueryKey.lastFacetKey] = facetId;\r\n }\r\n\r\n updateQuery(query, [UrlQueryKey.pageKey], true);\r\n}\r\n\r\nfunction setFacetRanges({ facetId, rangeFrom, rangeTo, updateLastFacet }: { facetId: string, rangeFrom: string, rangeTo: string, updateLastFacet: boolean }) {\r\n // Cleans all facets for this group and set the new ones\r\n const query = { ...router.currentRoute.query };\r\n\r\n const facetFrom = 'from_' + facetId;\r\n const facetTo = 'to_' + facetId;\r\n\r\n delete query[facetId];\r\n delete query[facetFrom];\r\n delete query[facetTo];\r\n\r\n if (rangeFrom && rangeTo) {\r\n query[facetFrom] = rangeFrom;\r\n query[facetTo] = rangeTo;\r\n }\r\n\r\n if (updateLastFacet) {\r\n query[UrlQueryKey.lastFacetKey] = facetId;\r\n }\r\n\r\n updateQuery(query, [UrlQueryKey.pageKey], true);\r\n}\r\n\r\nfunction clearFacets() {\r\n // If query is empty, dont do anything\r\n if (Object.keys(router.currentRoute.query).length === 0) {\r\n return;\r\n }\r\n\r\n // Remove all keys related to facets\r\n const query = { ...router.currentRoute.query };\r\n Object\r\n .keys(query)\r\n .filter(key => !nonFacetKeys.includes(key as UrlQueryKey))\r\n .forEach(key => {\r\n delete query[key];\r\n });\r\n\r\n delete query[UrlQueryKey.lastFacetKey];\r\n updateQuery(query, [UrlQueryKey.pageKey]);\r\n}\r\n\r\nfunction clearNonFacets() {\r\n // If query is empty, dont do anything\r\n if (Object.keys(router.currentRoute.query).length === 0) {\r\n return;\r\n }\r\n\r\n // Remove all keys not related to facets\r\n const query = { ...router.currentRoute.query };\r\n Object\r\n .keys(query)\r\n .filter(key => nonFacetKeys.includes(key as UrlQueryKey))\r\n .forEach(key => {\r\n delete query[key];\r\n });\r\n\r\n delete query[UrlQueryKey.lastFacetKey];\r\n updateQuery(query, [UrlQueryKey.pageKey]);\r\n}\r\n\r\nfunction toUrlFacets(query: Dictionary): UrlFacets {\r\n // Ensure all values are arrays\r\n const result: UrlFacets = {};\r\n Object\r\n .keys(query)\r\n .forEach(key => {\r\n result[key] = (query[key] instanceof Array ? query[key] : [query[key]]) as string[];\r\n });\r\n return result;\r\n}\r\n\r\nfunction getFacets(): UrlFacets {\r\n return observableFacets.facets;\r\n}\r\n\r\nfunction getLastFacet(): string | undefined {\r\n return getQueryParam(UrlQueryKey.lastFacetKey);\r\n}\r\n\r\nfunction updateObservableFacets() {\r\n // Clean\r\n Vue.set(observableFacets, 'facets', { });\r\n\r\n // Refill\r\n const query = toUrlFacets({ ...router.currentRoute.query } as Dictionary);\r\n Object\r\n .keys(query)\r\n .filter(key => !nonFacetKeys.includes(key as UrlQueryKey))\r\n .forEach(facetGroup => {\r\n Vue.set(observableFacets.facets, facetGroup, query[facetGroup]);\r\n });\r\n}\r\n\r\nfunction isSearching(route?: Route) {\r\n return !!route?.query?.term;\r\n}\r\n\r\nfunction cleanupUrl(facetKeys: { key: string, activeValueKeys: string[], from?: number, to?: number }[]) {\r\n const query = { ...router.currentRoute.query };\r\n\r\n const keys = facetKeys.map(x => x.key);\r\n\r\n // Make sure query part only contains well known non-facet keys and current facets\r\n const foreignKeys = Object\r\n .keys(router.currentRoute.query)\r\n .filter(key => !nonFacetKeys.includes(key as UrlQueryKey) && !(keys && keys.includes(key)));\r\n\r\n if (foreignKeys.length) {\r\n foreignKeys\r\n .forEach(key => {\r\n delete query[key];\r\n });\r\n }\r\n\r\n // Remove any facet value that is no longer active\r\n facetKeys.forEach(x => {\r\n const facetFrom = 'from_' + x.key;\r\n const facetTo = 'to_' + x.key;\r\n\r\n delete query[x.key];\r\n delete query[facetFrom];\r\n delete query[facetTo];\r\n\r\n if (x.from && x.to) {\r\n query[facetFrom] = x.from.toString();\r\n query[facetTo] = x.to.toString();\r\n } else if (x.activeValueKeys.length > 0) {\r\n query[x.key] = x.activeValueKeys;\r\n }\r\n });\r\n\r\n updateQuery(query);\r\n}\r\n\r\nfunction getTerm(): string | undefined {\r\n return getQueryParam(UrlQueryKey.termKey);\r\n}\r\n\r\nfunction getLocationForTerm(term: string): RawLocation {\r\n const query = { ...router.currentRoute.query };\r\n query[UrlQueryKey.termKey] = term;\r\n\r\n return ({ query });\r\n}\r\n\r\nfunction getLocationForPage(page: number): RawLocation {\r\n const query = { ...router.currentRoute.query };\r\n if (page > 1) {\r\n query[UrlQueryKey.pageKey] = page + '';\r\n } else {\r\n // Avoid ?page=1 as it is the same as no page query\r\n delete query[UrlQueryKey.pageKey];\r\n }\r\n return ({ query });\r\n}\r\n\r\nfunction getPage(): number {\r\n const value = parseInt(getQueryParam(UrlQueryKey.pageKey) || '', 10);\r\n return !value || Number.isNaN(value) ? 1 : value;\r\n}\r\n\r\nfunction getCategory(): string | undefined {\r\n return getQueryParam(UrlQueryKey.categoryKey);\r\n}\r\n\r\nfunction getCategoryId(): string | undefined {\r\n return getQueryParam(UrlQueryKey.categoryIdKey);\r\n}\r\n\r\nfunction getCategoryIds(): string[] {\r\n const categoryIds = router.currentRoute.query[UrlQueryKey.categoryIdsKey] as string[];\r\n return categoryIds instanceof Array ? categoryIds : categoryIds ? [categoryIds] : [];\r\n}\r\n\r\nfunction getSearchFilterId(): number | undefined {\r\n const value = parseInt(getQueryParam(UrlQueryKey.searchFilterKey) || '', 10);\r\n return !value || Number.isNaN(value) ? undefined : value;\r\n}\r\n\r\nfunction setSearchFilterId(value: number) {\r\n setQueryParam(UrlQueryKey.searchFilterKey, value + '');\r\n}\r\n\r\nfunction getSearchPriceSortFilter(): number | undefined {\r\n const value = parseInt(getQueryParam(UrlQueryKey.searchPriceSortKey) || '', 10);\r\n return !value || Number.isNaN(value) ? undefined : value;\r\n}\r\n\r\nfunction setSearchPriceSortFilter(value: number) {\r\n setQueryParam(UrlQueryKey.searchPriceSortKey, value + '');\r\n}\r\n\r\nfunction getCampaignCode(): string | undefined {\r\n return getQueryParam(UrlQueryKey.campaignKey);\r\n}\r\n\r\nfunction setCampaignCode(campaignCode: string): void {\r\n setQueryParam(UrlQueryKey.campaignKey, campaignCode);\r\n}\r\n\r\nfunction getSortBy(): string {\r\n return getQueryParam(UrlQueryKey.sortByKey) as string || '';\r\n}\r\n\r\nfunction setPage(page: number) {\r\n setQueryParam(UrlQueryKey.pageKey, page + '', [], true);\r\n}\r\n\r\nfunction setTerm(term: string, push: boolean = false): void {\r\n setQueryParam(UrlQueryKey.termKey, term, [UrlQueryKey.pageKey, UrlQueryKey.categoryIdKey], push);\r\n}\r\n\r\nfunction setCategory(categoryId: string): void {\r\n setQueryParam(UrlQueryKey.categoryKey, categoryId, [UrlQueryKey.pageKey]);\r\n}\r\n\r\nfunction setCategoryId(categoryId: string): void {\r\n setQueryParam(UrlQueryKey.categoryIdKey, categoryId, [UrlQueryKey.pageKey]);\r\n}\r\n\r\nfunction setCategoryIds(categoryIds: string[], selected: boolean, clearOthers: boolean, pushToHistory: boolean = true): void {\r\n const query = JSON.parse(JSON.stringify(router.currentRoute.query));\r\n let activeCategoryIds = query[UrlQueryKey.categoryIdsKey] as string[];\r\n\r\n if (!activeCategoryIds || !(activeCategoryIds instanceof Array) || clearOthers) {\r\n activeCategoryIds = [];\r\n }\r\n\r\n if (selected) {\r\n activeCategoryIds.push(...categoryIds);\r\n } else {\r\n activeCategoryIds = activeCategoryIds.filter(x => !categoryIds.includes(x));\r\n }\r\n\r\n const uniques = [...new Set(activeCategoryIds)];\r\n\r\n if (uniques.length === 0) {\r\n delete query[UrlQueryKey.categoryIdsKey];\r\n } else {\r\n query[UrlQueryKey.categoryIdsKey] = uniques;\r\n }\r\n\r\n updateQuery(query, [UrlQueryKey.pageKey], pushToHistory);\r\n}\r\n\r\nfunction setSortBy(sortBy: string): void {\r\n setQueryParam(UrlQueryKey.sortByKey, sortBy, [UrlQueryKey.pageKey]);\r\n}\r\n\r\nfunction setProductGuideMode(mode: 'search' | 'step-by-step', push: boolean = false): void {\r\n setQueryParam(UrlQueryKey.productGuideModeKey, mode.toLowerCase(), [], push);\r\n}\r\n\r\nfunction setProductGuideSearchTerm(term: string, push: boolean = false): void {\r\n setQueryParam(UrlQueryKey.productGuideSearchKey, term,\r\n [UrlQueryKey.productGuideBrandKey, UrlQueryKey.productGuideSeriesKey, UrlQueryKey.productGuideModelKey], push);\r\n}\r\n\r\nfunction setProductGuideParams(brand?: string, series?: string, model?: string): void {\r\n const params = {\r\n ...(brand && { [UrlQueryKey.productGuideBrandKey]: brand }),\r\n ...(brand && series && { [UrlQueryKey.productGuideSeriesKey]: series }),\r\n ...(brand && series && model && { [UrlQueryKey.productGuideModelKey]: model })\r\n } as Record;\r\n\r\n const missing = [\r\n UrlQueryKey.productGuideSearchKey,\r\n UrlQueryKey.productGuideBrandKey,\r\n UrlQueryKey.productGuideSeriesKey,\r\n UrlQueryKey.productGuideModelKey\r\n ].filter(x => !Object.keys(params).includes(x));\r\n\r\n setQueryParams(params, missing);\r\n}\r\n\r\nfunction getProductGuideMode(): 'search' | 'step-by-step' | undefined {\r\n return getQueryParam(UrlQueryKey.productGuideModeKey)?.toLowerCase() as 'search' | 'step-by-step';\r\n}\r\n\r\nfunction getProductGuideBrand() {\r\n return getQueryParam(UrlQueryKey.productGuideBrandKey);\r\n}\r\n\r\nfunction getProductGuideSeries() {\r\n return getQueryParam(UrlQueryKey.productGuideSeriesKey);\r\n}\r\n\r\nfunction getProductGuideModel() {\r\n return getQueryParam(UrlQueryKey.productGuideModelKey);\r\n}\r\n\r\nfunction getProductSearchTerm() {\r\n return getQueryParam(UrlQueryKey.productGuideSearchKey);\r\n}\r\n\r\nfunction getCableGuideCableType() {\r\n return getQueryParam(UrlQueryKey.cableGuideCableTypeKey);\r\n}\r\n\r\nfunction getCableGuideCableEndA() {\r\n return getQueryParam(UrlQueryKey.cableGuideCableEndAKey);\r\n}\r\n\r\nfunction getCableGuideCableEndB() {\r\n return getQueryParam(UrlQueryKey.cableGuideCableEndBKey);\r\n}\r\n\r\nfunction setCableGuideParams(cableType?: string, cableEndA?: string, cableEndB?: string): void {\r\n const params = {\r\n ...(cableType && { [UrlQueryKey.cableGuideCableTypeKey]: cableType }),\r\n ...(cableEndA && { [UrlQueryKey.cableGuideCableEndAKey]: cableEndA }),\r\n ...(cableEndA && cableEndB && { [UrlQueryKey.cableGuideCableEndBKey]: cableEndB })\r\n } as Record;\r\n\r\n const missing = [\r\n UrlQueryKey.cableGuideCableTypeKey,\r\n UrlQueryKey.cableGuideCableEndAKey,\r\n UrlQueryKey.cableGuideCableEndBKey\r\n ].filter(x => !Object.keys(params).includes(x));\r\n\r\n setQueryParams(params, missing, true);\r\n}\r\n\r\nfunction getShowScore(): boolean {\r\n const showScore = getQueryParam(UrlQueryKey.showScoreKey) as string || '';\r\n return showScore.toLowerCase() === 'true';\r\n}\r\n\r\nfunction setShowScore(enabled: boolean) {\r\n setQueryParam(UrlQueryKey.showScoreKey, enabled ? 'true' : '');\r\n}\r\n\r\nfunction getShowExplanation(): boolean {\r\n const showScore = getQueryParam(UrlQueryKey.showExplanationKey) as string || '';\r\n return showScore.toLowerCase() === 'true';\r\n}\r\n\r\nfunction getWidsFromTerm(): string[] {\r\n const term = getTerm();\r\n return term?.match(WID_REGEX_LOCATOR) ?? [];\r\n}\r\n\r\nfunction getBids(): string[] {\r\n const bids = router.currentRoute.query[UrlQueryKey.bidsKey] as string[];\r\n return bids instanceof Array ? bids : bids ? [bids] : [];\r\n}\r\n\r\nfunction getBidsBrand(): string[] {\r\n const bids = router.currentRoute.query[UrlQueryKey.bidsBrandKey] as string[];\r\n return bids instanceof Array ? bids : bids ? [bids] : [];\r\n}\r\n\r\nfunction getBidsWebCategories(): string[] {\r\n const bidsWebCategories = router.currentRoute.query[UrlQueryKey.bidsWebCategoriesKey] as string[];\r\n return bidsWebCategories instanceof Array ? bidsWebCategories : bidsWebCategories ? [bidsWebCategories] : [];\r\n}\r\n\r\nfunction getShowRaw(): boolean {\r\n const raw = getQueryParam(UrlQueryKey.showRawKey) as string || '';\r\n return raw.toLowerCase() === 'true';\r\n}\r\n\r\nfunction getQueryParam(param: UrlQueryKey) : string | undefined {\r\n return router.currentRoute.query[param] as string;\r\n}\r\n\r\nfunction setQueryParam(param: UrlQueryKey, value: string | string[], clearOthers: string[] = [], push: boolean = false) {\r\n const query = { ...router.currentRoute.query };\r\n if (!value && !query[param]) return;\r\n if (value === query[param]) return;\r\n if (value) {\r\n query[param] = value;\r\n } else {\r\n delete query[param];\r\n }\r\n updateQuery(query, clearOthers, push);\r\n}\r\n\r\nfunction setQueryParams(params: Record, clearOthers: string[] = [], push: boolean = false) {\r\n const query = { ...router.currentRoute.query };\r\n for (const param of Object.entries(params)) {\r\n const key = param[0];\r\n const val = param[1];\r\n\r\n if (!val && !query[key]) continue;\r\n if (val === query[key]) continue;\r\n if (val) {\r\n query[key] = val;\r\n } else {\r\n delete query[key];\r\n }\r\n }\r\n updateQuery(query, clearOthers, push);\r\n}\r\n\r\nfunction removeQueryParams(...params: K[]) {\r\n const query = { ...router.currentRoute.query };\r\n\r\n for (const param of params) {\r\n delete query[UrlQueryKey[param]];\r\n }\r\n\r\n updateQuery(query);\r\n}\r\n\r\nfunction updateQuery(query: Dictionary, clearOthers: string[] = [], push: boolean = false) {\r\n if (clearOthers.length) {\r\n clearOthers.forEach(key => delete query[key]);\r\n }\r\n\r\n // Only push a change to vue router if a change has actually happenened, fixes \"duplicate navigation\" router errors\r\n if (!isEqual(query, router.currentRoute.query)) {\r\n if (push) {\r\n router.push({ query }).catch(() => {});\r\n } else {\r\n router.replace({ query }).catch(() => {});\r\n }\r\n }\r\n}\r\n\r\nfunction setHash(hash: string) {\r\n router.push({ hash: hash });\r\n}\r\n\r\nfunction getHash() {\r\n return router.currentRoute.hash.slice(1);\r\n}\r\n\r\nfunction clearHash() {\r\n router.push({ hash: undefined });\r\n}\r\n","/**\r\n * All configuration, variables etc. is kept in tailwind.js\r\n * Global variables for use in both plugins, tailwind and less are defined in ./variables.js (this file) and used with the config('variables.variabelName') method provided by tailwind.\r\n *\r\n */\r\n\r\nconst getVariables = tailwind => {\r\n return {};\r\n};\r\n\r\nmodule.exports = getVariables;\r\n","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetPickerRecommendedBrands.vue?vue&type=style&index=0&id=3d10f32b&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetPickerRecommendedBrands.vue?vue&type=style&index=0&id=3d10f32b&lang=less&scoped=true&\"","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'oprema-logo-half-top': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 107.8 21.6',\r\n data: ''\r\n }\r\n})\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileMenu.vue?vue&type=style&index=0&id=4750c252&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileMenu.vue?vue&type=style&index=0&id=4750c252&lang=less&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"font-medium text-12 mt-5 truncate\"},[(_vm.isBidOnPdp)?[_c('div',{staticClass:\"bid-row\"},[_c('span',{staticClass:\"font-bold\"},[_vm._v(_vm._s(_vm._f(\"t\")('Product.Bids.Expires'))+\":\")]),_c('span',[_vm._v(_vm._s(_vm.bidsEndDate))])]),_c('div',{staticClass:\"bid-row\"},[_c('span',{staticClass:\"font-bold\"},[_vm._v(_vm._s(_vm._f(\"t\")('Product.Bids.MaxQuantity'))+\":\")]),_c('span',[_vm._v(_vm._s(_vm.bid.quantity))])]),(_vm.isBidOnPdp)?_c('div',{staticClass:\"bid-row\"},[_c('span',{staticClass:\"font-bold\"},[_vm._v(_vm._s(_vm._f(\"t\")('Product.Details.Bids.AmountLeft'))+\":\")]),_c('span',[_vm._v(_vm._s(_vm.bid.remQty))])]):_vm._e()]:[_c('div',{staticClass:\"bid-grid\"},[_c('p',{staticClass:\"font-bold\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Bids.Expires'))+\": \")]),_c('p',[_vm._v(\" \"+_vm._s(_vm.bidsEndDate)+\" \")]),_c('p',{staticClass:\"font-bold\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Bids.MaxQuantity'))+\": \")]),_c('p',[_vm._v(\" \"+_vm._s(_vm._f(\"localeNumber\")(_vm.bid.quantity))+\" \")]),_c('p',{staticClass:\"font-bold\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.Bids.AmountLeft'))+\": \")]),_c('p',[_vm._v(\" \"+_vm._s(_vm._f(\"localeNumber\")(_vm.bid.remQty))+\" \")])])]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Prop, Component } from 'vue-property-decorator';\r\nimport { BidViewObject } from '@/types/apiServerContract';\r\n\r\n@Component\r\nexport default class ProductTileBid extends Vue {\r\n @Prop({ required: true }) bid!: BidViewObject;\r\n @Prop({ required: false, default: false, type: Boolean }) isBidOnPdp!: boolean;\r\n\r\n private get bidsEndDate() {\r\n return this.bid.endDate?.split(' ')[0] ?? '';\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileBid.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileBid.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductTileBid.vue?vue&type=template&id=c11f18ac&scoped=true&\"\nimport script from \"./ProductTileBid.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductTileBid.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductTileBid.vue?vue&type=style&index=0&id=c11f18ac&lang=less&scoped=true&\"\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 \"c11f18ac\",\n null\n \n)\n\nexport default component.exports","/**\r\n * All 'js-styles' (tailwind plugins) are required and included in ../plugins.js\r\n *\r\n *\r\n * Generated class sample\r\n *\r\n * .o-aspect-ratio-16/9 {\r\n * padding-top: 56.25%;\r\n * position: relative;\r\n * }\r\n *\r\n *\r\n */\r\n\r\nconst _map = require('lodash/map');\r\n\r\nmodule.exports = function(variants) {\r\n return function({ e, addUtilities }) {\r\n const ratios = {\r\n '1/1': [1, 1],\r\n '1/2': [1, 2],\r\n '2/1': [2, 1],\r\n '4/3': [4, 3],\r\n '16/9': [16, 9]\r\n };\r\n\r\n const utilities = _map(ratios, ([width, height], name) => ({\r\n [`.${e(`o-aspect-ratio-${name}`)}`]: {\r\n paddingTop: `${((Math.round(height) / Math.round(width)) * 100).toFixed(4)}%`,\r\n position: 'relative',\r\n height: 0,\r\n borderStyle: 'none',\r\n overflow: 'hidden'\r\n }\r\n }));\r\n\r\n addUtilities(utilities, variants);\r\n };\r\n};\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'ledger': {\r\n width: 32,\r\n height: 29,\r\n viewBox: '0 0 32 29',\r\n data: ''\r\n }\r\n})\r\n","import { debounce } from 'lodash';\r\nimport Deferred from '@/core/async/Deferred';\r\nimport UUID from '@/core/uuid.service';\r\nimport httpService from '@/core/http/http.service';\r\nimport botService from '@/project/site/bot.service';\r\n\r\nexport interface BulkFetchRequest {\r\n promise: Promise,\r\n cancel: () => void\r\n}\r\n\r\nexport default abstract class AbstractBulkFetch {\r\n protected activeListenersById: Map[]> = new Map[]>();\r\n protected debouncedFetch = debounce(this.fetch, this.debounceTime);\r\n\r\n private cancellationKey: string = UUID();\r\n\r\n constructor(protected name: string, protected debounceTime: number = 100, protected upperCased: boolean = false, protected ignoreForBots: boolean = false) {}\r\n\r\n public requestData(itemId: string): BulkFetchRequest {\r\n if (this.upperCased) {\r\n itemId = itemId.toUpperCase(); // Make sure we are case insensitive\r\n }\r\n\r\n const deferred = new Deferred();\r\n\r\n const listeners = this.activeListenersById.get(itemId);\r\n if (listeners) {\r\n listeners.push(deferred);\r\n } else {\r\n this.activeListenersById.set(itemId, [deferred]);\r\n }\r\n\r\n const cancelKey = this.cancellationKey;\r\n\r\n const cancelFunc = (deferred: Deferred, key: string) => {\r\n deferred.reject(null);\r\n httpService.cancelRequest(key);\r\n };\r\n\r\n this.debouncedFetch();\r\n\r\n return {\r\n promise: deferred.promise,\r\n cancel: () => cancelFunc(deferred, cancelKey)\r\n };\r\n }\r\n\r\n private async fetch() {\r\n const listeners = this.activeListenersById;\r\n this.activeListenersById = new Map[]>();\r\n\r\n const cancelKey = this.cancellationKey;\r\n this.cancellationKey = UUID();\r\n\r\n // Some Fetches can be ignore for Bots\r\n if (this.ignoreForBots === true && (botService.uaIsPrerender() || botService.uaIsBot())) {\r\n this.handleResultFromServer(listeners, null, true);\r\n } else {\r\n try {\r\n const ids = Array.from(listeners.keys());\r\n const result = await this.apiCall(ids, cancelKey);\r\n const upperCasedResult = this.upperCased ? this.upperCaseResultKeys(result) : result;\r\n this.handleResultFromServer(listeners, upperCasedResult, !result); // If result is null, we allow an empty response body (just a status 200)\r\n } catch (e) {\r\n this.handleResultFromServer(listeners, null, false);\r\n }\r\n }\r\n }\r\n\r\n private upperCaseResultKeys(result: { [key: string]: T } | null) {\r\n if (!result) return result;\r\n\r\n const o = Object.entries(result).reduce((a, [key, value]) => {\r\n a[key.toUpperCase()] = value;\r\n return a;\r\n }, {});\r\n\r\n return o;\r\n }\r\n\r\n private handleResultFromServer(listeners: Map[]>, result: { [key: string]: T } | null, emptyResult: boolean) {\r\n listeners.forEach((listener: Deferred[], id: string) => {\r\n const data = result && result[id];\r\n if (data) {\r\n listener.forEach(l => l.resolve(data));\r\n } else if (emptyResult) {\r\n listener.forEach(l => l.resolve());\r\n } else {\r\n listener.forEach(l => l.reject(`[${this.name}]: Unable to find a result for id: ${id}`));\r\n }\r\n });\r\n }\r\n\r\n protected abstract apiCall(ids: string[], cancelKey: string): Promise<{ [key: string]: T } | null>;\r\n}\r\n","import { Media } from '@/types/contentServerContract';\r\n\r\nfunction extensionIsGifOrUndefined(file:Media|undefined): 'gif' | undefined {\r\n return file?.extension === 'gif' ? 'gif' : undefined;\r\n}\r\nexport {\r\n extensionIsGifOrUndefined\r\n};\r\n","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainNavigation.vue?vue&type=style&index=0&id=1bc3f33a&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainNavigation.vue?vue&type=style&index=0&id=1bc3f33a&lang=less&scoped=true&\"","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'kickback': {\r\n width: 27,\r\n height: 32,\r\n viewBox: '0 0 27 32',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'pause': {\r\n width: 22,\r\n height: 32,\r\n viewBox: '0 0 22 32',\r\n data: ''\r\n }\r\n})\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryNameAndCount.vue?vue&type=style&index=0&id=4775adb8&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryNameAndCount.vue?vue&type=style&index=0&id=4775adb8&lang=less&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalsContainer.vue?vue&type=style&index=0&id=51cde7e0&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalsContainer.vue?vue&type=style&index=0&id=51cde7e0&lang=less&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResponsiveProductImage.vue?vue&type=style&index=0&id=d4170f4a&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResponsiveProductImage.vue?vue&type=style&index=0&id=d4170f4a&lang=less&scoped=true&\"","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'arrow-down': {\r\n width: 32,\r\n height: 18,\r\n viewBox: '0 0 32 18',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'checkmark': {\r\n width: 32,\r\n height: 24,\r\n viewBox: '0 0 32 24',\r\n data: ''\r\n }\r\n})\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileDetails.vue?vue&type=style&index=0&id=1fb2d892&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileDetails.vue?vue&type=style&index=0&id=1fb2d892&lang=less&scoped=true&\"","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'dankort': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 53 33',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'logo-half-eet': {\r\n width: 164,\r\n height: 63,\r\n viewBox: '0 0 164 63',\r\n data: ''\r\n }\r\n})\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandLogo.vue?vue&type=style&index=0&id=a8345424&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandLogo.vue?vue&type=style&index=0&id=a8345424&lang=less&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CondensedProductList.vue?vue&type=style&index=0&id=567d05ff&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CondensedProductList.vue?vue&type=style&index=0&id=567d05ff&lang=less&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticClass:\"category-name-and-count\"},[_c('span',{staticClass:\"text-left flex-1\"},[(_vm.menuItem.displayLabel)?[_vm._v(\" \"+_vm._s(_vm._f(\"t\")(_vm.menuItem.displayLabel))+\" \")]:[_vm._v(\" \"+_vm._s(_vm.menuItem.name)+\" \")]],2),(_vm.showValue)?_c('AnimateValue',{staticClass:\"text-gray-800 ml-3\",attrs:{\"value\":_vm.value}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop } from 'vue-property-decorator';\r\nimport { MenuItem } from '@/types/apiServerContract';\r\nimport AnimateValue from '@/core/ui-components/AnimateValue.vue';\r\nimport localeNumberFilter from '@/project/filters/localeNumber.filter';\r\n\r\n@Component({\r\n components: { AnimateValue }\r\n})\r\nexport default class CategoryNameAndCount extends Vue {\r\n @Prop({\r\n type: Object,\r\n default: 'string'\r\n })\r\n private menuItem!: MenuItem;\r\n\r\n @Prop({\r\n type: Boolean,\r\n default: false\r\n })\r\n private hideProductCount!: boolean;\r\n\r\n private get value() {\r\n return `(${localeNumberFilter(this.menuItem.productCount)})`;\r\n }\r\n\r\n private get showValue() {\r\n return !this.hideProductCount && typeof this.menuItem.productCount === 'number';\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryNameAndCount.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryNameAndCount.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CategoryNameAndCount.vue?vue&type=template&id=4775adb8&scoped=true&\"\nimport script from \"./CategoryNameAndCount.vue?vue&type=script&lang=ts&\"\nexport * from \"./CategoryNameAndCount.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CategoryNameAndCount.vue?vue&type=style&index=0&id=4775adb8&lang=less&scoped=true&\"\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 \"4775adb8\",\n null\n \n)\n\nexport default component.exports","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'delivery': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 32 21',\r\n data: ''\r\n }\r\n})\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.content)?_c('div',{staticClass:\"flex\"},[(_vm.showImage)?_c('div',{staticClass:\"w-1/3\"},[(_vm.getSmallImage)?_c('img',{directives:[{name:\"on-error\",rawName:\"v-on-error\"}],staticClass:\"rounded-full employee-image\",attrs:{\"srcset\":(_vm.getSmallImage + \" 1x, \" + _vm.getLargeImage + \" 2x\"),\"alt\":_vm.content.displayName}}):_c('div',{staticClass:\"rounded-full employee-image image-placeholder flex items-center justify-center max-w-full\",style:(_vm.missingImageStyle)},[_c('div',{staticClass:\"text-white oprema:text-black text-24 font-semi-bold\"},[_vm._v(\" \"+_vm._s(_vm.content.initials)+\" \")])])]):_vm._e(),_c('div',{staticClass:\"pr-10 text-13\",class:{ 'pl-20 w-2/3': _vm.showImage }},[_c('div',{staticClass:\"text-15 font-semi-bold\",class:_vm.nameLineClass},[_vm._v(\" \"+_vm._s(_vm.content.displayName)+\" \")]),_c('div',{class:_vm.titleLineClass},[_vm._v(\" \"+_vm._s(_vm.content.title)+\" \")]),(_vm.content.directPhone && !_vm.isBot)?_c('div',{class:_vm.textLineClass},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Generic.Phone.DirectPhone.ShortLabel'))+\" \"),_c('a',{attrs:{\"href\":(\"tel:\" + (_vm.content.directPhone)),\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.content.directPhone))])]):_vm._e(),(_vm.content.mobilePhone && !_vm.isBot)?_c('div',{class:_vm.textLineClass},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Generic.Phone.MobilePhone.ShortLabel'))+\" \"),_c('a',{attrs:{\"href\":(\"tel:\" + (_vm.content.mobilePhone)),\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.content.mobilePhone))])]):_vm._e(),(_vm.showEmail)?_c('div',{staticClass:\"break-all\",class:_vm.textLineClass},[_c('a',{staticClass:\"theme-text-linkcolor\",attrs:{\"href\":(\"mailto:\" + (_vm.content.email)),\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.content.email))])]):_vm._e()])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport serverContextService from '@/core/serverContext.service';\r\nimport { EmployeeViewObject } from '@/types/apiServerContract';\r\nimport responsiveProductImageService from '@/project/product/image/responsiveProductImage.service';\r\nimport botService from '@/project/site/bot.service';\r\n\r\n@Component\r\nexport default class EmployeeBlockItem extends Vue {\r\n @Prop()\r\n content!: EmployeeViewObject;\r\n\r\n @Prop({ type: Number, default: 0 })\r\n index!:number;\r\n\r\n @Prop({ type: Boolean, default: true })\r\n showImagePlaceholderIfEmpty!:number;\r\n\r\n @Prop({ type: String, default: 'mb-5' })\r\n textLineClass!:string;\r\n\r\n @Prop({ type: String, default: 'mb-5' })\r\n nameLineClass!:string;\r\n\r\n @Prop({ type: String, default: 'mb-5' })\r\n titleLineClass!:string;\r\n\r\n get missingImageStyle(): Partial {\r\n const colors: string[] = !serverContextService.isOprema ? ['#c5d2e0', '#c9c0b7', '#9dbcb0'] : ['#fffef2', '#abd3df', '#ededed'];\r\n const styles: Partial = {\r\n backgroundColor: colors[this.index % colors.length]\r\n };\r\n return styles;\r\n }\r\n\r\n private get getLargeImage(): string | null {\r\n return this.content && this.content.photoUrl ? responsiveProductImageService.formatImageUrl(this.content.photoUrl, '256') : null;\r\n }\r\n\r\n private get getSmallImage(): string | null {\r\n return this.content && this.content.photoUrl ? responsiveProductImageService.formatImageUrl(this.content.photoUrl, '128') : null;\r\n }\r\n\r\n private get showEmail(): boolean {\r\n return !!(this.content.email && !this.isBot);\r\n }\r\n\r\n private get isBot(): boolean {\r\n return botService.uaIsBot() || botService.uaIsPrerender();\r\n }\r\n\r\n private get showImage():boolean {\r\n return !!(this.showImagePlaceholderIfEmpty || this.getSmallImage);\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmployeeBlockItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmployeeBlockItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EmployeeBlockItem.vue?vue&type=template&id=8bf77aba&scoped=true&\"\nimport script from \"./EmployeeBlockItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./EmployeeBlockItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./EmployeeBlockItem.vue?vue&type=style&index=0&id=8bf77aba&lang=less&scoped=true&\"\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 \"8bf77aba\",\n null\n \n)\n\nexport default component.exports","export const PRICE_FACET_KEY = 'PriceSort';\r\nexport const PRODUCT_SEARCH_COUNT = 30;\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{class:{ 'flex flex-row flex-no-wrap': _vm.hasLeftMenu, 'o-container': _vm.enableContainer }},[(_vm.hasLeftMenu)?_c('breakpoints',[_c('aside',{staticClass:\"flex-shrink-0 pr-20\",class:_vm.leftSideClass,attrs:{\"slot\":\"min-md\"},slot:\"min-md\"},[_vm._t(\"left\")],2)]):_vm._e(),_c('section',{staticClass:\"min-w-0\",class:{ 'flex-1': _vm.hasLeftMenu }},[_vm._t(\"main\")],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class WithSideNavigation extends Vue {\r\n @Prop({ type: Boolean, required: true })\r\n private hasLeftMenu!: boolean;\r\n\r\n @Prop({ type: Boolean, default: true })\r\n private enableContainer!: boolean;\r\n\r\n @Prop({ type: String, default: 'w-2/12' })\r\n private leftSideClass!: string;\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WithSideNavigation.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WithSideNavigation.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WithSideNavigation.vue?vue&type=template&id=7b4e4290&\"\nimport script from \"./WithSideNavigation.vue?vue&type=script&lang=ts&\"\nexport * from \"./WithSideNavigation.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","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'oprema-lyn2': {\r\n width: 18,\r\n height: 18,\r\n viewBox: '0 0 14 15',\r\n data: ''\r\n }\r\n})\r\n","import BusComp from './Bus.vue';\r\n\r\nexport interface Bus {\r\n emit(event: string, ...args: any[]);\r\n\r\n once(event: string, callback: (...args: any[]) => void);\r\n\r\n on(event: string, callback: (...args: any[]) => void);\r\n\r\n off(event: string, callback: (...args: any[]) => void);\r\n}\r\n\r\nexport default new BusComp() as Bus;\r\n","function isEscape(event: KeyboardEvent) {\r\n return event && (event.key === 'Escape' || event.key === 'Esc');\r\n}\r\n\r\nfunction isRightArrow(event: KeyboardEvent) {\r\n return event && (event.key === 'ArrowRight' || event.key === 'Right');\r\n}\r\n\r\nfunction isLeftArrow(event: KeyboardEvent) {\r\n return event && (event.key === 'ArrowLeft' || event.key === 'Left');\r\n}\r\n\r\nexport default {\r\n isEscape,\r\n isRightArrow,\r\n isLeftArrow\r\n};\r\n","import keyboardService from './keyboard.service';\r\n\r\ntype EscEventListener = (() => void);\r\n\r\nclass EscEventService {\r\n private _escStack: Set = new Set();\r\n\r\n public register(listener: EscEventListener) {\r\n this._escStack.add(listener);\r\n }\r\n\r\n public unregister(listener: EscEventListener) {\r\n this._escStack.delete(listener);\r\n }\r\n\r\n private handleEsc(e: KeyboardEvent) {\r\n if (keyboardService.isEscape(e)) {\r\n const lastListener = Array.from(this._escStack).pop();\r\n if (lastListener) {\r\n lastListener();\r\n }\r\n }\r\n }\r\n\r\n constructor() {\r\n document.addEventListener('keyup', (e) => this.handleEsc(e));\r\n }\r\n}\r\n\r\nexport default new EscEventService();\r\n","import { range } from 'lodash';\r\n\r\nexport function pages(currentPage: number, noOfPages: number): number[] {\r\n // return array of pages. -1 signals a '..' char\r\n if (noOfPages <= 4) {\r\n return range(1, noOfPages + 1);\r\n }\r\n const pages: number[] = [];\r\n\r\n pages.push(1);\r\n\r\n if (currentPage <= 4) {\r\n pages.push(2);\r\n } else {\r\n pages.push(-1);\r\n }\r\n\r\n if (currentPage >= 4 && noOfPages - currentPage >= 1) {\r\n pages.push(currentPage - 1);\r\n }\r\n\r\n if (currentPage >= 3 && noOfPages - currentPage >= 2) {\r\n pages.push(currentPage);\r\n }\r\n\r\n if (currentPage >= 2 && noOfPages - currentPage >= 3) {\r\n pages.push(currentPage + 1);\r\n }\r\n\r\n if (noOfPages - currentPage >= 4) {\r\n pages.push(-1);\r\n } else {\r\n pages.push(noOfPages - 1);\r\n }\r\n\r\n pages.push(noOfPages);\r\n return pages;\r\n}\r\n","/* tslint:disable */\r\nrequire('./account-setting');\r\nrequire('./address-book');\r\nrequire('./arrow-down');\r\nrequire('./arrow-left');\r\nrequire('./arrow-right');\r\nrequire('./arrow-thin-left');\r\nrequire('./arrow-thin-right');\r\nrequire('./arrow-up');\r\nrequire('./basket-accept');\r\nrequire('./basket-cancel');\r\nrequire('./basket-minus');\r\nrequire('./basket-plus-small');\r\nrequire('./basket-plus');\r\nrequire('./basket');\r\nrequire('./becomeacustomer');\r\nrequire('./bid');\r\nrequire('./blanket-order');\r\nrequire('./box');\r\nrequire('./burger');\r\nrequire('./calendar');\r\nrequire('./chat');\r\nrequire('./checkmark');\r\nrequire('./clearance');\r\nrequire('./close');\r\nrequire('./creditcard');\r\nrequire('./dankort');\r\nrequire('./delete');\r\nrequire('./delivery');\r\nrequire('./document');\r\nrequire('./download');\r\nrequire('./duplicate');\r\nrequire('./edit');\r\nrequire('./export');\r\nrequire('./fallback');\r\nrequire('./favorite-add');\r\nrequire('./favorite-outline');\r\nrequire('./favorite-remove');\r\nrequire('./favorite');\r\nrequire('./filters');\r\nrequire('./funnel');\r\nrequire('./g-translate');\r\nrequire('./help');\r\nrequire('./impersonate-off');\r\nrequire('./impersonate');\r\nrequire('./info');\r\nrequire('./kickback');\r\nrequire('./language');\r\nrequire('./ledger');\r\nrequire('./limited-supply');\r\nrequire('./link-arrow');\r\nrequire('./login');\r\nrequire('./logo-half-eet');\r\nrequire('./logo-half-top');\r\nrequire('./logo');\r\nrequire('./lyn1');\r\nrequire('./lyn2');\r\nrequire('./lyn3');\r\nrequire('./mail-receipt');\r\nrequire('./mail');\r\nrequire('./map-marker-black');\r\nrequire('./map-marker-blue');\r\nrequire('./map-marker-green');\r\nrequire('./map-marker-turquoise');\r\nrequire('./mastercard');\r\nrequire('./meatballsmenu');\r\nrequire('./minus-big');\r\nrequire('./new-customer');\r\nrequire('./newproduct');\r\nrequire('./notification');\r\nrequire('./oprema-fallback');\r\nrequire('./oprema-logo-half-eet');\r\nrequire('./oprema-logo-half-top');\r\nrequire('./oprema-logo');\r\nrequire('./oprema-lyn1');\r\nrequire('./oprema-lyn2');\r\nrequire('./oprema-lyn3');\r\nrequire('./oprema-splash-new');\r\nrequire('./order-history');\r\nrequire('./pause');\r\nrequire('./pdf');\r\nrequire('./phone');\r\nrequire('./play');\r\nrequire('./plus-big');\r\nrequire('./plus-medium');\r\nrequire('./plus-small');\r\nrequire('./print');\r\nrequire('./productguide');\r\nrequire('./productlist');\r\nrequire('./profile');\r\nrequire('./profiles');\r\nrequire('./quote');\r\nrequire('./requirement-ok');\r\nrequire('./rma');\r\nrequire('./search');\r\nrequire('./splash-campaign-no-icon');\r\nrequire('./splash-campaign');\r\nrequire('./splash-new');\r\nrequire('./stacked');\r\nrequire('./styling');\r\nrequire('./support');\r\nrequire('./tilbud');\r\nrequire('./visa');\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'splash-campaign-no-icon': {\r\n width: 36,\r\n height: 36,\r\n viewBox: '0 0 36 36',\r\n data: ''\r\n }\r\n})\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_vm._t(\"default\"),_vm._t(\"notification\",function(){return [(_vm.copied)?_c('temporary',{staticClass:\"temporary absolute w-full top-0 bg-white\",attrs:{\"mode\":\"fade\",\"delay\":100,\"duration\":1000,\"leave-handler\":_vm.done}},[_c('span',{staticClass:\"flex items-center text-13 text-green-500 font-bold\"},[_c('c-icon',{staticClass:\"mr-2 md:mr-0 lg:mr-2\",attrs:{\"name\":\"checkmark\",\"height\":\"13\",\"width\":\"13\"}}),_c('p',[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Generic.Copied'))+\" \")])],1)]):_vm._e()]},{\"done\":_vm.done,\"copied\":_vm.copied})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\n/* eslint-disable */\r\nimport {Component, Vue} from 'vue-property-decorator';\r\nimport Temporary from '@/core/ui-components/Temporary.vue';\r\n\r\n@Component({\r\n components: {\r\n Temporary\r\n }\r\n})\r\nexport default class CopyText extends Vue {\r\n private copied: boolean = false;\r\n\r\n private mounted() {\r\n const textToCopy = this.$el.querySelector('.copy-text');\r\n\r\n if (textToCopy) {\r\n this.$el.addEventListener('click', event => {\r\n\r\n event.preventDefault();\r\n\r\n let selection = window.getSelection();\r\n let range = document.createRange();\r\n\r\n range.selectNodeContents(textToCopy);\r\n\r\n // Remove all selections before adding the new range\r\n selection?.removeAllRanges();\r\n\r\n // Add selection range\r\n selection?.addRange(range);\r\n\r\n // Trigger copy\r\n document.execCommand('copy');\r\n\r\n // Remove all selections after\r\n selection?.removeAllRanges();\r\n this.copied = true;\r\n });\r\n }\r\n }\r\n\r\n private done() {\r\n this.copied = false;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyText.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyText.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CopyText.vue?vue&type=template&id=33491a13&\"\nimport script from \"./CopyText.vue?vue&type=script&lang=ts&\"\nexport * from \"./CopyText.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/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpinnerElement.vue?vue&type=style&index=0&id=5fe35779&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpinnerElement.vue?vue&type=style&index=0&id=5fe35779&lang=less&scoped=true&\"","import Api from '@/project/http/Api.service';\r\nimport AbstractBulkFetch from '@/core/bulk-fetch/AbstractBulkFetch';\r\nimport { FavoritesItemsListedViewObject } from '@/types/apiServerContract';\r\nimport { keyBy } from 'lodash';\r\n\r\nclass ProductFavoriteItemsService extends AbstractBulkFetch {\r\n async apiCall(itemIds: string[], cancelKey: string): Promise<{ [key: string]: FavoritesItemsListedViewObject }> {\r\n const result = await Api.favorites.isListed(itemIds);\r\n return keyBy(result.listed, 'itemId');\r\n }\r\n}\r\n\r\nexport default new ProductFavoriteItemsService('Product.Favorites');\r\n","import { isDevMode } from '@/core/environmentService';\r\n\r\n// Exposes the state below window.$eetgroupStores$.[your state] when in develop mode.\r\nexport default function makeStoreDebugAccessible(key: string, state: any) {\r\n if (isDevMode()) {\r\n const mainKey = '$eetgroupStores$';\r\n window[mainKey] = window[mainKey] || {};\r\n window[mainKey][key] = state;\r\n }\r\n}\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'becomeacustomer/become-a-customer-success-step2': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 71.8 71.8',\r\n data: ''\r\n }\r\n})\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileBid.vue?vue&type=style&index=0&id=c11f18ac&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileBid.vue?vue&type=style&index=0&id=c11f18ac&lang=less&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.imageUrl)?_c('img',{directives:[{name:\"on-error\",rawName:\"v-on-error\"}],staticClass:\"responsive-icon\",attrs:{\"src\":_vm.imageSrcSets.x1,\"srcset\":((_vm.imageSrcSets.x1) + \" 1x, \" + (_vm.imageSrcSets.x2) + \" 2x\"),\"alt\":_vm.altText}}):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\n@Component({\r\n name: 'ResponsiveIcon'\r\n})\r\nexport default class ResponsiveIcon extends Vue {\r\n @Prop({ type: String, default: '' })\r\n private imageUrl!:string;\r\n\r\n @Prop() altText!:string;\r\n\r\n @Prop({ type: Number, default: 0 })\r\n height!: number;\r\n\r\n // Number or e.g. 'auto'\r\n @Prop({ type: Number, default: 0 })\r\n width!: number;\r\n\r\n @Prop({ type: String, default: 'transparent' })\r\n private bgColor!: string;\r\n\r\n @Prop({ type: Boolean, default: false }) allowUpscale!:boolean;\r\n\r\n @Prop({ type: String, default: 'pad', validator: value => ['crop', 'pad', 'max'].includes(value as string) })\r\n private mode!: string;\r\n\r\n get imageSrcSets() {\r\n if (!(this.imageUrl)) return undefined;\r\n let bgColor = this.normalizedBgColor;\r\n if (bgColor) {\r\n bgColor = bgColor === 'transparent' ? '' : `&bgcolor=${bgColor}`;\r\n }\r\n const upscale = `&upscale=${this.allowUpscale}`;\r\n const mode = `&mode=${this.mode}`;\r\n return {\r\n x1: `${this.imageUrl}?width=${this.width / 2}&height=${this.height / 2}${bgColor}${upscale}${mode}`,\r\n x2: `${this.imageUrl}?width=${this.width}&height=${this.height}${bgColor}${upscale}${mode}`\r\n };\r\n }\r\n\r\n private get normalizedBgColor(): string {\r\n return this.bgColor ? this.bgColor.replace('#', '') : '';\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResponsiveIcon.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResponsiveIcon.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ResponsiveIcon.vue?vue&type=template&id=997fec40&\"\nimport script from \"./ResponsiveIcon.vue?vue&type=script&lang=ts&\"\nexport * from \"./ResponsiveIcon.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ResponsiveIcon.vue?vue&type=style&index=0&lang=less&\"\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","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'duplicate': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 16 16',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'lyn1': {\r\n width: 44,\r\n height: 29,\r\n viewBox: '0 0 44 29',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'language': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 34 32',\r\n data: ''\r\n }\r\n})\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"appear\":\"\",\"enter-active-class\":\"animated fadeIn u-anim-delay-100 u-anim-dur-400\",\"leave-active-class\":\"animated fadeOut u-anim-delay-100 u-anim-dur-350\"}},[(_vm.activeFacets.length || _vm.categoryFacets.length)?_c('div',[_c('transition-group',{staticClass:\"flex flex-row flex-wrap\",attrs:{\"mode\":\"out-in\",\"enter-active-class\":\"animated fadeInLeft u-anim-dur-500\",\"leave-active-class\":\"animated fadeOut u-anim-delay-100 u-anim-dur-350\",\"tag\":\"ul\"}},[_vm._l((_vm.activeFacets),function(facet,index){return _c('li',{key:facet.key + index,staticClass:\"font-medium text-13 rounded-full bg-gray-400 px-20 py-10 mr-10 mt-10 flex flex-row items-center\",on:{\"mouseover\":function($event){return _vm.highlightFacet(facet, true)},\"mouseleave\":function($event){return _vm.highlightFacet(facet, false)}}},[(facet.value)?_c('span',[_vm._v(\" \"+_vm._s(_vm.getFacetValueName(facet.value))+\" \"),(facet.value.productCount >= 0)?_c('span',{staticClass:\"text-gray-800 font-regular\"},[_vm._v(\" (\"+_vm._s(_vm._f(\"localeNumber\")(facet.value.productCount))+\") \")]):_vm._e()]):_c('span',[_vm._v(\" \"+_vm._s(_vm.getFacetName(facet.key))+\" \"),_c('span',[_vm._v(\" \"+_vm._s(facet.from)+\" - \"+_vm._s(facet.to)+\" \"),_c('span',{staticClass:\"text-gray-800 font-regular\"},[_vm._v(\" (\"+_vm._s(_vm._f(\"localeNumber\")(facet.productCount))+\") \")])])]),_c('button',{staticClass:\"close-icon\",on:{\"click\":function($event){return _vm.removeFacet(facet)}}},[_c('c-icon',{staticClass:\"ml-10 mt-1 cursor-pointer\",attrs:{\"height\":\"10\",\"width\":\"10\",\"name\":\"close\"}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm._f(\"t\")('Generic.Remove')))])],1)])}),_vm._l((_vm.categoryFacets),function(category){return _c('li',{key:category.name,staticClass:\"font-medium text-13 rounded-full bg-gray-400 px-20 py-10 mr-10 mt-10 flex flex-row items-center\",on:{\"mouseover\":function($event){return _vm.highlightCategory(category, true)},\"mouseleave\":function($event){return _vm.highlightCategory(category, false)}}},[_c('span',[(category.displayLabel)?[_vm._v(\" \"+_vm._s(_vm._f(\"t\")(category.displayLabel))+\" \")]:[_vm._v(\" \"+_vm._s(category.name)+\" \")],(category.productCount >= 0)?_c('span',{staticClass:\"text-gray-800 font-regular\"},[_vm._v(\" (\"+_vm._s(_vm._f(\"localeNumber\")(category.productCount))+\") \")]):_vm._e()],2),_c('button',{staticClass:\"close-icon\",on:{\"click\":function($event){return _vm.removeCategoryFacet(category)}}},[_c('c-icon',{staticClass:\"ml-10 mt-1 cursor-pointer\",attrs:{\"height\":\"10\",\"width\":\"10\",\"name\":\"close\"}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm._f(\"t\")('Generic.Remove')))])],1)])}),_c('li',{key:\"reset-filter\",staticClass:\"text-13 underline mt-10 cursor-pointer flex items-center\",on:{\"click\":_vm.resetFilter}},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Search.ResetFilters'))+\" \")])],2)],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport urlHelperService from '@/core/urlHelper.service';\r\nimport { FacetValueViewObject, FacetViewObject, MenuItem } from '@/types/apiServerContract';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\n\r\ntype UrlFacet = { key: string, value?: FacetValueViewObject, from?: string, to?: string, productCount?: number }\r\n\r\n@Component\r\nexport default class FacetQuickView extends Vue {\r\n @Prop({ required: true, type: Array })\r\n private facets!: FacetViewObject[];\r\n\r\n @Prop({ type: Array, required: true })\r\n private menuItems!: MenuItem[];\r\n\r\n private activeFacets: UrlFacet[] = []\r\n\r\n private get categoryFacets() {\r\n return this.menuItems.filter(x => x.selected);\r\n }\r\n\r\n // Convert them to an array so i can use them in the template\r\n private synchronizeFacetsWithUrl() {\r\n this.activeFacets = [];\r\n\r\n const urlFacets = urlHelperService.getFacets();\r\n\r\n for (const facetKey in urlFacets) {\r\n const values = urlFacets[facetKey];\r\n\r\n if (facetKey.startsWith('to_')) {\r\n const facetId = facetKey.slice('to_'.length);\r\n const facetFromId = 'from_' + facetId;\r\n\r\n const fromFacet = urlFacets[facetFromId];\r\n if (fromFacet) {\r\n const facet = this.facets.find(x => x.facetId === facetId);\r\n if (facet) {\r\n const rangeFrom = parseFloat(fromFacet[0]);\r\n const rangeTo = parseFloat(values[0]);\r\n const productCount = facet.values\r\n .map(x => ({\r\n ...x,\r\n nValue: parseFloat(x.key)\r\n }))\r\n .filter(x => !isNaN(x.nValue) && x.nValue >= rangeFrom && x.nValue <= rangeTo)\r\n .reduce((total, value) => {\r\n return total + value.productCount;\r\n }, 0);\r\n\r\n this.activeFacets.push({ key: facet.facetId, from: fromFacet[0], to: values[0], productCount: productCount });\r\n }\r\n }\r\n\r\n continue;\r\n }\r\n\r\n for (const value of values) {\r\n const facet = this.facets.find(x => x.facetId === facetKey);\r\n if (!facet) continue;\r\n const facetValue = facet.values.find(x => x.key === value);\r\n if (!facetValue) continue;\r\n this.activeFacets.push({ key: facet.facetId, value: facetValue });\r\n }\r\n }\r\n }\r\n\r\n private highlightFacet(facet: UrlFacet, active: boolean) {\r\n const activeFacet = this.facets.find(x => x.facetId === facet.key);\r\n if (activeFacet) {\r\n activeFacet.highlight = active;\r\n }\r\n }\r\n\r\n private highlightCategory(menuItem: MenuItem, active: boolean) {\r\n menuItem.highlight = active;\r\n }\r\n\r\n private removeFacet(facet: UrlFacet) {\r\n if (facet.value) {\r\n urlHelperService.updateFacetValue(facet.key, facet.value.key, false, facet.value.isFacet);\r\n } else if (facet.from && facet.to) {\r\n urlHelperService.setFacetRanges({ facetId: facet.key, rangeFrom: '', rangeTo: '', updateLastFacet: true });\r\n }\r\n }\r\n\r\n private removeCategoryFacet(menuItem: MenuItem) {\r\n menuItem.selected = false;\r\n urlHelperService.setCategoryIds(menuItem.categoryIds, false, false);\r\n }\r\n\r\n private resetFilter() {\r\n urlHelperService.clearFacets();\r\n urlHelperService.removeQueryParams('categoryIdsKey');\r\n }\r\n\r\n private getFacetValueName(value: FacetValueViewObject) {\r\n if (dictionaryService.exists(value.displayLabel)) {\r\n return dictionaryService.get(value.displayLabel);\r\n }\r\n\r\n return dictionaryService.translate(value.displayName);\r\n }\r\n\r\n private getFacetName(key: string) {\r\n const facet = this.facets.find(x => x.facetId === key);\r\n if (facet) {\r\n if (facet.facetDisplayLabel && dictionaryService.exists(facet.facetDisplayLabel)) {\r\n return dictionaryService.get(facet.facetDisplayLabel);\r\n }\r\n\r\n return facet.facetDisplayName;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n get urlFacets() {\r\n return urlHelperService.getFacets();\r\n }\r\n\r\n @Watch('urlFacets')\r\n private onUrlFacetsChange() {\r\n this.synchronizeFacetsWithUrl();\r\n }\r\n\r\n @Watch('facets')\r\n private onFacetsChange() {\r\n this.synchronizeFacetsWithUrl();\r\n }\r\n\r\n mounted() {\r\n this.synchronizeFacetsWithUrl();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetQuickView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetQuickView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FacetQuickView.vue?vue&type=template&id=27d133c0&scoped=true&\"\nimport script from \"./FacetQuickView.vue?vue&type=script&lang=ts&\"\nexport * from \"./FacetQuickView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FacetQuickView.vue?vue&type=style&index=0&id=27d133c0&lang=less&scoped=true&\"\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 \"27d133c0\",\n null\n \n)\n\nexport default component.exports","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'pdf': {\r\n width: 26,\r\n height: 32,\r\n viewBox: '0 0 26 32',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'favorite': {\r\n width: 32,\r\n height: 30,\r\n viewBox: '0 0 32 30',\r\n data: ''\r\n }\r\n})\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{class:{'flex flex-auto h-full justify-end': (_vm.showQuantityUpdateControls || _vm.showEditInBasketControls)}},[_c('transition',{attrs:{\"name\":\"basket\",\"mode\":\"out-in\"}},[(_vm.showQuantityUpdateControls)?_c('div',{key:\"product-in-basket\",ref:\"adjustWrapper\",staticClass:\"h-full flex items-center relative\"},[(_vm.justPlacedInBasket)?_c('temporary',{staticClass:\"temporary\",attrs:{\"mode\":\"center\",\"delay\":100,\"duration\":2000}},[_c('div',{staticClass:\"flex items-center text-13 text-green-500 font-bold pr-10\"},[_c('c-icon',{staticClass:\"mr-2 md:mr-0 lg:mr-2\",attrs:{\"name\":\"checkmark\",\"height\":\"13\",\"width\":\"13\"}}),_c('p',{staticClass:\"md:hidden lg:block\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.AddedToBasket'))+\" \")])],1)]):_vm._e(),_c('div',{staticClass:\"flex items-center rounded-full\",class:{ 'h-full bg-gray-400 md:bg-white': _vm.tileMode, 'h-full bg-gray-400': _vm.tileBasketMode || _vm.tileCondensedMode, 'bg-white h-40': _vm.detailedMode }},[_c('MinusCancel',{staticClass:\"cursor-pointer minus-cancel\",class:{ 'pointer-events-none': _vm.disabled, 'disabled': _vm.minusDisabled },attrs:{\"mode\":_vm.editMode ? 'cancel' : 'minus',\"tabindex\":\"0\"},on:{\"minus-click\":function($event){return _vm.deltaAdjustQuantity(-1)},\"cancel-click\":_vm.done}}),(!_vm.disabled)?_c('input',{directives:[{name:\"prohibit-zoom\",rawName:\"v-prohibit-zoom\"},{name:\"whole-numbers-only\",rawName:\"v-whole-numbers-only\"}],ref:\"inputElem\",staticClass:\"input-field flex-grow flex-shrink font-semi-bold text-center min-w-0 rounded-full outline-none\",class:{ 'bg-gray-400 md:bg-white': _vm.tileMode, 'bg-gray-400': _vm.tileBasketMode || _vm.tileCondensedMode, 'bg-white': _vm.detailedMode },attrs:{\"type\":\"tel\",\"pattern\":\"[0-9]{1,5}\",\"min\":\"1\",\"max\":_vm.maxValue,\"maxlength\":\"5\",\"aria-label\":_vm._f(\"t\")('Product.AddToBasket.EditQuantity')},domProps:{\"value\":_vm.quantity},on:{\"focus\":_vm.inputFocus,\"blur\":_vm.inputBlur,\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.inputEnterEscKeyUp.apply(null, arguments)}}}):(_vm.disabled)?_c('div',{staticClass:\"disabled disabled-quantity input-field border border-grey-dark p-5 flex-grow flex-shrink text-center min-w-0\"},[_vm._v(\" \"+_vm._s(_vm.quantity)+\" \")]):_vm._e(),_c('PlusAccept',{staticClass:\"cursor-pointer plus-accept outline-none\",class:{'pointer-events-none disabled': _vm.disabled || _vm.plusDisabled, 'disabled': _vm.isAtMax || _vm.plusDisabled},attrs:{\"mode\":_vm.editMode ? 'accept' : 'plus',\"tabindex\":\"0\"},on:{\"plus-click\":function($event){return _vm.deltaAdjustQuantity(1)},\"accept-click\":_vm.setQuantity}})],1)],1):(_vm.showEditInBasketControls)?_c('div',{staticClass:\"h-full flex items-center relative\"},[_c('v-popover',{attrs:{\"trigger\":\"click hover\",\"auto-hide\":\"\",\"placement\":\"top\"}},[_vm._t(\"default\",function(){return [_c('div',{staticClass:\"flex\",class:{'h-40': _vm.detailedMode }},[_c('div',[_c('div',{staticClass:\"flex items-center justify-center disabled disabled-quantity w-40 text-center min-w-0 rounded-full mr-10\",class:{'bg-gray-400 md:bg-white h-34': _vm.tileMode, 'bg-gray-400 h-36 md:h-40': _vm.tileBasketMode || _vm.tileCondensedMode, 'bg-gray-400 md:bg-white h-40': _vm.detailedMode}},[_vm._v(\" \"+_vm._s(_vm.quantity)+\" \")])]),_c('CallToAction',{key:\"default-add-to-basket\",staticClass:\"cta--green add-to-basket--button\",class:{ 'cta--basket': _vm.tileMode, 'cta--details': _vm.detailedMode},on:{\"click\":function($event){return _vm.gotoBasket()}}},[_c('div',[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.AddToBasket.EditQuantity'))+\" \")])])],1)]}),_c('template',{slot:\"popover\"},[_c('div',{staticClass:\"text-12 duplicate-lineitem-popover\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.AddTobasket.DuplicateLineItemDescription'))+\" \")])])],2)],1):_c('div',{staticClass:\"flex w-full\",class:{ 'justify-end': _vm.tileMode || _vm.tileCondensedMode, 'justify-center md:justify-end h-40': _vm.detailedMode }},[_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.initialValue),expression:\"initialValue\"},{name:\"prohibit-zoom\",rawName:\"v-prohibit-zoom\"},{name:\"whole-numbers-only\",rawName:\"v-whole-numbers-only\"}],staticClass:\"font-semi-bold outline-none\",class:{ 'add-to-basket--input bg-gray-400 md:bg-white': _vm.tileMode, 'add-to-basket--input bg-gray-400': _vm.tileBasketMode || _vm.tileCondensedMode, 'add-to-basket--details bg-white': _vm.detailedMode },attrs:{\"type\":\"tel\",\"pattern\":\"[0-9]{1,5}\",\"min\":\"1\",\"max\":_vm.maxValue,\"maxlength\":\"5\",\"aria-label\":_vm._f(\"t\")('Product.AddToBasket')},domProps:{\"value\":(_vm.initialValue)},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.addProduct()},\"input\":function($event){if($event.target.composing){ return; }_vm.initialValue=$event.target.value}}})]),_c('div',{staticClass:\"ml-15 md:ml-10\",class:{ 'md:ml-5 xl:ml-15': _vm.detailedMode, 'flex-grow': !_vm.detailedMode }},[_c('CallToAction',{key:\"default-add-to-basket\",staticClass:\"cta--green add-to-basket--button\",class:{ 'cta--basket': _vm.tileMode, 'cta--details': _vm.detailedMode},attrs:{\"icon\":\"basket\",\"disabled\":_vm.disabled},on:{\"click\":function($event){return _vm.addProduct()}}},[(_vm.tileCondensedMode)?_c('div',[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.AddToBasketMobile'))+\" \")]):_c('breakpoints',[_c('div',{attrs:{\"slot\":_vm.mobileSlots},slot:_vm.mobileSlots},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.AddToBasketMobile'))+\" \")]),_c('div',{attrs:{\"slot\":_vm.slots},slot:_vm.slots},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.AddToBasket'))+\" \")])])],1)],1)])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function select(elem) {\r\n elem.select();\r\n/*\r\n CHE: disable for now - the select works on IOS but causes it to set handles and popupmenu\r\n\r\n if (navigator.userAgent.match(/ipad|ipod|iphone/i)) {\r\n\r\n // save current contentEditable/readOnly status\r\n const readOnly = elem.readOnly;\r\n\r\n // convert to editable with readonly to stop iOS keyboard opening\r\n elem.readOnly = true;\r\n\r\n // create a selectable range\r\n const range = document.createRange();\r\n range.selectNodeContents(elem);\r\n\r\n // select the range\r\n const selection = window.getSelection();\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n elem.setSelectionRange(0, 999999);\r\n\r\n // restore contentEditable/readOnly to original state\r\n elem.readOnly = readOnly;\r\n\r\n } else {\r\n elem.select();\r\n }\r\n*/\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport basketService from './basket.service';\r\nimport MinusCancel from './MinusCancel.vue';\r\nimport PlusAccept from './PlusAccept.vue';\r\nimport select from '@/core/form/select.service';\r\nimport Temporary from '@/core/ui-components/Temporary.vue';\r\nimport { debounce } from 'lodash';\r\nimport { PageName } from '@/router/routes/constants';\r\n\r\n@Component({\r\n components: { PlusAccept, MinusCancel, Temporary }\r\n})\r\nexport default class AddToBasket extends Vue {\r\n private editMode = false;\r\n private initialValue: string = '1';\r\n private justPlacedInBasket: boolean = false;\r\n private trackingCurrentDelta = 0;\r\n private debouncedChangeTracking = debounce(this.doChangeTracking, 1000);\r\n\r\n @Prop({ required: true, type: String })\r\n private productWid!: string;\r\n\r\n @Prop({ required: false, type: String })\r\n private lineItemId!: string | undefined;\r\n\r\n @Prop(Number)\r\n private bidId!: number | undefined;\r\n\r\n @Prop(String)\r\n private quoteId!: string | undefined;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private allowDelete!: boolean;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private disabled!: boolean;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private updateLineItemPrices!: boolean;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private updateDeliveryPrice!: boolean;\r\n\r\n @Prop({ type: Number, default: 99999 })\r\n private maxValue!: number;\r\n\r\n @Prop({ type: String, default: 'tile', validator: (value: string) => ['tile', 'tile-basket', 'tile-condensed', 'detailed'].includes(value) })\r\n private styleMode!: 'tile' | 'tile-basket' | 'tile-condensed' | 'detailed';\r\n\r\n private get mobileSlots() {\r\n return this.styleMode === 'tile' ? 'max-md' : 'md';\r\n }\r\n\r\n private get slots() {\r\n return this.styleMode === 'tile' ? 'min-md' : 'xs,sm,lg,xl';\r\n }\r\n\r\n private get minusDisabled(): boolean {\r\n return this.disabled || (!this.allowDelete && this.quantity <= 1 && !this.editMode);\r\n }\r\n\r\n private get plusDisabled(): boolean {\r\n return this.disabled;\r\n }\r\n\r\n private get quantity(): number {\r\n // Normally get value from store, but keep local changes while in editmode\r\n if (!this.editMode) {\r\n if (this.lineItemId) {\r\n return basketService.getQuantity(this.lineItemId, this.bidId, this.quoteId);\r\n } else {\r\n return basketService.getQuantityByWid(this.productWid, this.bidId, this.quoteId);\r\n }\r\n } else {\r\n return parseInt(this.$refs.inputElem.value, 10);\r\n }\r\n }\r\n\r\n private get tileMode() : boolean {\r\n return this.styleMode === 'tile';\r\n }\r\n\r\n private get tileBasketMode() : boolean {\r\n return this.styleMode === 'tile-basket';\r\n }\r\n\r\n private get tileCondensedMode() : boolean {\r\n return this.styleMode === 'tile-condensed';\r\n }\r\n\r\n private get detailedMode() : boolean {\r\n return this.styleMode === 'detailed';\r\n }\r\n\r\n private inputFocus() {\r\n this.editMode = true;\r\n select(this.$refs.inputElem);\r\n }\r\n\r\n private inputEnterEscKeyUp(event) {\r\n if (event.key === 'Enter') {\r\n this.setQuantity();\r\n }\r\n this.$refs.inputElem.blur();\r\n this.done();\r\n }\r\n\r\n private done() {\r\n this.editMode = false;\r\n }\r\n\r\n private inputBlur() {\r\n // Need to delay until a possible click on accept/cancel arrives. This comes after blur from inputfield...\r\n setTimeout(() => {\r\n if (this.editMode) {\r\n // All blur events exept cancel will set quantity\r\n this.setQuantity();\r\n this.done();\r\n }\r\n }, 250);\r\n }\r\n\r\n private isAllowedValue(val: number): boolean {\r\n return val >= (this.allowDelete ? 0 : 1) && !this.wouldBeOverMax(val);\r\n }\r\n\r\n private wouldBeOverMax(val: number): boolean {\r\n return val > this.maxValue;\r\n }\r\n\r\n private get isAtMax() {\r\n return this.quantity === this.maxValue;\r\n }\r\n\r\n private setQuantity() {\r\n let value = parseInt(this.$refs.inputElem.value, 10);\r\n if (!isNaN(value)) {\r\n if (value > this.maxValue) {\r\n value = this.maxValue;\r\n }\r\n\r\n if (!isNaN(value) && this.isAllowedValue(value)) {\r\n if (this.lineItemId) {\r\n basketService.setQuantity(this.lineItemId, this.bidId, this.quoteId, value, this.updateLineItemPrices, this.updateDeliveryPrice);\r\n } else {\r\n basketService.setQuantityByWid(this.productWid, this.bidId, this.quoteId, value, this.updateLineItemPrices, this.updateDeliveryPrice);\r\n }\r\n this.emitQuantityChange(value - this.quantity);\r\n }\r\n }\r\n\r\n this.done();\r\n }\r\n\r\n private deltaAdjustQuantity(delta: number) {\r\n const eventualValue = this.quantity + delta;\r\n if (!this.isAllowedValue(eventualValue)) {\r\n return;\r\n }\r\n\r\n if (this.lineItemId) {\r\n basketService.deltaUpdateQuantity(this.lineItemId, this.bidId, this.quoteId, delta, this.updateLineItemPrices, this.updateDeliveryPrice);\r\n } else {\r\n basketService.deltaUpdateQuantityByWid(this.productWid, this.bidId, this.quoteId, delta, this.updateLineItemPrices, this.updateDeliveryPrice);\r\n }\r\n this.emitQuantityChange(delta);\r\n }\r\n\r\n private addProduct() {\r\n let value = parseInt(this.initialValue, 10);\r\n if (value > this.maxValue) {\r\n value = this.maxValue;\r\n }\r\n\r\n basketService.addProduct(this.productWid, this.bidId, this.quoteId, value, this.updateLineItemPrices, this.updateDeliveryPrice);\r\n this.emitQuantityChange(value);\r\n }\r\n\r\n private emitQuantityChange(deltaQuantity: number) {\r\n this.trackingCurrentDelta += deltaQuantity;\r\n this.debouncedChangeTracking();\r\n }\r\n\r\n private doChangeTracking() {\r\n if (this.trackingCurrentDelta === 0) return;\r\n const quantityByWid = basketService.getQuantityByWid(this.productWid, this.bidId, this.quoteId);\r\n this.$emit('change-quantity', this.trackingCurrentDelta, quantityByWid);\r\n this.trackingCurrentDelta = 0;\r\n }\r\n\r\n private get showQuantityUpdateControls(): boolean {\r\n const isProductInBasket = basketService.isProductInBasket(this.productWid, this.bidId, this.quoteId);\r\n const isProductDuplicated = basketService.isProductDuplicated(this.productWid, this.bidId, this.quoteId);\r\n return (isProductInBasket && !isProductDuplicated) || this.lineItemId !== undefined;\r\n }\r\n\r\n private get showEditInBasketControls(): boolean {\r\n const isProductInBasket = basketService.isProductInBasket(this.productWid, this.bidId, this.quoteId);\r\n const isProductDuplicated = basketService.isProductDuplicated(this.productWid, this.bidId, this.quoteId);\r\n return isProductInBasket && isProductDuplicated && this.lineItemId === undefined;\r\n }\r\n\r\n @Watch('isProductInBasket')\r\n onProductBasketStatusChange(isInBasket: boolean) {\r\n if (isInBasket) {\r\n this.justPlacedInBasket = true;\r\n } else {\r\n this.justPlacedInBasket = false;\r\n }\r\n }\r\n\r\n private gotoBasket() {\r\n this.$router.push({ name: PageName.BASKET });\r\n }\r\n\r\n public $refs!: {\r\n // Just to have type...\r\n inputElem: HTMLInputElement;\r\n adjustWrapper: HTMLDivElement;\r\n };\r\n}\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddToBasket.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddToBasket.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AddToBasket.vue?vue&type=template&id=e01eac92&scoped=true&\"\nimport script from \"./AddToBasket.vue?vue&type=script&lang=ts&\"\nexport * from \"./AddToBasket.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AddToBasket.vue?vue&type=style&index=0&id=e01eac92&lang=less&scoped=true&\"\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 \"e01eac92\",\n null\n \n)\n\nexport default component.exports","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'address-book': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 27 32',\r\n data: ''\r\n }\r\n})\r\n","export enum ClientMessageType {\r\n Error = 0,\r\n Warning = 1,\r\n Info = 2\r\n}\r\n\r\nexport interface ClientMessage {\r\n message: string,\r\n messageType: ClientMessageType,\r\n errorId: string\r\n}\r\n\r\nexport interface ClientMessageWithError {\r\n errorId: string,\r\n messages: ClientMessage[]\r\n}\r\n\r\nexport const ValidationErrorEventKey = 'ValidationError';\r\nexport const GeneralErrorEventKey = 'GeneralError';\r\n\r\nexport interface ValidationErrorEvent {\r\n errorId: string;\r\n messagesId: string;\r\n messages: ClientMessage[];\r\n handled: () => void;\r\n}\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'mastercard': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 39 32',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'basket-plus-small': {\r\n width: 10,\r\n height: 10,\r\n viewBox: '0 0 10 10',\r\n data: ''\r\n }\r\n})\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.asHtml)?_c('div',[_c('p',{class:{ 'inline mr-3': _vm.contentOverflowing },domProps:{\"innerHTML\":_vm._s(_vm.absoluteContent)}}),(_vm.contentOverflowing)?_vm._t(\"default\"):_vm._e()],2):_c('p',[_vm._v(\" \"+_vm._s(_vm.absoluteContent)+\" \"),(_vm.contentOverflowing)?_vm._t(\"default\"):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class SmartParagraph extends Vue {\r\n @Prop({ required: true, type: String }) content!: string;\r\n @Prop({ type: Boolean, default: false }) asHtml!: string;\r\n @Prop({ default: 100, type: Number }) maxCharacters!: number;\r\n @Prop({ type: String, default: '...' }) overflowIndicator!: string;\r\n\r\n private get absoluteContent() {\r\n const content = this.content.substring(0, this.maxCharacters);\r\n return this.contentOverflowing ? content + this.overflowIndicator : content;\r\n }\r\n\r\n private get contentOverflowing() {\r\n return this.content.length > this.maxCharacters;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SmartParagraph.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SmartParagraph.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SmartParagraph.vue?vue&type=template&id=686ecc39&\"\nimport script from \"./SmartParagraph.vue?vue&type=script&lang=ts&\"\nexport * from \"./SmartParagraph.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","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'print': {\r\n width: 32,\r\n height: 32,\r\n viewBox: '0 0 32 32',\r\n data: ''\r\n }\r\n})\r\n","import { UrlQueryKey } from '@/core/urlHelper.service';\r\nimport { ProductGuideConfiguration } from '@/types/apiServerContract';\r\n\r\ntype ProductGuideName = 'productGuide' | 'dellGuide' | 'lampGuide' | 'memoryGuide' | 'mobileGuide' | 'posGuide' | 'samsungGuide';\r\n\r\nexport enum ProductGuideModes {\r\n StepByStep = 'Step-by-step',\r\n Search = 'Search'\r\n}\r\n\r\nexport enum ProductGuideActions {\r\n selectBrand = 'selectBrand',\r\n selectSeries = 'selectSeries',\r\n selectModel = 'selectModel'\r\n}\r\n\r\ninterface ProductGuideTracking {\r\n guideMode: ProductGuideModes,\r\n action: ProductGuideActions,\r\n actionValue: string | undefined\r\n}\r\n\r\nexport interface ProductGuideTrackingInformation extends ProductGuideTracking {\r\n guideId: string\r\n}\r\nexport enum ProductGuideType {\r\n 'All'= 'All',\r\n 'Cable' = 'Cable'\r\n}\r\nexport enum ProductGuideTheme {\r\n 'Blue'= 'Blue',\r\n 'Black' = 'Black',\r\n 'Red' = 'Red',\r\n 'Green' = 'Green'\r\n}\r\ninterface ProductGuideTrackingDataModel extends ProductGuideTracking {\r\n event: string,\r\n guideName: ProductGuideName,\r\n actionValue: string\r\n}\r\nexport interface ProductGuideConfigurationFrontendType extends ProductGuideConfiguration {\r\n type: ProductGuideType,\r\n startPage: 'search' | 'step-by-step',\r\n theme: ProductGuideTheme,\r\n externalId: string,\r\n name: string,\r\n fullName: string,\r\n email: string,\r\n websiteUrl: string,\r\n allowedBrands:string[]\r\n}\r\n\r\nfunction getGuideNameById(guideId: string): ProductGuideName | null {\r\n switch (guideId) {\r\n case 'All':\r\n return 'productGuide';\r\n case 'Dell':\r\n return 'dellGuide';\r\n case 'Lamp1':\r\n return 'lampGuide';\r\n case 'mm1582d':\r\n return 'memoryGuide';\r\n case 'Mobile':\r\n return 'mobileGuide';\r\n case 'Pos':\r\n return 'posGuide';\r\n case 'Samsung':\r\n return 'samsungGuide';\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nexport function generateProductGuideTrackingData(model: ProductGuideTrackingInformation): ProductGuideTrackingDataModel | void {\r\n if (!model.actionValue) return;\r\n const guideNameFromId = getGuideNameById(model.guideId);\r\n\r\n if (!guideNameFromId) return;\r\n return {\r\n event: 'guide.selection',\r\n guideName: guideNameFromId,\r\n guideMode: model.guideMode,\r\n action: model.action,\r\n actionValue: model.actionValue\r\n };\r\n}\r\nexport function baseIframeUrl() {\r\n const origin = document.location.origin;\r\n return new URL(`${origin}${window.servercontext.url}/external-guides/productguide`);\r\n}\r\nexport function generateIframeURLFromConfiguration(configuration: ProductGuideConfigurationFrontendType, iframe?: HTMLIFrameElement): string {\r\n const url = baseIframeUrl();\r\n\r\n if (iframe && iframe.contentWindow) {\r\n const currentParams = new URL(iframe.contentWindow.location.href).searchParams;\r\n currentParams.forEach((v, k) => {\r\n url.searchParams.append(k, v);\r\n });\r\n }\r\n\r\n url.searchParams.set(UrlQueryKey.productGuideGuideId, configuration.type);\r\n\r\n const isProductGuide = configuration.type === 'All';\r\n if (isProductGuide) {\r\n url.searchParams.set(UrlQueryKey.productGuideModeKey, configuration.startPage);\r\n }\r\n\r\n if (configuration.language) {\r\n url.searchParams.set('language', configuration.language);\r\n } else {\r\n url.searchParams.delete('language');\r\n }\r\n\r\n if (configuration.theme) {\r\n const theme = configuration.invertTheme ? `invert-${configuration.theme}` : configuration.theme;\r\n url.searchParams.set(UrlQueryKey.theme, theme.toLowerCase());\r\n } else {\r\n url.searchParams.delete(UrlQueryKey.theme);\r\n }\r\n\r\n if (configuration.hideStock) {\r\n url.searchParams.set(UrlQueryKey.hideStock, 'true');\r\n } else {\r\n url.searchParams.delete(UrlQueryKey.hideStock);\r\n }\r\n\r\n if (!configuration.showFacets) {\r\n url.searchParams.set(UrlQueryKey.hideFacets, 'true');\r\n } else {\r\n url.searchParams.delete(UrlQueryKey.hideFacets);\r\n }\r\n\r\n if (configuration.externalStylesheet) {\r\n url.searchParams.set('css', configuration.externalStylesheet);\r\n } else {\r\n url.searchParams.delete('css');\r\n }\r\n\r\n if (configuration.externalProductLink) {\r\n url.searchParams.set('buttonLink', configuration.externalProductLink);\r\n } else {\r\n url.searchParams.delete('buttonLink');\r\n }\r\n\r\n if (configuration.externalProductLinkText) {\r\n url.searchParams.set('buttonText', configuration.externalProductLinkText);\r\n } else {\r\n url.searchParams.delete('buttonText');\r\n }\r\n\r\n if (configuration.externalId) {\r\n url.searchParams.set('externalId', configuration.externalId);\r\n } else {\r\n url.searchParams.delete('externalId');\r\n }\r\n\r\n return url.toString();\r\n}\r\nexport function finalIframeUrl(configuration: ProductGuideConfigurationFrontendType):string {\r\n const url = baseIframeUrl();\r\n\r\n if (configuration.externalId) {\r\n url.searchParams.set('externalId', configuration.externalId);\r\n }\r\n\r\n url.searchParams.set(UrlQueryKey.productGuideGuideId, configuration.type.toLowerCase());\r\n\r\n return url.toString();\r\n}\r\nexport function iframeHtml(url): string {\r\n return ``;\r\n}\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'oprema-lyn3': {\r\n width: 18,\r\n height: 16,\r\n viewBox: '0 0 14 15',\r\n data: ''\r\n }\r\n})\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileCart.vue?vue&type=style&index=0&id=37584789&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileCart.vue?vue&type=style&index=0&id=37584789&lang=less&scoped=true&\"","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'play': {\r\n width: 27,\r\n height: 32,\r\n viewBox: '0 0 27 32',\r\n data: ''\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputSelect.vue?vue&type=style&index=0&id=7cc45f68&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputSelect.vue?vue&type=style&index=0&id=7cc45f68&lang=less&scoped=true&\"","export default function UUID() {\r\n let nbr;\r\n let randStr = '';\r\n do {\r\n randStr += (nbr = Math.random()).toString(16).substr(3, 6);\r\n } while (randStr.length < 30);\r\n return (\r\n randStr.substr(0, 8) + '-' +\r\n randStr.substr(8, 4) + '-4' +\r\n randStr.substr(12, 3) + '-' +\r\n ((nbr * 4 | 0) + 8).toString(16) + // [89ab]\r\n randStr.substr(15, 3) + '-' +\r\n randStr.substr(18, 12)\r\n );\r\n}\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputText.vue?vue&type=style&index=0&id=6be86a63&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputText.vue?vue&type=style&index=0&id=6be86a63&lang=less&scoped=true&\"","module.exports = function(variants = ['responsive']) {\r\n return function({ addUtilities }) {\r\n const utilities = {\r\n '.xy-center': {\r\n position: 'absolute',\r\n left: '50%',\r\n top: '50%',\r\n transform: 'translate(-50%,-50%)'\r\n },\r\n '.x-center': {\r\n position: 'absolute',\r\n left: '50%',\r\n transform: 'translateX(-50%)'\r\n },\r\n '.y-center': {\r\n position: 'absolute',\r\n top: '50%',\r\n transform: 'translateY(-50%)'\r\n }\r\n };\r\n\r\n addUtilities(utilities, variants);\r\n };\r\n};\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.facet)?_c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.close),expression:\"close\"},{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.tooltipMessage),expression:\"tooltipMessage\"}],ref:\"container\",staticClass:\"facet-picker-checkbox\"},[_c('button',{staticClass:\"bg-white px-20 h-40 rounded-full whitespace-no-wrap\",class:{\n 'cursor-pointer' : _vm.hasValues,\n 'opacity-50': !_vm.facet.enabled,\n 'bg-blue-425': _vm.facet.highlight\n },attrs:{\"disabled\":!_vm.facet.enabled,\"aria-haspopup\":_vm.active},on:{\"click\":function($event){return _vm.togglePopup()}}},[(_vm.isNotToggle)?_c('span',{staticClass:\"font-medium text-13 flex flex-row items-center\",class:{ 'opacity-30' : !_vm.hasValues }},[_vm._v(\" \"+_vm._s(_vm.getFacetName(_vm.facet))+\" \"),_c('c-icon',{staticClass:\"ml-20 relative top-1\",class:{ 'invisible': _vm.active && !_vm.last },attrs:{\"height\":\"12\",\"width\":\"12\",\"name\":_vm.active ? 'close' : 'arrow-down'}})],1):(_vm.hasValues)?_c('span',{staticClass:\"facet-select flex flex-row items-center whitespace-no-wrap\",on:{\"click\":function($event){return _vm.toggle(_vm.values[0])}}},[_c('span',{staticClass:\"facet-select-checkbox\"},[(_vm.values[0].selected)?_c('c-icon',{staticClass:\"checked\",attrs:{\"height\":\"16\",\"width\":\"16\",\"name\":\"checkmark\"}}):_vm._e()],1),_c('span',{staticClass:\"font-medium text-13 ml-15\"},[_vm._v(\" \"+_vm._s(_vm.getFacetName(_vm.facet))+\" \")])]):_vm._e()]),(_vm.isNotToggle)?[_c('transition',{attrs:{\"appear\":\"\",\"enter-active-class\":\"animated fadeIn u-anim-dur-250\",\"leave-active-class\":\"animated fadeOut u-anim-dur-250\"}},[(_vm.active)?_c('div',{staticClass:\"absolute z-facetOverlay flex items-start\",style:(_vm.positionStyle)},[_c('div',{staticClass:\"facet-overlay\",on:{\"click\":function($event){return _vm.close()}}}),_c('transition',{attrs:{\"appear\":\"\",\"enter-active-class\":\"animated facetSelectSlideIn u-anim-dur-250\"}},[_c('div',{staticClass:\"z-facetOverlay flex items-start\"},[_c('div',{staticClass:\"facet-selector bg-white rounded-none\",class:{ 'half-gray': _vm.isBrandFacet && _vm.showRecommendedBrands },style:(_vm.style())},[_c('button',{staticClass:\"facet-close-button absolute\",on:{\"click\":function($event){return _vm.close()}}},[_c('c-icon',{attrs:{\"height\":\"11\",\"width\":\"11\",\"name\":\"close\"}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm._f(\"t\")('Generic.Close')))])],1),_c('div',{staticClass:\"flex w-full\"},[_c('div',{staticClass:\"flex flex-col w-full\"},[_c('p',{staticClass:\"font-medium text-13 flex flex-row h-40 items-center px-20 whitespace-no-wrap\"},[_vm._v(\" \"+_vm._s(_vm.getFacetName(_vm.facet))+\" \")]),(_vm.isRangeCompatible)?_c('div',{staticClass:\"px-20 py-15 bg-gray-400 flex flex-col w-full\"},[_c('p',{staticClass:\"mb-5 font-medium text-12\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Search.Facets.RangeFilterChoices'))+\" \"),(_vm.getUnitClarificationLabel)?_c('span',{staticClass:\"text-13 text-gray-800 font-regular ml-4 leading-normal align-middle\"},[_vm._v(\" \"+_vm._s(_vm.getUnitClarificationLabel)+\" \")]):_vm._e()]),_c('div',{staticClass:\"flex items-center justify-between w-full\"},[_c('input-text',{staticClass:\"facet-range\",attrs:{\"name\":\"range_from\",\"type\":\"tel\",\"invalid\":_vm.valueRanges.rangeFrom.invalid,\"placeholder\":_vm.valueRanges.rangeFrom.minValue + ''},on:{\"input\":function($event){return _vm.syncRangesWithUrlDebounce()}},model:{value:(_vm.valueRanges.rangeFrom.value),callback:function ($$v) {_vm.$set(_vm.valueRanges.rangeFrom, \"value\", $$v)},expression:\"valueRanges.rangeFrom.value\"}}),_c('div',{staticClass:\"mx-8\"},[_c('span',{staticClass:\"font-bold\"},[_vm._v(\"-\")])]),_c('input-text',{staticClass:\"facet-range\",attrs:{\"name\":\"range_to\",\"type\":\"tel\",\"invalid\":_vm.valueRanges.rangeTo.invalid,\"placeholder\":_vm.valueRanges.rangeTo.maxValue + ''},on:{\"input\":function($event){return _vm.syncRangesWithUrlDebounce()}},model:{value:(_vm.valueRanges.rangeTo.value),callback:function ($$v) {_vm.$set(_vm.valueRanges.rangeTo, \"value\", $$v)},expression:\"valueRanges.rangeTo.value\"}})],1),_c('div',{staticClass:\"text-10 text-red-500 mt-10\"},_vm._l((_vm.valueRanges.errors),function(error){return _c('p',{key:error},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")(error))+\" \")])}),0),(_vm.isRangeFacetting)?_c('div',[_c('button',{staticClass:\"text-13 underline\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.resetFilter}},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Search.ResetFilters'))+\" \")])]):_vm._e()]):(_vm.showSearchField)?_c('div',{staticClass:\"mt-5 px-20\"},[_c('input-search',{attrs:{\"placeholder\":_vm._f(\"t\")('Search.Facets.FilterPlaceholder'),\"autofocus\":\"\"},model:{value:(_vm.searchTerm),callback:function ($$v) {_vm.searchTerm=$$v},expression:\"searchTerm\"}})],1):_vm._e(),(!_vm.isRangeFacetting)?_c('ul',{staticClass:\"facet-selector-list pl-20\",class:_vm.showSearchField ? 'mt-20' : 'mt-10'},[(_vm.getUnitClarificationLabel && !_vm.isRangeCompatible)?_c('li',{staticClass:\"text-13 text-gray-800 font-regular mb-10 pr-20 leading-normal\"},[_vm._v(\" \"+_vm._s(_vm.getUnitClarificationLabel)+\" \")]):_vm._e(),_vm._l((_vm.filteredFacetValues),function(value,vidx){return _c('li',{key:vidx,staticClass:\"mb-10 pr-20\",class:{ 'opacity-50' : _vm.isValueDisabled(value) }},[_c('input',{staticClass:\"sr-only top-0\",attrs:{\"id\":(\"facet-\" + vidx),\"disabled\":_vm.isValueDisabled(value),\"name\":(\"facet-\" + vidx),\"type\":\"checkbox\"},domProps:{\"checked\":value.selected},on:{\"change\":function($event){return _vm.toggle(value)}}}),_c('label',{staticClass:\"facet-label cursor-pointer block overflow-hidden select-none\",attrs:{\"for\":(\"facet-\" + vidx)}},[_c('c-icon',{staticClass:\"facet-checkmark\",class:{'opacity-100': value.selected, 'opacity-0': !value.selected},attrs:{\"name\":\"checkmark\",\"width\":\"16\",\"height\":\"16\"}}),_c('span',{staticClass:\"text-13 leading-normal\",class:{'font-medium': value.selected}},[_vm._v(\" \"+_vm._s(_vm.getUnitTranslation(value.displayName))+\" \")]),(value.productCount >= 0)?_c('span',{staticClass:\"text-13 text-gray-800 font-regular ml-4 leading-normal\"},[_vm._v(\" (\"+_vm._s(_vm._f(\"localeNumber\")(value.productCount))+\")\")]):_vm._e()],1)])})],2):_vm._e()]),(_vm.isBrandFacet)?_c('facet-picker-recommended-brands',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showRecommendedBrands),expression:\"showRecommendedBrands\"}],attrs:{\"facet\":_vm.facet,\"toggle\":_vm.toggle},on:{\"showRecommendedBrands\":_vm.setShowRecommendedBrands}}):_vm._e()],1),(!_vm.isRangeFacetting)?_c('button',{staticClass:\"text-13 underline mb-10 px-20 mt-20\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.resetFilter}},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Search.ResetFilters'))+\" \")]):_vm._e()])])])],1):_vm._e()])]:_vm._e()],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport { FacetValueViewObject, FacetViewObject, SelectionTypeViewObject } from '@/types/apiServerContract';\r\nimport urlHelperService, { UrlFacets } from '@/core/urlHelper.service';\r\nimport gtmService from '@/project/tracking/gtm/GTM.service';\r\nimport escEventService from '@/core/esc-event.service';\r\n\r\nimport { BRAND_FACET_KEY } from '@/project/search/facets/constants';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\nimport { PRICE_FACET_KEY } from '@/project/search/constants';\r\nimport debounce from 'lodash/debounce';\r\n\r\n@Component\r\nexport default class FacetPicker extends Vue {\r\n @Prop({ required: true, type: Object })\r\n protected facet!: FacetViewObject;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n protected last!: boolean;\r\n\r\n protected active: boolean = false;\r\n protected values: FacetValueViewObject[] = []\r\n protected searchTerm = '';\r\n protected valueRanges = {\r\n rangeFrom: {\r\n minValue: 0,\r\n value: '',\r\n invalid: false,\r\n getValue: function() {\r\n const value = parseFloat(this.value);\r\n return isNaN(value) ? this.minValue : value;\r\n }\r\n },\r\n rangeTo: {\r\n maxValue: 0,\r\n value: '',\r\n invalid: false,\r\n getValue: function() {\r\n const value = parseFloat(this.value);\r\n return isNaN(value) ? this.maxValue : value;\r\n }\r\n },\r\n errors: [] as string[],\r\n reset: function() {\r\n this.errors = [];\r\n this.rangeFrom.value = '';\r\n this.rangeFrom.invalid = false;\r\n this.rangeTo.value = '';\r\n this.rangeTo.invalid = false;\r\n },\r\n isValid: function() {\r\n return (this.rangeFrom.value || this.rangeTo.value) && this.errors.length === 0;\r\n }\r\n }\r\n\r\n protected get isRangeFacetting() {\r\n return this.valueRanges.isValid();\r\n }\r\n\r\n protected get isRangeCompatible() {\r\n return this.facet.isRangeCompatible;\r\n }\r\n\r\n protected get isNotToggle(): boolean {\r\n return this.facet.selectionType !== SelectionTypeViewObject.Toggle;\r\n }\r\n\r\n protected get isSingleSelect(): boolean {\r\n return this.facet.selectionType === SelectionTypeViewObject.SingleSelect;\r\n }\r\n\r\n protected get shouldUpdateLastFacet(): boolean {\r\n return this.facet.isFacet;\r\n }\r\n\r\n protected get isBrandFacet() {\r\n return this.facet.facetId === BRAND_FACET_KEY;\r\n }\r\n\r\n protected get isPriceFilter() {\r\n return this.facet.facetId === PRICE_FACET_KEY;\r\n }\r\n\r\n private syncRangesWithUrlDebounce = debounce(this.syncRangesWithUrl, 300);\r\n\r\n protected syncRangesWithUrl(pushToUrl: boolean = true) {\r\n this.valueRanges.errors = [];\r\n this.valueRanges.rangeFrom.invalid = false;\r\n this.valueRanges.rangeTo.invalid = false;\r\n\r\n if (this.valueRanges.rangeFrom.value || this.valueRanges.rangeTo.value) {\r\n const rangeFrom = parseFloat(this.valueRanges.rangeFrom.value);\r\n const rangeTo = parseFloat(this.valueRanges.rangeTo.value);\r\n\r\n if (this.valueRanges.rangeFrom.value && (isNaN(rangeFrom) || rangeFrom < this.valueRanges.rangeFrom.minValue)) {\r\n this.valueRanges.rangeFrom.invalid = true;\r\n this.valueRanges.errors.push('Search.Facets.RangeFilterChoices.RangeFrom.OutOfRange');\r\n }\r\n\r\n if (this.valueRanges.rangeTo.value && (isNaN(rangeTo) || rangeTo > this.valueRanges.rangeTo.maxValue)) {\r\n this.valueRanges.rangeTo.invalid = true;\r\n this.valueRanges.errors.push('Search.Facets.RangeFilterChoices.RangeTo.OutOfRange');\r\n }\r\n\r\n if (this.valueRanges.rangeTo.value && this.valueRanges.rangeTo.value && !isNaN(rangeFrom) && !isNaN(rangeTo)) {\r\n if (rangeFrom > rangeTo || rangeTo < rangeFrom) {\r\n this.valueRanges.rangeFrom.invalid = true;\r\n this.valueRanges.rangeTo.invalid = true;\r\n this.valueRanges.errors.push('Search.Facets.RangeFilterChoices.OutOfRange');\r\n } else {\r\n const anyInRange = this.facet.values\r\n .map(x => parseFloat(x.key))\r\n .filter(x => !isNaN(x))\r\n .some(x => x >= rangeFrom && x <= rangeTo);\r\n\r\n if (!anyInRange) {\r\n this.valueRanges.errors.push('Search.Facets.RangeFilterChoices.EmptyRange');\r\n }\r\n }\r\n }\r\n\r\n if (this.valueRanges.isValid() && pushToUrl) {\r\n urlHelperService.setFacetRanges({\r\n facetId: this.facet.facetId,\r\n rangeFrom: this.valueRanges.rangeFrom.getValue().toString(),\r\n rangeTo: this.valueRanges.rangeTo.getValue().toString(),\r\n updateLastFacet: this.shouldUpdateLastFacet\r\n });\r\n }\r\n }\r\n }\r\n\r\n private resetFilter() {\r\n if (this.isRangeFacetting) {\r\n this.valueRanges.reset();\r\n urlHelperService.setFacetRanges({\r\n facetId: this.facet.facetId,\r\n rangeFrom: this.valueRanges.rangeFrom.value,\r\n rangeTo: this.valueRanges.rangeTo.value,\r\n updateLastFacet: this.shouldUpdateLastFacet\r\n });\r\n } else {\r\n urlHelperService.setFacetValues(this.facet.facetId, [], this.shouldUpdateLastFacet);\r\n this.values.forEach(value => value.selected = false);\r\n }\r\n }\r\n\r\n public open() {\r\n if (!this.facet.enabled) return;\r\n if (!this.isNotToggle) return;\r\n if (this.facet.values.length === 0) return;\r\n\r\n this.active = true;\r\n escEventService.register(this.close);\r\n\r\n this.$emit('active', true);\r\n }\r\n\r\n public close() {\r\n if (!this.isNotToggle) return;\r\n\r\n this.active = false;\r\n escEventService.unregister(this.close);\r\n\r\n setTimeout(() => this.$emit('active', false), 200); // appears to be a slight delay from searching...\r\n }\r\n\r\n protected updateFacetValue(value: FacetValueViewObject) {\r\n if (value.selected) {\r\n gtmService.trackFacet(this.facet, value);\r\n }\r\n\r\n if (this.isSingleSelect) {\r\n const values = value.selected ? [value.key] : [];\r\n urlHelperService.setFacetValues(this.facet.facetId, values, this.shouldUpdateLastFacet);\r\n } else {\r\n urlHelperService.updateFacetValue(this.facet.facetId, value.key, value.selected, this.shouldUpdateLastFacet);\r\n }\r\n }\r\n\r\n protected synchronizeFacetsWithUrl() {\r\n const urlFacets: UrlFacets = urlHelperService.getFacets();\r\n const activeValues = urlFacets[this.facet.facetId];\r\n if (activeValues) {\r\n this.values.forEach(v => v.selected = activeValues.includes(v.key));\r\n } else {\r\n this.values.forEach(v => v.selected = false);\r\n }\r\n }\r\n\r\n protected getFacetName(facet: FacetViewObject) : string {\r\n if (facet.facetDisplayLabel) {\r\n return dictionaryService.get(facet.facetDisplayLabel);\r\n }\r\n\r\n return facet.facetDisplayName;\r\n }\r\n\r\n private getFacetValueDisplayName(value: FacetValueViewObject): string {\r\n if (dictionaryService.exists(value.displayLabel)) {\r\n return dictionaryService.get(value.displayLabel);\r\n }\r\n\r\n return value.displayName;\r\n }\r\n\r\n protected get filteredFacetValues(): FacetValueViewObject[] {\r\n const result = this.values.filter(v => {\r\n return v.displayName.toLowerCase().includes(this.searchTerm.toLowerCase());\r\n });\r\n return result;\r\n }\r\n\r\n protected get showSearchField(): boolean {\r\n return this.values.length > 10;\r\n }\r\n\r\n @Watch('facet', {\r\n immediate: true\r\n })\r\n onFacetChange(facet: FacetViewObject) {\r\n if (this.isRangeCompatible) {\r\n const numericValues = this.facet.values.map(x => parseFloat(x.key)).filter(x => !isNaN(x));\r\n this.valueRanges.rangeFrom.minValue = Math.min(...numericValues);\r\n this.valueRanges.rangeTo.maxValue = Math.max(...numericValues);\r\n this.valueRanges.rangeFrom.value = this.facet.rangeFrom?.toString() ?? '';\r\n this.valueRanges.rangeTo.value = this.facet.rangeTo?.toString() ?? '';\r\n this.syncRangesWithUrl(false);\r\n }\r\n\r\n this.values = facet.values.map(v => ({\r\n ...v,\r\n displayName: this.getFacetValueDisplayName(v)\r\n }));\r\n this.synchronizeFacetsWithUrl();\r\n }\r\n}\r\n","var render, staticRenderFns\nimport script from \"./FacetPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./FacetPicker.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/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetPicker.vue?vue&type=script&lang=ts&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component } from 'vue-property-decorator';\r\nimport { FacetValueViewObject } from '@/types/apiServerContract';\r\nimport FacetPicker from './FacetPicker.vue';\r\nimport { IFacetPicker } from './IFacetPicker';\r\n\r\nimport FacetPickerRecommendedBrands from './modules/FacetPickerRecommendedBrands.vue';\r\nimport InputSearch from '@/project/form/InputSearch.vue';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\n\r\n@Component({\r\n components: { InputSearch, FacetPickerRecommendedBrands }\r\n})\r\nexport default class FacetPickerCheckbox extends FacetPicker implements IFacetPicker {\r\n private style() {\r\n const rect = this.$refs.container.getBoundingClientRect();\r\n return `min-width: ${rect.width}px`;\r\n }\r\n\r\n private positionStyle: Partial | null = null;\r\n\r\n private setPositionStyle() {\r\n const rect = this.$refs.container.getBoundingClientRect();\r\n const parentRect = document.getElementById('facets-container')!.getBoundingClientRect();\r\n const top = Math.abs(parentRect.top - rect.top);\r\n\r\n const direction = this.last ? 'right' : 'left';\r\n const horizontalPosition = Math.abs(parentRect[direction] - rect[direction]);\r\n\r\n this.positionStyle = {\r\n top: top + 'px',\r\n [direction]: horizontalPosition + 'px'\r\n };\r\n }\r\n\r\n private showRecommendedBrands: boolean = false;\r\n private setShowRecommendedBrands(state: boolean) {\r\n this.showRecommendedBrands = state;\r\n }\r\n\r\n private get hasValues(): boolean {\r\n return this.facet.values.length > 0;\r\n }\r\n\r\n getUnitTranslation(unit: string): string {\r\n return dictionaryService.translate(unit);\r\n }\r\n\r\n private get getUnitClarificationLabel(): string | null {\r\n return (this.facet.unitClarification && dictionaryService.translate(this.facet.unitClarification)) || null;\r\n }\r\n\r\n private togglePopup(): void {\r\n if (!this.active) {\r\n this.setPositionStyle();\r\n this.open();\r\n } else {\r\n this.close();\r\n }\r\n }\r\n\r\n public toggle(selected: FacetValueViewObject) {\r\n if (this.isSingleSelect) {\r\n for (const value of this.values) {\r\n value.selected = value.key === selected.key && !value.selected;\r\n }\r\n } else {\r\n selected.selected = !selected.selected;\r\n }\r\n\r\n this.updateFacetValue(selected);\r\n }\r\n\r\n private get tooltipMessage() {\r\n return this.isPriceFilter && !this.facet.enabled ? dictionaryService.get('Search.Facets.PriceSortDisabled') : '';\r\n }\r\n\r\n public $refs!: {\r\n container: HTMLElement\r\n }\r\n\r\n private isValueDisabled(value: FacetValueViewObject) {\r\n return !value.isFacet && value.productCount === 0;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetPickerCheckbox.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetPickerCheckbox.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FacetPickerCheckbox.vue?vue&type=template&id=6e2a6222&scoped=true&\"\nimport script from \"./FacetPickerCheckbox.vue?vue&type=script&lang=ts&\"\nexport * from \"./FacetPickerCheckbox.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FacetPickerCheckbox.vue?vue&type=style&index=0&id=6e2a6222&lang=less&scoped=true&\"\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 \"6e2a6222\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.href)?_c('culture-aware-router-link',_vm._b({directives:[{name:\"delegate-html-links\",rawName:\"v-delegate-html-links\"}],staticClass:\"cta no-underline\",class:{ 'cta-icon-after' : _vm.iconIsAfter },style:(_vm.customBackgroundColor),attrs:{\"to\":_vm.href,\"target\":_vm.target},nativeOn:{\"click\":function($event){return _vm.handleClick.apply(null, arguments)}}},'culture-aware-router-link',_vm.$attrs,false),[(_vm.hasIconBefore)?_c('c-icon',{staticClass:\"select-none\",attrs:{\"name\":_vm.icon}}):_vm._e(),(_vm.text)?_c('span',{staticClass:\"text select-none\"},[(_vm.maxCharacters === -1)?[_vm._v(\" \"+_vm._s(_vm.text)+\" \")]:[_c('smart-paragraph',{attrs:{\"content\":_vm.text,\"max-characters\":_vm.maxCharacters}})]],2):_c('span',{staticClass:\"text select-none\"},[_vm._t(\"default\")],2),(_vm.hasIconAfter)?_c('c-icon',{staticClass:\"select-none\",attrs:{\"name\":_vm.icon}}):_vm._e()],1):_c('button',_vm._b({directives:[{name:\"autofocus\",rawName:\"v-autofocus\",value:(_vm.autofocus),expression:\"autofocus\"}],ref:\"anchor\",staticClass:\"cta\",class:{ 'cta-icon-after' : _vm.iconIsAfter },style:(_vm.customBackgroundColor),attrs:{\"type\":_vm.type},on:{\"click\":_vm.handleClick}},'button',_vm.$attrs,false),[(_vm.hasIconBefore)?_c('c-icon',{staticClass:\"select-none pointer-events-none\",attrs:{\"name\":_vm.icon}}):_vm._e(),(_vm.text)?_c('span',{staticClass:\"text select-none pointer-events-none\"},[(_vm.maxCharacters === -1)?[_vm._v(\" \"+_vm._s(_vm.text)+\" \")]:[_c('smart-paragraph',{attrs:{\"content\":_vm.text,\"max-characters\":_vm.maxCharacters}})]],2):_c('span',{staticClass:\"text select-none pointer-events-none\"},[_vm._t(\"default\")],2),(_vm.hasIconAfter)?_c('c-icon',{staticClass:\"select-none pointer-events-none\",attrs:{\"name\":_vm.icon}}):_vm._e(),(_vm.dropdown)?_c('transition',{attrs:{\"appear\":\"\",\"enter-active-class\":\"animated fadeIn u-anim-dur-200\",\"leave-active-class\":\"animated fadeOut u-anim-dur-200\"}},[(_vm.dropdownActive)?_c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.closeDropdown),expression:\"closeDropdown\"}],staticClass:\"cta-dropdown\"},[_vm._t(\"dropdown\")],2):_vm._e()]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { RawLocation } from 'vue-router';\r\nimport { isValidHexColor, luma, RGBToHSLObject } from '@/core/color/color.service';\r\nimport SmartParagraph from '@/core/ui-components/SmartParagraph.vue';\r\n\r\n@Component({\r\n components: { SmartParagraph }\r\n})\r\nexport default class CallToAction extends Vue {\r\n @Prop({ type: String, required: false })\r\n private text!: string;\r\n\r\n @Prop({ type: [String, Object], required: false })\r\n private href!: RawLocation;\r\n\r\n @Prop({ type: String, required: false, default: '' })\r\n private icon!: string;\r\n\r\n @Prop({ type: Boolean, required: false, default: false })\r\n private iconIsAfter!: boolean;\r\n\r\n @Prop({ type: String, required: false })\r\n private target!: string;\r\n\r\n @Prop({ type: Boolean, required: false, default: false })\r\n private autofocus!: boolean;\r\n\r\n @Prop({ type: String, required: false })\r\n private hexColor!: string;\r\n\r\n @Prop({ type: Boolean, required: false, default: false })\r\n private dropdown!: boolean;\r\n\r\n @Prop({ type: String, default: 'button' })\r\n private type!: string;\r\n\r\n @Prop({ type: Number, default: -1 })\r\n private maxCharacters!: number;\r\n\r\n @Prop({\r\n type: Function,\r\n default: undefined\r\n })\r\n private onClickEvent!: () => {};\r\n\r\n private dropdownActive: boolean = false;\r\n\r\n public toggleDropdown() {\r\n this.dropdownActive = !this.dropdownActive;\r\n }\r\n\r\n public openDropdown() {\r\n this.dropdownActive = true;\r\n }\r\n\r\n public closeDropdown() {\r\n this.dropdownActive = false;\r\n }\r\n\r\n get hasIconBefore(): boolean {\r\n return this.icon !== '' && !this.iconIsAfter;\r\n }\r\n\r\n get hasIconAfter(): boolean {\r\n return this.icon !== '' && this.iconIsAfter;\r\n }\r\n\r\n private handleClick() {\r\n if (this.onClickEvent) {\r\n this.onClickEvent();\r\n }\r\n this.$emit('click');\r\n\r\n if (this.dropdown && !this.dropdownActive) {\r\n this.openDropdown();\r\n }\r\n }\r\n\r\n private get customBackgroundColor(): object {\r\n if (!this.hexColor) return {};\r\n if (!isValidHexColor(this.hexColor)) return {};\r\n\r\n return {\r\n backgroundColor: this.hexColor\r\n };\r\n }\r\n\r\n private mounted() {\r\n this.setForegroundAndHoverColor();\r\n }\r\n\r\n private setForegroundAndHoverColor() {\r\n const elementStyle = (this.$el as HTMLElement).style;\r\n const rawBackgroundColor = getComputedStyle(this.$el).backgroundColor;\r\n const [r, g, b] = rawBackgroundColor.replace(/[^\\d,]/g, '').split(',');\r\n const { h, s, l } = RGBToHSLObject(r, g, b);\r\n const isDarkBackground = luma(r, g, b) <= 0.5;\r\n\r\n // Hover and active - adjust luminosity\r\n const hoverL = l * 0.85;\r\n elementStyle.setProperty('--hover-active-color', `hsl(${h}, ${s}%, ${hoverL}%)`);\r\n\r\n // Foreground\r\n elementStyle.color = isDarkBackground ? 'white' : 'black';\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CallToAction.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CallToAction.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CallToAction.vue?vue&type=template&id=69b53b22&scoped=true&\"\nimport script from \"./CallToAction.vue?vue&type=script&lang=ts&\"\nexport * from \"./CallToAction.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CallToAction.vue?vue&type=style&index=0&id=69b53b22&lang=less&scoped=true&\"\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 \"69b53b22\",\n null\n \n)\n\nexport default component.exports","import { AbstractModalService } from '@/core/modals/AbstractModalService';\r\nimport { ModalOptions } from '@/core/modals/ModalState';\r\n\r\nclass LoginFormOverlayService extends AbstractModalService {\r\n public show(state: 'login' | 'forgot-pw' | 'reset-pw' | 'change-pw', redirect?: string, options?: Partial) {\r\n return this.showModal({\r\n component: () => import(\r\n /* webpackPrefetch: true */\r\n '@/project/auth/AuthenticationModuleOverlay.vue'),\r\n componentAttrs: {\r\n initialState: state,\r\n redirect\r\n },\r\n options: options\r\n });\r\n }\r\n}\r\n\r\nexport default new LoginFormOverlayService();\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'minus-big': {\r\n width: 32,\r\n height: 4,\r\n viewBox: '0 0 32 4',\r\n data: ''\r\n }\r\n})\r\n","import Api from '@/project/http/Api.service';\r\nimport AbstractBulkFetch from '@/core/bulk-fetch/AbstractBulkFetch';\r\nimport { PriceDetailedViewObject } from '@/types/apiServerContract';\r\nimport { keyBy } from 'lodash';\r\n\r\nexport interface PriceDetailedDataExtended extends PriceDetailedViewObject {\r\n isServiceAvailable: boolean;\r\n}\r\n\r\nclass DetailedPriceFetchService extends AbstractBulkFetch {\r\n async apiCall(itemIds: string[], cancelKey: string): Promise<{ [key: string]: PriceDetailedDataExtended }> {\r\n const result = await Api.price.priceDetailed(itemIds, cancelKey);\r\n const prices = result.prices.map(price => ({\r\n ...price,\r\n isServiceAvailable: result.isServiceAvailable\r\n }) as PriceDetailedDataExtended);\r\n return keyBy(prices, 'itemId');\r\n }\r\n}\r\n\r\nexport default new DetailedPriceFetchService('DetailedPrice', 100, true);\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.tag,{tag:\"component\",staticClass:\"accordion\",class:{ disabled: _vm.disabled }},[(!_vm.hideHeader)?_c('div',{staticClass:\"accordion-header\",class:_vm.headerClass,on:{\"click\":_vm.toggle}},[_vm._t(\"header\",null,{\"active\":_vm.isExpanded}),(_vm.icon)?_c('c-icon',{class:{ 'accordion-rotate': _vm.isExpanded },attrs:{\"height\":\"11\",\"width\":\"11\",\"name\":_vm.icon}}):_vm._e()],2):_vm._e(),_c('transition',{attrs:{\"appear\":\"\",\"name\":\"accordion\"},on:{\"enter\":_vm.setFixedHeight,\"after-enter\":_vm.setAutoHeight,\"before-leave\":_vm.setFixedHeight}},[(_vm.keepAlive)?[_c(_vm.bodyTag,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isExpanded),expression:\"isExpanded\"}],tag:\"component\",staticClass:\"accordion-body\"},[_c('div',{staticClass:\"accordion-body-inner\"},[_vm._t(\"default\")],2)])]:[(_vm.isExpanded)?_c(_vm.bodyTag,{tag:\"component\",staticClass:\"accordion-body\"},[_c('div',{staticClass:\"accordion-body-inner\"},[_vm._t(\"default\")],2)]):_vm._e()]],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport IAccordion from '@/core/ui-components/IAccordion';\r\n\r\n@Component\r\nexport default class Accordion extends Vue implements IAccordion {\r\n @Prop({ type: String, default: 'div' }) tag!: string;\r\n @Prop({ type: String, default: 'div' }) bodyTag!: string;\r\n @Prop({ type: String, default: '' }) headerClass!: string;\r\n @Prop({ type: String, default: 'arrow-down' }) icon!: string;\r\n\r\n @Prop({ type: Boolean, default: false }) multiple!: boolean;\r\n @Prop({ type: Boolean, default: false }) disabled!: boolean;\r\n @Prop({ type: Boolean, default: false }) expanded!: boolean;\r\n @Prop({ type: Boolean, default: false }) hideHeader!: boolean;\r\n @Prop({ type: Boolean, default: false }) keepAlive!: boolean;\r\n @Prop({ type: Boolean, default: false }) allowToggle!: boolean;\r\n\r\n private isExpanded: boolean = false;\r\n\r\n created() {\r\n this.isExpanded = this.expanded;\r\n }\r\n\r\n public close() {\r\n this.isExpanded = false;\r\n }\r\n\r\n public open(): void {\r\n this.isExpanded = true;\r\n }\r\n\r\n private toggle(e: any) {\r\n if (this.disabled) return;\r\n\r\n this.allowToggle && (this.isExpanded = !this.isExpanded);\r\n\r\n if (this.multiple) return;\r\n\r\n // Close the rest\r\n this.$parent.$children.forEach(child => {\r\n if (child instanceof Accordion && child !== this) {\r\n child.isExpanded = false;\r\n }\r\n });\r\n }\r\n\r\n private setFixedHeight(el: HTMLElement) {\r\n el.style.height = el.scrollHeight + 'px';\r\n }\r\n\r\n private setAutoHeight(el: HTMLElement) {\r\n el.style.height = 'auto';\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Accordion.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Accordion.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Accordion.vue?vue&type=template&id=2cb8d20f&\"\nimport script from \"./Accordion.vue?vue&type=script&lang=ts&\"\nexport * from \"./Accordion.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Accordion.vue?vue&type=style&index=0&lang=less&\"\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/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImpersonationBanner.vue?vue&type=style&index=0&id=7a1ca40b&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImpersonationBanner.vue?vue&type=style&index=0&id=7a1ca40b&lang=less&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.searchResult && _vm.searchResult.categoryFacet.values.length > 1)?_c('div',{staticClass:\"lg:flex mb-10\"},[_c('div',{staticClass:\"lg:h-40 lg:flex items-center lg:pb-2\"},[_c('span',{staticClass:\"text-13 lg:text-14 font-bold\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Relations.FilterCategories.FilterSummary',_vm.searchResult.totalProducts.toString(), _vm.searchResult.categoryFacet.values.length.toString()))+\" \")])]),_c('CallToAction',{staticClass:\"cta--link cta-icon--16 mr-auto\",attrs:{\"text\":_vm._f(\"t\")('Product.Relations.FilterCategories'),\"icon\":\"filters\"},on:{\"click\":_vm.clickShowCategoryFilter}})],1):_vm._e(),_vm._t(\"default\",null,{\"products\":_vm.getProductsResult}),(_vm.searchResult && _vm.searchResult.hasMorePages)?_c('div',{staticClass:\"flex\"},[_c('CallToAction',{staticClass:\"cta--link cta-icon--16 mx-auto\",attrs:{\"text\":_vm._f(\"t\")('Product.Relations.ShowMore'),\"icon\":\"plus-big\"},on:{\"click\":_vm.handleNextPage}})],1):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { AbstractModalService } from '@/core/modals/AbstractModalService';\r\nimport { ModalOptions } from '@/core/modals/ModalState';\r\nimport { FacetValueViewObject } from '@/types/apiServerContract';\r\n\r\nclass ProductAccessoriesCategroyOverlayService extends AbstractModalService {\r\n public show(\r\n categories: FacetValueViewObject[] | null,\r\n options?: Partial\r\n ) {\r\n return this.showModal({\r\n component: () => import(\r\n /* webpackPrefetch: true */\r\n '@/project/product/product-tile/ProductAccessoriesCategoryOverlay.vue'),\r\n componentAttrs: {\r\n categories\r\n },\r\n options: {\r\n placement: 'center',\r\n usePanelWrapper: false,\r\n closeOnRouteChange: true,\r\n closeOnBreakpointChange: true,\r\n ...options\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default new ProductAccessoriesCategroyOverlayService();\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop, Watch } from 'vue-property-decorator';\r\nimport Api from '@/project/http/Api.service';\r\nimport {\r\n ReferencedProductsViewModel, FacetValueViewObject\r\n} from '@/types/apiServerContract';\r\nimport { HttpCancelError } from '@/core/http/HttpCancelError';\r\nimport ProductAccessoriesCategoryOverlayService\r\n from '@/project/modals/overlays/ProductAccessoriesCategoryOverlay.service';\r\nexport enum ProductRelationType {\r\n 'accessories' = 'accessories',\r\n 'exactAlternatives' = 'exactAlternatives',\r\n 'similarAlternatives' = 'similarAlternatives',\r\n}\r\nconst accessoriesPageSize = 5;\r\n@Component\r\nexport default class ProductAccessoriesSearchControl extends Vue {\r\n @Prop({ type: String, required: true })\r\n private productId!: string;\r\n\r\n @Prop({ type: Boolean, default: true })\r\n private allowSearch!: boolean;\r\n\r\n @Prop({ type: String, default: ProductRelationType.accessories })\r\n private relationType!: string;\r\n\r\n private searchResult: ReferencedProductsViewModel | null = null;\r\n private searching = false;\r\n private fromNumber: number = 0;\r\n private toNumber: number = accessoriesPageSize;\r\n\r\n private getCategoryIds(): string[] {\r\n return (this.searchResult?.categoryFacet.values.filter(v => v.selected) ?? [])?.map(v => v.key);\r\n }\r\n\r\n private get getProductsResult() {\r\n return this.searchResult?.products || [];\r\n }\r\n\r\n private setSearching(isSearching: boolean) {\r\n this.searching = isSearching;\r\n if (!isSearching) {\r\n this.$emit('loaded', this.relationType);\r\n }\r\n }\r\n\r\n private async search() {\r\n if (!this.allowSearch || this.searching) return;\r\n\r\n this.setSearching(true);\r\n try {\r\n const result = this.relationType === ProductRelationType.similarAlternatives\r\n ? await Api.product.similarAlternatives(this.productId, this.getCategoryIds(), this.fromNumber, this.toNumber)\r\n : this.relationType === ProductRelationType.exactAlternatives ? await Api.product.exactAlternatives(this.productId, this.getCategoryIds(), this.fromNumber, this.toNumber)\r\n : await Api.product.accessories(this.productId, this.getCategoryIds(), this.fromNumber, this.toNumber);\r\n this.searchResult = Object.freeze(result);\r\n\r\n this.setSearching(false);\r\n } catch (error) {\r\n if (error instanceof HttpCancelError) {\r\n // Ok - cancelled by newer request\r\n } else {\r\n this.setSearching(false);\r\n throw error;\r\n }\r\n }\r\n }\r\n\r\n private async clickShowCategoryFilter() {\r\n const facetValues = await ProductAccessoriesCategoryOverlayService.show(this.searchResult?.categoryFacet.values || []) as FacetValueViewObject[];\r\n if (this.searchResult && facetValues) {\r\n this.resetPaging(); // always reset paging, facetValues will be undefined if modal is canceled\r\n this.searchResult.categoryFacet.values = facetValues;\r\n this.search();\r\n }\r\n }\r\n\r\n private handleNextPage() {\r\n this.toNumber = this.toNumber + accessoriesPageSize;\r\n this.search();\r\n }\r\n\r\n private resetPaging() {\r\n this.fromNumber = 0;\r\n this.toNumber = accessoriesPageSize;\r\n }\r\n\r\n @Watch('allowSearch')\r\n onAllowSearchChange() {\r\n if (this.allowSearch) {\r\n this.search();\r\n }\r\n }\r\n\r\n @Watch('productId', {\r\n immediate: true\r\n })\r\n onProductIdChange() {\r\n this.search();\r\n }\r\n\r\n mounted() {\r\n this.resetPaging();\r\n this.search();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductRelationSearchControl.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductRelationSearchControl.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductRelationSearchControl.vue?vue&type=template&id=36d4b7d8&\"\nimport script from \"./ProductRelationSearchControl.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductRelationSearchControl.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","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'splash-new': {\r\n width: 36,\r\n height: 36,\r\n viewBox: '0 0 36 36',\r\n data: ''\r\n }\r\n})\r\n","import Vue from 'vue';\r\nimport breakpointService from './breakpoints.service';\r\n\r\nclass BreakpointsState {\r\n private breakpointsState: { [breakpoint: string]: boolean } = Vue.observable({});\r\n\r\n constructor() {\r\n breakpointService.addListener(this.breakpointChangeHandler.bind(this));\r\n }\r\n\r\n /*\r\n Supports formats like\r\n 'ls,md'\r\n 'max-md'\r\n 'min-md,max-xl'\r\n 'not-md,max-xl'\r\n */\r\n public isBreakpointActive(breakpointsDescriptor: string) {\r\n return breakpointService.getExpandedBreakpoints(breakpointsDescriptor).some(bp => this.breakpointsState[bp]);\r\n }\r\n\r\n public get activeBreakpoint(): string {\r\n return Object.keys(this.breakpointsState).find(bp => this.breakpointsState[bp])!;\r\n }\r\n\r\n private breakpointChangeHandler() {\r\n breakpointService.getBreakpoints().forEach(bp => {\r\n Vue.set(this.breakpointsState, bp.name, breakpointService.isActiveBreakpoint(bp.name));\r\n });\r\n }\r\n}\r\n\r\nexport default new BreakpointsState();\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'stacked': {\r\n width: 32,\r\n height: 32,\r\n viewBox: '0 0 32 32',\r\n data: ''\r\n }\r\n})\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResponsiveImage.vue?vue&type=style&index=0&id=27d431c4&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResponsiveImage.vue?vue&type=style&index=0&id=27d431c4&lang=less&scoped=true&\"","export const ImageNotFound = require('@/assets/icons/fallback.svg');\r\nexport const ImageNotFoundOprema = require('@/assets/icons/oprema-fallback.svg');\r\nexport const GoogleCloudGeocodingApiKey = 'AIzaSyAl4rXfKqh_tX22wQqG3gufbbCsnsnfxoo';\r\nexport const GoogleCloudGeolocationApiKey = 'AIzaSyBONcM1FkI6CzaDO3iYuSfqhgIMuoAUTnE';\r\n","import Vue from 'vue';\r\nimport tokenService from './token.service';\r\nimport makeStoreDebugAccessible from '@/core/store/storeDebug';\r\nimport bus from '@/core/bus';\r\nimport GTMBasics from '@/project/tracking/gtm/GTM.basics';\r\nimport myAccountStore from '@/project/app/client-pages/my-account/my-account.store';\r\nimport { router } from 'spaRouter';\r\n\r\nexport const LOGGED_IN = 'LOGGED_IN';\r\nexport const LOGGED_OFF = 'LOGGED_OFF';\r\nexport const TOKEN_DATA_CHANGED = 'UserDataChanged';\r\nexport const TOKEN_DATA_CHANGED_MARKET = 'UserDataChangedMarket';\r\n\r\nconst _tokenWrapper: { token: string | null } = Vue.observable({ token: tokenService.getToken() });\r\n\r\nmakeStoreDebugAccessible('auth-service', _tokenWrapper);\r\n\r\nfunction logIn(token: string): void {\r\n setToken(token);\r\n bus.emit(LOGGED_IN);\r\n myAccountStore.clear();\r\n myAccountStore.init();\r\n GTMBasics.trackUserLogin();\r\n}\r\n\r\nfunction logOff(reload: boolean = false): void {\r\n clearToken();\r\n bus.emit(LOGGED_OFF);\r\n myAccountStore.clear();\r\n if (reload) {\r\n router.push('/').catch(() => {}).finally(() => location.reload());\r\n }\r\n}\r\n\r\nfunction isLoggedIn(): boolean {\r\n return !!getToken();\r\n}\r\n\r\nfunction hasLoggedInBefore(): boolean {\r\n return !!tokenService.getPreviousToken();\r\n}\r\n\r\nfunction clearToken(): void {\r\n _tokenWrapper.token = null;\r\n tokenService.clearToken();\r\n}\r\n\r\nfunction replaceToken(token: string) {\r\n tokenService.setToken(token);\r\n}\r\n\r\nfunction setToken(token: string): void {\r\n const prevUserData = tokenService.getUserData();\r\n\r\n _tokenWrapper.token = token;\r\n tokenService.setToken(token);\r\n const userData = tokenService.getUserData();\r\n bus.emit(TOKEN_DATA_CHANGED, userData);\r\n\r\n if (!(prevUserData?.impersonatorEmail) && prevUserData?.contactKey !== userData?.contactKey) {\r\n myAccountStore.clear();\r\n myAccountStore.init();\r\n bus.emit(TOKEN_DATA_CHANGED_MARKET, userData);\r\n }\r\n}\r\n\r\nfunction getToken(): string | null {\r\n return _tokenWrapper.token;\r\n}\r\n\r\nexport default {\r\n logIn,\r\n logOff,\r\n isLoggedIn,\r\n hasLoggedInBefore,\r\n setToken,\r\n getToken,\r\n replaceToken\r\n};\r\n","import { AbstractModalService } from '@/core/modals/AbstractModalService';\r\n\r\nclass VideoFullscreenOverlayService extends AbstractModalService {\r\n public show(\r\n vimeoVideoId: string,\r\n enableTextTrack: boolean) {\r\n return this.showModal({\r\n component: () => import(\r\n /* webpackPrefetch: true */\r\n '@/project/video/VideoFullscreenOverlay.vue'),\r\n componentAttrs: {\r\n vimeoVideoId,\r\n enableTextTrack\r\n },\r\n options: {\r\n contentAutoScroll: false,\r\n contentMaxHeight: false,\r\n disableBodyScroll: true,\r\n placement: 'center',\r\n showCloseButton: true,\r\n usePanelWrapper: false,\r\n closeOnBreakpointChange: false,\r\n wide: true\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default new VideoFullscreenOverlayService();\r\n","import Vue from 'vue';\r\nimport siteService from '@/project/site/site.service';\r\n\r\nconst locale = siteService.getCulture();\r\n\r\nfunction localeNumberFilter(number: number | string) {\r\n if (typeof number !== 'number') return number;\r\n if (!locale) return number;\r\n\r\n return number.toLocaleString(locale);\r\n}\r\n\r\nVue.filter('localeNumber', localeNumberFilter);\r\n\r\nexport default localeNumberFilter;\r\n","/**\r\n * All 'js-styles' (tailwind plugins) are required and included in ../plugins.js\r\n *\r\n *\r\n * Generated class samples\r\n *\r\n * .u-anim-dur-100{\r\n * animation-duration:100ms;\r\n * }\r\n *\r\n * .u-anim-delay-100{\r\n * animation-delay:100ms;\r\n * }\r\n *\r\n *\r\n */\r\n\r\nconst _map = require('lodash/map');\r\nconst _range = require('lodash/range');\r\n\r\nmodule.exports = function(variants) {\r\n return function({ e, addUtilities }) {\r\n const range = _range(100, 1100, 50);\r\n\r\n const utilities = [\r\n ..._map(range, duration => ({\r\n [`.${e(`u-anim-dur-${duration}`)}`]: {\r\n animationDuration: `${duration}ms`\r\n }\r\n })),\r\n ..._map(range, delay => ({\r\n [`.${e(`u-anim-delay-${delay}`)}`]: {\r\n animationDelay: `${delay}ms`\r\n }\r\n }))\r\n ];\r\n\r\n addUtilities(utilities, variants);\r\n };\r\n};\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'order-history': {\r\n width: 30,\r\n height: 32,\r\n viewBox: '0 0 30 32',\r\n data: ''\r\n }\r\n})\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.hasQuantityDiscounts)?_c('div',{staticClass:\"product-tile-discount\"},[_c('v-popover',{attrs:{\"trigger\":\"click\",\"offset\":\"5\",\"placement\":\"top\"},on:{\"show\":function($event){return _vm.getDetailedPrice()}}},[_c('div',{staticClass:\"bg-blue-450 py-2 px-10 text-white flex items-center cursor-pointer text-12\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Discount.Tile.Title'))+\" \"),_c('c-icon',{staticClass:\"ml-6\",attrs:{\"name\":\"info\",\"width\":\"15\",\"height\":\"15\",\"aria-hidden\":\"true\"}})],1),_c('template',{slot:\"popover\"},[_c('div',{staticClass:\"quantity-discounts\"},[_c('h2',{staticClass:\"text-12 capitalize font-bold text-black mb-6\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Discount.Tile.Title'))+\" \")]),_vm._l((_vm.quantityDiscounts),function(discount,index){return _c('div',{key:index,staticClass:\"flex flex-row justify-between text-12 mb-5\"},[_c('p',{staticClass:\"mr-20 md:mr-30\"},[(index < _vm.quantityDiscounts.length - 1)?[_vm._v(\" \"+_vm._s(discount.quantity)+\" - \"+_vm._s(_vm.getNextQuantity(index))+\" \"+_vm._s(_vm._f(\"t\")('Product.Discount.Amount'))+\" \")]:[_vm._v(\" \"+_vm._s(discount.quantity)+\"+ \"+_vm._s(_vm._f(\"t\")('Product.Discount.Amount'))+\" \")]],2),_c('p',[_vm._v(_vm._s(discount.amount.cultureFormatted))])])}),_c('spinner-overlay',{attrs:{\"show\":!_vm.discountsLoaded}})],2)])],2)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Prop, Component } from 'vue-property-decorator';\r\nimport { DiscountViewObject, PriceDetailedViewObject } from '@/types/apiServerContract';\r\nimport detailedPriceFetchService from '@/project/product/services/detailedPriceFetch.service';\r\nimport SpinnerOverlay from '@/project/spinners/SpinnerOverlay.vue';\r\nimport { PriceSimpleDataExtended } from '@/project/product/services/simplePriceFetch.service';\r\n\r\n@Component({\r\n components: { SpinnerOverlay }\r\n})\r\nexport default class ProductTileDiscounts extends Vue {\r\n @Prop({ required: true, type: String }) itemId!: string;\r\n @Prop({ required: true }) price!: PriceSimpleDataExtended;\r\n\r\n private discountsLoaded: boolean = false;\r\n private priceDetailed: PriceDetailedViewObject | null = null;\r\n\r\n get hasQuantityDiscounts() {\r\n return this.price?.hasQuantityDiscounts ?? false;\r\n }\r\n\r\n private getNextQuantity(index: number) {\r\n return this.priceDetailed && this.priceDetailed.discounts\r\n ? this.priceDetailed.discounts[index + 1].quantity : 0;\r\n }\r\n\r\n get quantityDiscounts(): DiscountViewObject[] {\r\n return this.priceDetailed?.discounts ?? [];\r\n }\r\n\r\n private async getDetailedPrice() {\r\n if (this.priceDetailed) return;\r\n\r\n try {\r\n const request = detailedPriceFetchService.requestData(this.itemId);\r\n const result = await request.promise;\r\n this.priceDetailed = Object.freeze(result);\r\n } finally {\r\n this.discountsLoaded = true;\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileDiscounts.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileDiscounts.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductTileDiscounts.vue?vue&type=template&id=0e082918&\"\nimport script from \"./ProductTileDiscounts.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductTileDiscounts.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 log from '@/core/logging.service';\r\nimport { router } from 'spaRouter';\r\n\r\nexport function hardReload() {\r\n log.info('Hard reload');\r\n window.location.reload();\r\n}\r\n\r\nexport function softRedirect(url: string) {\r\n log.info(`Soft redirect. Url: ${url}`);\r\n router.replace(url);\r\n}\r\n\r\nexport function hardRedirect(url: string) {\r\n log.debug(`Hard redirect. Url: ${url}`);\r\n window.location.href = url;\r\n}\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'rma': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 33 32',\r\n data: ''\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MiniBasket.vue?vue&type=style&index=0&lang=less&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MiniBasket.vue?vue&type=style&index=0&lang=less&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.keepAlive)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.active),expression:\"active\"}]},[_vm._t(\"default\")],2):(_vm.active)?_c('div',[_vm._t(\"default\")],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport ITab from './ITab';\r\nimport urlHelperService from '@/core/urlHelper.service';\r\n\r\n@Component({\r\n name: 'Tab'\r\n})\r\nexport default class Tab extends Vue implements ITab {\r\n @Prop({ type: String, required: true }) name!: string;\r\n @Prop({ type: String }) hash!: string;\r\n @Prop({ type: Boolean, default: false }) selected!: boolean;\r\n @Prop({ type: Boolean, default: false }) keepAlive!: boolean;\r\n\r\n private active: boolean = this.selected;\r\n\r\n public toggle(active: boolean) {\r\n this.active = active;\r\n\r\n if (active && this.hash) {\r\n if (urlHelperService.getHash() !== this.hash) {\r\n urlHelperService.setHash(this.hash);\r\n }\r\n }\r\n }\r\n\r\n public get isActive() {\r\n return this.active;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Tab.vue?vue&type=template&id=661915bb&\"\nimport script from \"./Tab.vue?vue&type=script&lang=ts&\"\nexport * from \"./Tab.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","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'map-marker-black': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 18 24',\r\n data: ''\r\n }\r\n})\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.recommendedBrands.length)?_c('div',{staticClass:\"mt-40\"},[(_vm.showTitle)?_c('h2',{staticClass:\"text-12 font-semi-bold mb-15 w-full md:pl-10\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Search.Facets.RecommendedBrands'))+\" \")]):_vm._e(),_c('ul',{staticClass:\"facet-selector-list md:pl-10\"},_vm._l((_vm.recommendedBrandsFacets),function(value,vidx){return _c('li',{key:vidx,staticClass:\"mb-15\"},[_c('adnuntius-pixels',{staticClass:\"recommended-brand\",attrs:{\"rendered-url\":value.brand.renderedPixelUrl,\"visible-url\":value.brand.visiblePixelUrl,\"view-url\":value.brand.viewPixelUrl,\"click-url\":value.brand.clickPixelUrl,\"always-visible\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar click = ref.click;\nreturn [_c('input',{staticClass:\"sr-only top-0\",attrs:{\"id\":(\"facet-recommended-\" + vidx),\"name\":(\"facet-recommended-\" + vidx),\"type\":\"checkbox\"},domProps:{\"checked\":value.facet.selected},on:{\"click\":function($event){return _vm.handleClick(value.facet, click)}}}),_c('label',{staticClass:\"facet-label cursor-pointer flex justify-start items-center\",attrs:{\"for\":(\"facet-recommended-\" + vidx)}},[_c('c-icon',{staticClass:\"facet-checkmark\",class:{'opacity-100': value.facet.selected, 'opacity-0': !value.selected},attrs:{\"name\":\"checkmark\",\"width\":\"16\",\"height\":\"16\"}}),_c('img',{staticClass:\"brand-logo\",attrs:{\"src\":value.brand.image.url,\"alt\":value.facet.displayName}}),(_vm.showCount && value.facet.productCount > -1)?_c('span',{staticClass:\"flex-1 text-right pr-10 text-gray-750 font-regular\"},[_vm._v(\" (\"+_vm._s(_vm._f(\"localeNumber\")(value.facet.productCount))+\") \")]):_vm._e()],1)]}}],null,true)})],1)}),0)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { BrandLogoViewModel, FacetViewObject, FacetValueViewObject } from '@/types/apiServerContract';\r\nimport Api from '@/project/http/Api.service';\r\nimport adnuntiusService from '@/project/personalization/adnuntius.service';\r\nimport AdnuntiusPixels from '@/project/tracking/adnuntius/AdnuntiusPixels.vue';\r\n\r\n@Component({\r\n components: { AdnuntiusPixels }\r\n})\r\nexport default class FacetPickerRecommendedBrands extends Vue {\r\n @Prop({ required: true, type: Object })\r\n private facet!: FacetViewObject;\r\n\r\n @Prop({ required: true, type: Function })\r\n private toggle!: (value: FacetValueViewObject, facet: FacetViewObject) => void;\r\n\r\n @Prop({ type: Boolean, default: true })\r\n private showTitle!: boolean;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private showCount!: boolean;\r\n\r\n private recommendedBrands: BrandLogoViewModel[] = [];\r\n\r\n private get brands() {\r\n return this.facet.values.map(x => x.key);\r\n }\r\n\r\n private get recommendedBrandsFacets() {\r\n return this.facet.values\r\n .filter(x => this.recommendedBrands.some(b => b.name === x.key))\r\n .map(facet => ({\r\n facet,\r\n brand: this.getBrandData(facet.key)\r\n }));\r\n }\r\n\r\n private getBrandData(key: string) {\r\n return this.recommendedBrands.find(x => x.name === key);\r\n }\r\n\r\n private handleClick(value: FacetValueViewObject, adnuntiusClickHandler: Function) {\r\n this.toggle(value, this.facet);\r\n adnuntiusClickHandler();\r\n }\r\n\r\n private async fetchRecommendedBrands() {\r\n this.recommendedBrands = await Api.personalization.recommendedBrands(\r\n this.brands,\r\n this.$route.fullPath,\r\n adnuntiusService.getContactKey(),\r\n adnuntiusService.getCustomerKey());\r\n\r\n this.$emit('showRecommendedBrands', this.recommendedBrands.length > 0);\r\n }\r\n\r\n created() {\r\n this.fetchRecommendedBrands();\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetPickerRecommendedBrands.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetPickerRecommendedBrands.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FacetPickerRecommendedBrands.vue?vue&type=template&id=3d10f32b&scoped=true&\"\nimport script from \"./FacetPickerRecommendedBrands.vue?vue&type=script&lang=ts&\"\nexport * from \"./FacetPickerRecommendedBrands.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FacetPickerRecommendedBrands.vue?vue&type=style&index=0&id=3d10f32b&lang=less&scoped=true&\"\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 \"3d10f32b\",\n null\n \n)\n\nexport default component.exports","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'phone': {\r\n width: 10.983,\r\n height: 17.639,\r\n viewBox: '0 0 10.983 17.639',\r\n data: ''\r\n }\r\n})\r\n","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmployeeBlockItem.vue?vue&type=style&index=0&id=8bf77aba&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmployeeBlockItem.vue?vue&type=style&index=0&id=8bf77aba&lang=less&scoped=true&\"","import Vue from 'vue';\r\nimport makeStoreDebugAccessible from '@/core/store/storeDebug';\r\nimport { localStorageService } from '@/core/storage.service';\r\nimport serverContextService, { SiteInfo } from '@/core/serverContext.service';\r\nimport { LoginViewModel, SwitchSiteResponseViewModel } from '@/types/apiServerContract';\r\nimport { hardRedirect } from '@/core/redirect.service';\r\nimport domService from '@/core/dom/dom.service';\r\nimport authService from '@/core/auth/auth.service';\r\n\r\nconst URL_LOCAL_STORAGE_KEY = 'eetgroup-eet-site';\r\nconst REFERRER_LOCAL_STORAGE_KEY = 'eetgroup-referrer';\r\n\r\nconst state: SiteInfo = Vue.observable({\r\n languageCode: null,\r\n siteId: -1,\r\n url: null,\r\n countryCode: null,\r\n culture: null,\r\n customCulture: null,\r\n erpBusinessEntityId: null,\r\n marketId: null,\r\n countryOptions: null,\r\n maintenanceMode: false\r\n});\r\n\r\nmakeStoreDebugAccessible('site-service', state);\r\n\r\nlet documentReferrer = '';\r\nlet savedUrl: string | null = null;\r\ninit();\r\n\r\nfunction init() {\r\n // If we have a saved referrer, use that one and clear it.\r\n documentReferrer = localStorageService.getItemAs(REFERRER_LOCAL_STORAGE_KEY) || document.referrer;\r\n localStorageService.removeItem(REFERRER_LOCAL_STORAGE_KEY);\r\n\r\n savedUrl = localStorageService.getItemAs(URL_LOCAL_STORAGE_KEY);\r\n Object.assign(state, serverContextService.siteInfo);\r\n}\r\n\r\nfunction update(siteInfo: LoginViewModel | SwitchSiteResponseViewModel) {\r\n const redirect = shouldRedirect(state.url, siteInfo.url);\r\n state.erpBusinessEntityId = siteInfo.erpBusinessEntityId;\r\n state.marketId = siteInfo.marketId;\r\n state.culture = siteInfo.culture;\r\n state.siteId = siteInfo.siteId;\r\n state.url = siteInfo.url;\r\n state.languageCode = siteInfo.languageCode;\r\n state.countryCode = siteInfo.countryCode;\r\n localStorageService.setItemAs(URL_LOCAL_STORAGE_KEY, state.url);\r\n savedUrl = state.url;\r\n if (redirect) {\r\n hardRedirect(createUrlInPreferredCulture('update'));\r\n }\r\n}\r\n\r\nfunction shouldRedirect(oldUrl: string | null, newUrl: string | null): boolean {\r\n return oldUrl?.toLowerCase() !== newUrl?.toLowerCase();\r\n}\r\n\r\nfunction getCountryCode(): string | null {\r\n return state.countryCode;\r\n}\r\n\r\nfunction getLanguageCode(): string | null {\r\n return state.languageCode;\r\n}\r\n\r\nfunction getCulture(): string | null {\r\n return state.culture;\r\n}\r\n\r\nfunction getErpBusinessEntityId(): number | null {\r\n return state.erpBusinessEntityId;\r\n}\r\n\r\nfunction getMarketId(): number | null {\r\n return state.marketId;\r\n}\r\n\r\nfunction getUrl(): string {\r\n return state.url || '';\r\n}\r\n\r\nfunction getSiteId(): number | null {\r\n return state.siteId;\r\n}\r\n\r\nfunction hasBeenPickedByUser(): boolean {\r\n return savedUrl != null;\r\n}\r\n\r\nfunction languageLabel(languageCode: string): string {\r\n return `Generic.Languages.${(languageCode || '').toUpperCase()}`;\r\n}\r\n\r\nfunction countryLabel(countryCode: string): string {\r\n return `Generic.Countries.${(countryCode || '').toUpperCase()}`;\r\n}\r\n\r\nfunction createUrlInPreferredCulture(action: 'init' | 'update') {\r\n const culture = savedUrl ? savedUrl.split('/')[1] : 'en-eu';\r\n const pageMatch = domService.getHreflang(culture);\r\n\r\n // Let's first see if we can find a matching hreflang (When using the language picker)\r\n if (pageMatch) {\r\n return pageMatch;\r\n }\r\n\r\n // In case the language is updated using the language picker and no page from hreflang matched - We return the new url\r\n // On update we do the same for anonymous and authorized users. Authorized users are allowed to switch between markets using the language picker - On init we only do this for anonymous users\r\n // If the new url does not exist the 404 handler will kick in\r\n if (action === 'update' || (!authService.isLoggedIn() && action === 'init')) {\r\n return getNewUrl();\r\n }\r\n\r\n // If an authenticated user tries to change market manually using the address bar we redirect them to the frontpage instead.\r\n return `/${culture}`;\r\n}\r\n\r\nfunction setCountryOptions(options) {\r\n state.countryOptions = options;\r\n}\r\n\r\nfunction getCountryOptions() {\r\n return state.countryOptions || null;\r\n}\r\n\r\nfunction getNewUrl() {\r\n // convert /xx-xx/lajaskldfkf?lksadf or /lajaskldfkf?lksadf to /zz-zz/lajaskldfkf?lksadf\r\n // Where xx-xx is culture and zz-zz is users preferred culture\r\n let url = location.pathname + location.search;\r\n\r\n if (location.pathname.match(/^\\/[a-z]{2}-[a-z]{2}/i)) {\r\n url = url.substr(6);\r\n }\r\n\r\n return savedUrl + url;\r\n}\r\n\r\nexport default {\r\n update,\r\n getErpBusinessEntityId,\r\n getMarketId,\r\n getCountryCode,\r\n getLanguageCode,\r\n getCulture,\r\n getSiteId,\r\n getUrl,\r\n languageLabel,\r\n countryLabel,\r\n hasBeenPickedByUser,\r\n getCountryOptions,\r\n setCountryOptions,\r\n documentReferrer\r\n};\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReadMore.vue?vue&type=style&index=0&lang=less&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReadMore.vue?vue&type=style&index=0&lang=less&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputSearch.vue?vue&type=style&index=0&id=35f59e54&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputSearch.vue?vue&type=style&index=0&id=35f59e54&lang=less&scoped=true&\"","declare const window: any;\r\n\r\nexport interface IStorage {\r\n isImplemented(): boolean;\r\n\r\n getItem(key: string): string | null;\r\n\r\n getItemAs(key: string): T | null;\r\n\r\n setItem(key: string, value: any): boolean;\r\n\r\n setItemAs(key: string, data: T): void;\r\n\r\n removeItem(key: string): void;\r\n\r\n clear(): boolean;\r\n\r\n key(index: number): string | null;\r\n}\r\n\r\nclass BaseStorage implements IStorage {\r\n constructor(private store: any) {}\r\n\r\n public isImplemented(): boolean {\r\n return true;\r\n }\r\n\r\n public getItemAs(key: string): T | null {\r\n const item = this.store.getItem(key);\r\n try {\r\n return item !== null ? (JSON.parse(item) as T) : null;\r\n } catch (err) {\r\n return null;\r\n }\r\n }\r\n\r\n public setItemAs(key: string, data: T): void {\r\n this.setItem(key, JSON.stringify(data));\r\n }\r\n\r\n public getItem(key: string): string | null {\r\n return this.store.getItem(key);\r\n }\r\n\r\n public setItem(key: string, value: any): boolean {\r\n try {\r\n this.store.setItem(key, value);\r\n return true;\r\n } catch (ex) {\r\n return false;\r\n }\r\n }\r\n\r\n public removeItem(key: string): void {\r\n return this.store.removeItem(key);\r\n }\r\n\r\n public clear() {\r\n return this.store.clear();\r\n }\r\n\r\n public key(index: number): string | null {\r\n return this.store.key(index);\r\n }\r\n}\r\n\r\nclass FakeStorage implements IStorage {\r\n public isImplemented(): boolean {\r\n return false;\r\n }\r\n\r\n public getItem(key: string): string | null {\r\n return null;\r\n }\r\n\r\n public setItem(key: string, value: any): boolean {\r\n return false;\r\n }\r\n\r\n public getItemAs(key: string): T | null {\r\n return null;\r\n }\r\n\r\n public setItemAs(key: string, data: T): void {\r\n return undefined;\r\n }\r\n\r\n public removeItem(key: string): void {\r\n return undefined;\r\n }\r\n\r\n public clear(): boolean {\r\n return true;\r\n }\r\n\r\n public key(index: number): string | null {\r\n return null;\r\n }\r\n}\r\n\r\nconst hasStorage = ($window: any, name: string) => {\r\n const hasStorageSupport = name in $window;\r\n if (!hasStorageSupport) {\r\n return false;\r\n }\r\n const testKey = 'storageTest';\r\n try {\r\n // this check has to be wrapped within a try/catch because of\r\n // a SecurityError: Dom Exception 18 on iOS\r\n if ($window[name] !== null) {\r\n $window[name].setItem(testKey, 'foo');\r\n $window[name].removeItem(testKey);\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } catch (e) {\r\n return false;\r\n }\r\n};\r\n\r\nexport const localStorageService: IStorage = hasStorage(window, 'localStorage')\r\n ? new BaseStorage(window.localStorage)\r\n : new FakeStorage();\r\n\r\nexport const sessionStorageService: IStorage = hasStorage(window, 'sessionStorage')\r\n ? new BaseStorage(window.sessionStorage)\r\n : new FakeStorage();\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandHeader.vue?vue&type=style&index=0&id=6bba4424&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandHeader.vue?vue&type=style&index=0&id=6bba4424&lang=less&scoped=true&\"","import Api from '@/project/http/Api.service';\r\nimport AbstractBulkFetch from '@/core/bulk-fetch/AbstractBulkFetch';\r\nimport { StockViewObject } from '@/types/apiServerContract';\r\nimport { keyBy } from 'lodash';\r\n\r\nexport interface StockViewObjectExtended extends StockViewObject {\r\n isServiceAvailable: boolean;\r\n}\r\n\r\nclass StockFetchService extends AbstractBulkFetch {\r\n async apiCall(itemIds: string[], cancelKey: string): Promise<{ [key: string]: StockViewObjectExtended }> {\r\n const result = await Api.stock.stockProducts(itemIds, cancelKey);\r\n const stocks = result.stockByItemId.map(stock => ({\r\n ...stock,\r\n isServiceAvailable: result.isServiceAvailable\r\n }) as StockViewObjectExtended);\r\n return keyBy(stocks, 'itemId');\r\n }\r\n}\r\n\r\nexport default new StockFetchService('Stock', 100, true, true);\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.campaignIconUrl)?_c('div',{staticClass:\"campaign-image\"},[_c('img',{directives:[{name:\"on-error\",rawName:\"v-on-error\"}],attrs:{\"src\":_vm.campaignIconUrl,\"alt\":\"campaign-icon\"}})]):_c('c-icon',_vm._b({attrs:{\"name\":_vm.campaignCode}},'c-icon',_vm.$attrs,false))}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\r\nimport { Vue, Prop, Component } from 'vue-property-decorator';\r\nimport Api from '@/project/http/Api.service';\r\n\r\nconst CLEARANCE_CODE = 'clearance';\r\n\r\n@Component\r\nexport default class CampaignIcon extends Vue {\r\n @Prop({ required: true, type: String })\r\n private campaignCode!: string;\r\n\r\n private campaignIconUrl: string | null = null;\r\n\r\n private async getCampaignWithIcon() {\r\n // This icon is a local SVG\r\n if (this.campaignCode.toLowerCase() === CLEARANCE_CODE) return;\r\n\r\n try {\r\n const campaign = await Api.product.getCampaignWithIcon(this.campaignCode);\r\n this.campaignIconUrl = campaign.campaignIconUrl ?? null;\r\n } catch {\r\n // not found\r\n }\r\n }\r\n\r\n created() {\r\n this.getCampaignWithIcon();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CampaignIcon.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CampaignIcon.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CampaignIcon.vue?vue&type=template&id=75fb7d24&scoped=true&\"\nimport script from \"./CampaignIcon.vue?vue&type=script&lang=ts&\"\nexport * from \"./CampaignIcon.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CampaignIcon.vue?vue&type=style&index=0&id=75fb7d24&lang=less&scoped=true&\"\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 \"75fb7d24\",\n null\n \n)\n\nexport default component.exports","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'lyn3': {\r\n width: 35,\r\n height: 25,\r\n viewBox: '0 0 35 25',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'oprema-splash-new': {\r\n width: 47.509,\r\n height: 47.509,\r\n viewBox: '0 0 35.64 35.64',\r\n data: ''\r\n }\r\n})\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageFooter.vue?vue&type=style&index=0&id=0466bb24&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageFooter.vue?vue&type=style&index=0&id=0466bb24&lang=less&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{class:{ 'o-container': _vm.enableContainer }},[_c('section',{staticClass:\"md:mb-25 px-20 sm:px-0\"},[_c('div',{staticClass:\"flex flex-col md:flex-row w-full justify-between md:items-center mb-20\"},[_vm._t(\"headline\",function(){return [(_vm.searchTitle)?[_c('div',[(_vm.searchTitle)?_c('h1',{staticClass:\"leading-none inline-block\"},[_vm._v(\" \"+_vm._s(_vm.searchTitle)+\" \")]):_vm._e(),(_vm.totalResults > 0 && _vm.contextKey === 'campaigns')?_c('span',{staticClass:\"text-gray-800 leading-none mr-auto pl-5\"},[_vm._v(\" (\"+_vm._s(_vm.totalResultsTxt(_vm.totalResults))+\") \")]):_vm._e()])]:(_vm.term)?_c('h1',{staticClass:\"number-of-results md:text-34 leading-none\",class:{ 'dim-result' : _vm.typing || _vm.searching }},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Search.FoundNumberOfResults',_vm.term, _vm.totalResultsTxt(_vm.totalResults)))+\" \")]):(_vm.activeMenu)?[_c('div',[_c('h1',{staticClass:\"leading-none inline-block\"},[_vm._v(\" \"+_vm._s(_vm.activeMenu.name)+\" \")]),_c('span',{staticClass:\"h1 text-gray-800 leading-none mr-auto pl-5\"},[_vm._v(\"(\"+_vm._s(_vm.totalResultsTxt(_vm.totalResults))+\")\")])])]:_vm._e()]}),_c('div',{staticClass:\"flex flex-col items-end mt-15 md:mt-0\"},[(!_vm.hideAdminOptions && !_vm.isExternalProductGuide)?_c('AdminOptions',{staticClass:\"mb-15 md:mb-0\",attrs:{\"category-id\":_vm._f(\"op\")(_vm.activeMenu,'id'),\"page-size\":_vm.pageSize,\"campaign-code\":_vm.campaignCode,\"brand-name\":_vm.brandName,\"explanation\":_vm.explanation}}):_vm._e(),_c('div',{staticClass:\"w-full md:hidden\"},[_c('MobileNavigationAndFacets',{attrs:{\"context-key\":_vm.contextKey,\"campaign-code\":_vm.campaignCode,\"menu-items\":_vm.menuItems,\"root-menu-item\":_vm.rootMenuItem,\"active-menu-item\":_vm.activeMenu,\"facets\":_vm.facets.concat( _vm.filters),\"use-flattened-category-tree\":_vm.useFlattenedCategoryTree}})],1)],1)],2),(!_vm.searching)?[(_vm.replacedTerm)?_c('div',[_c('h2',{staticClass:\"mb-20\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Search.TermReplaced',_vm.term, _vm.replacedTerm))+\" \")])]):(_vm.spellingSuggestions && _vm.spellingSuggestions.length > 0)?_c('div',[_c('h2',{staticClass:\"mb-20\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Search.SpellingSuggestions'))+\" \")]),_c('div',{staticClass:\"flex flex-wrap\"},_vm._l((_vm.spellingSuggestions),function(suggestion){return _c('CallToAction',{key:suggestion.suggestion,staticClass:\"cta--white mr-20 last:mr-0 mb-15\",attrs:{\"href\":_vm.termSearchLink(suggestion.suggestion),\"replace\":\"\"}},[_vm._v(\" \"+_vm._s(suggestion.suggestion)+\" \")])}),1)]):_vm._e()]:_vm._e()],2),_c('WithSideNavigation',{attrs:{\"has-left-menu\":_vm.hasLeftMenu,\"enable-container\":false,\"left-side-class\":\"w-1/5\"}},[_c('section',{attrs:{\"slot\":\"left\"},slot:\"left\"},[(_vm.menuItems.length > 0)?_vm._t(\"navigation\",null,{\"menuItems\":_vm.menuItems}):_vm._e()],2),_c('section',{staticClass:\"relative h-full\",attrs:{\"slot\":\"main\"},slot:\"main\"},[(_vm.searching)?_c('div',{staticClass:\"fixed inset-0 z-2 max-h-screen pointer-events-none\"},[_c('SpinnerOverlay',{attrs:{\"show\":\"\",\"delay\":500,\"min-duration\":500}})],1):_vm._e(),(_vm.pageBlocks && _vm.pageBlocks.length > 0)?_c('BlockList',{staticClass:\"mb-20\",attrs:{\"blocks\":_vm.pageBlocks,\"enable-container\":false}}):_vm._e(),(_vm.showBlocksAndProducts || _vm.showAllProducts || !(_vm.pageBlocks && _vm.pageBlocks.length > 0))?_c('div',[(!_vm.hideFacets)?_c('div',{staticClass:\"px-20 sm:px-0 relative md:mb-20\"},[(_vm.blocks)?_c('BlockList',{attrs:{\"blocks\":_vm.blocks}}):_vm._e(),(_vm.products.length > 0)?_c('Breakpoints',{scopedSlots:_vm._u([{key:\"min-md\",fn:function(){return [(_vm.facets.length > 0 || _vm.filters.length > 0)?_c('article',{staticClass:\"relative\"},[_c('section',{staticClass:\"flex flex-row flex-wrap bg-gray-400 p-20 relative\",attrs:{\"id\":\"facets-container\"}},[_vm._l((_vm.facets),function(facet){return _c('FacetPickerCheckbox',{key:facet.facetId,staticClass:\"mr-10 last:mr-0 my-5\",attrs:{\"facet\":facet},on:{\"active\":_vm.setFacetPickerState}})}),(_vm.filters)?_c('div',{staticClass:\"flex flex-row justify-end flex-1\"},_vm._l((_vm.filters),function(facet,index){return _c('FacetPickerCheckbox',{key:facet.facetId,staticClass:\"mr-10 last:mr-0 my-5\",attrs:{\"facet\":facet,\"last\":index === _vm.filters.length - 1},on:{\"active\":_vm.setFacetPickerState}})}),1):_vm._e()],2),_c('FacetQuickView',{staticClass:\"mt-10\",attrs:{\"facets\":_vm.facets.concat( _vm.filters),\"menu-items\":_vm.menuItems}})],1):_vm._e()]},proxy:true}],null,false,4258286461)}):_vm._e()],1):_vm._e(),_c('div',[_c('SearchProductResultList',{attrs:{\"products\":_vm.products,\"tracking-list-name\":_vm.trackingListName,\"brand-name\":_vm.brandName,\"context-key\":_vm.contextKey,\"page-id\":_vm.pageId}}),(_vm.categoryId && _vm.products.length === 0 && _vm.hasItemSelectionCode)?_c('div',[_c('h1',[_vm._v(_vm._s(_vm._f(\"t\")('Search.ItemSelectionCode.EmptyCategory')))])]):_vm._e()],1),(_vm.totalResults > _vm.pageSize)?_c('PagingCtrl',{staticClass:\"mt-40\",attrs:{\"total-results\":_vm.totalResults,\"page-size\":_vm.pageSize,\"searching\":_vm.searching}}):_vm._e()],1):_vm._e(),(_vm.pageBlocksBelow && _vm.pageBlocksBelow.length > 0)?_c('BlockList',{staticClass:\"mt-40 mb-20\",attrs:{\"blocks\":_vm.pageBlocksBelow,\"enable-container\":false}}):_vm._e()],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('call-to-action',{staticClass:\"cta-small cta--white cta--mobile-filters w-full\",attrs:{\"icon\":\"filters\"},on:{\"click\":function($event){return _vm.showOverlay()}}},[_c('span',[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Search.FiltersAndSortTitle'))+\" \"),(_vm.numberOfSelectedFacets)?_c('span',{staticClass:\"text-gray-700\"},[_vm._v(\"(\"+_vm._s(_vm.numberOfSelectedFacets)+\")\")]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { AbstractModalService } from '@/core/modals/AbstractModalService';\r\nimport { ModalOptions } from '@/core/modals/ModalState';\r\nimport { FacetViewObject, MenuItem } from '@/types/apiServerContract';\r\n\r\nclass MobileNavigationAndFacetsOverlayService extends AbstractModalService {\r\n public show(\r\n contextKey: string,\r\n initialFacets: FacetViewObject[] | null,\r\n rootMenuItem: MenuItem | null,\r\n activeMenuItem: MenuItem | null,\r\n campaignCode: string,\r\n menuItems: readonly MenuItem[],\r\n useFlattenedCategoryTree: boolean,\r\n options?: Partial\r\n ) {\r\n return this.showModal({\r\n component: () => import(\r\n /* webpackPrefetch: true */\r\n '@/project/search/navigation/MobileNavigationAndFacetsOverlay.vue'),\r\n componentAttrs: {\r\n contextKey,\r\n initialFacets,\r\n rootMenuItem,\r\n activeMenuItem,\r\n campaignCode,\r\n menuItems,\r\n useFlattenedCategoryTree\r\n },\r\n options: {\r\n placement: 'right',\r\n usePanelWrapper: false,\r\n closeOnRouteChange: true,\r\n closeOnBreakpointChange: true,\r\n contentMaxHeight: false,\r\n ...options\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default new MobileNavigationAndFacetsOverlayService();\r\n","\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop, Watch } from 'vue-property-decorator';\r\nimport { FacetViewObject, MenuItem } from '@/types/apiServerContract';\r\nimport mobileNavigationAndFacetsOverlay from '@/project/modals/overlays/MobileNavigationAndFacetsOverlay.service';\r\nimport bus from '@/core/bus';\r\nimport { MobileFacetsUpdateEventKey } from '@/core/http/constants';\r\nimport { debounce } from 'lodash';\r\n\r\n@Component({\r\n components: { }\r\n})\r\nexport default class MobileNavigationAndFacets extends Vue {\r\n @Prop({ type: String, required: true })\r\n private contextKey!: string;\r\n\r\n @Prop({ type: Array })\r\n private readonly facets!: FacetViewObject[] | null;\r\n\r\n @Prop({ type: Object })\r\n private readonly rootMenuItem!: MenuItem | null;\r\n\r\n @Prop({ type: Object })\r\n private activeMenuItem!: MenuItem | null;\r\n\r\n @Prop({ type: String, default: '' })\r\n private campaignCode!: string;\r\n\r\n @Prop({ type: Array })\r\n private menuItems!: MenuItem[];\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private useFlattenedCategoryTree!: boolean;\r\n\r\n private debouncedSendFacetsChangeEvent = debounce(this.sendFacetsChangeEvent, 70);\r\n\r\n @Watch('facets')\r\n onFacetsChange() {\r\n this.debouncedSendFacetsChangeEvent();\r\n }\r\n\r\n private sendFacetsChangeEvent() {\r\n bus.emit(MobileFacetsUpdateEventKey, { facets: this.facets });\r\n }\r\n\r\n get numberOfSelectedFacets(): number {\r\n const selectedFacets = (this.facets || []).filter(({ enabled }) => enabled)\r\n .reduce((count, { values }) => count + values.filter(({ selected }) => selected).length, 0);\r\n\r\n const selectedCategories = (this.menuItems || []).filter(({ selected }) => selected).length;\r\n\r\n return selectedFacets + selectedCategories;\r\n }\r\n\r\n private showOverlay() {\r\n mobileNavigationAndFacetsOverlay.show(\r\n this.contextKey,\r\n this.facets,\r\n this.rootMenuItem,\r\n this.activeMenuItem,\r\n this.campaignCode,\r\n this.menuItems,\r\n this.useFlattenedCategoryTree);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileNavigationAndFacets.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileNavigationAndFacets.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MobileNavigationAndFacets.vue?vue&type=template&id=f8813fc8&\"\nimport script from \"./MobileNavigationAndFacets.vue?vue&type=script&lang=ts&\"\nexport * from \"./MobileNavigationAndFacets.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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isStaff && !_vm.isImpersonating)?_c('call-to-action',{ref:\"cta\",staticClass:\"cta cta--white cta--small\",attrs:{\"dropdown\":\"\",\"icon\":\"arrow-down\",\"icon-is-after\":\"\"},scopedSlots:_vm._u([{key:\"dropdown\",fn:function(){return [_c('button',{staticClass:\"admin-button\",attrs:{\"disabled\":_vm.productIdsCopiedLoading},on:{\"click\":function($event){return _vm.copyWIDs()}}},[(_vm.productIdsCopied)?[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Generic.Copied'))+\" \")]:[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Search.CopyWID'))+\" \")]],2),_c('button',{staticClass:\"admin-button\",attrs:{\"disabled\":_vm.productIdsCopiedLoading},on:{\"click\":function($event){return _vm.copyMPNs()}}},[(_vm.productMPNsCopied)?[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Generic.Copied'))+\" \")]:[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Search.CopyMPN'))+\" \")]],2),_c('button',{staticClass:\"admin-button\",attrs:{\"disabled\":_vm.productExportLoading},on:{\"click\":function($event){return _vm.requestProductExport(false)}}},[(_vm.productExportLoading)?[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.ExportButton.Loading'))+\" \")]:[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.ExportButton'))+\" \")]],2),_c('button',{staticClass:\"admin-button\",attrs:{\"disabled\":_vm.productExportIcecatLoading},on:{\"click\":function($event){return _vm.requestProductExport(true)}}},[(_vm.productExportIcecatLoading)?[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.ExportButton.Loading'))+\" \")]:[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.ExportButtonIcecat'))+\" \")]],2),_c('button',{staticClass:\"admin-button\",on:{\"click\":function($event){return _vm.toggleShowScore()}}},[(_vm.showScore)?[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Search.HideScore'))+\" \")]:[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Search.ShowScore'))+\" \")]],2),_c('button',{staticClass:\"admin-button\",attrs:{\"disabled\":_vm.rawResultDownloading},on:{\"click\":function($event){return _vm.downloadRawResult()}}},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Search.DownloadRawResult'))+\" \")]),_c('button',{staticClass:\"admin-button\",attrs:{\"disabled\":_vm.searchExplanationDownloading},on:{\"click\":function($event){return _vm.downloadExplanation()}}},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Search.DownloadExplanation'))+\" \")]),_c('button',{staticClass:\"admin-button\",attrs:{\"disabled\":_vm.clearBoostCacheLoading},on:{\"click\":function($event){return _vm.clearBoostCache()}}},[(_vm.boostCacheCleared)?[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Generic.BoostCacheCleared'))+\" \")]:[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Generic.ClearBoostCache'))+\" \")]],2)]},proxy:true}],null,false,711038755)},[_c('p',{staticClass:\"text-14\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Administration.Options'))+\" \")])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport downloadService, { DownloadContentType } from '@/project/download/download.service';\r\nimport permissionService from '@/project/auth/permission.service';\r\nimport urlHelperService from '@/core/urlHelper.service';\r\nimport Api from '@/project/http/Api.service';\r\nimport CopyService from '@/core/copy/copy.service';\r\nimport CallToAction from '@/project/form/CallToAction.vue';\r\nimport { ProductTileViewObject } from '@/types/apiServerContract';\r\nimport bus from '@/core/bus';\r\nimport { GeneralErrorEventKey, ClientMessageType, ClientMessageWithError } from '@/core/messages/types';\r\nimport impersonationService from '@/project/shared/impersonation/impersonation.service';\r\n\r\n@Component({\r\n components: { }\r\n})\r\nexport default class SearchAdminOptions extends Vue {\r\n @Prop(String)\r\n private categoryId!: string;\r\n\r\n @Prop(Number)\r\n private pageSize!: number;\r\n\r\n @Prop(String)\r\n private campaignCode!: string;\r\n\r\n @Prop(String)\r\n private brandName!: string;\r\n\r\n @Prop(Array)\r\n private products!: ProductTileViewObject[] | undefined;\r\n\r\n private productIdsCopied = false;\r\n private productMPNsCopied = false;\r\n private productIdsCopiedLoading = false;\r\n private productExportLoading = false;\r\n private productExportIcecatLoading = false;\r\n private clearBoostCacheLoading = false;\r\n private boostCacheCleared = false;\r\n private rawResultDownloading = false;\r\n private searchExplanationDownloading = false;\r\n private showScore = urlHelperService.getShowScore();\r\n\r\n private get isStaff(): boolean {\r\n return permissionService.isStaff();\r\n }\r\n\r\n private get isImpersonating(): boolean {\r\n return impersonationService.isImpersonating;\r\n }\r\n\r\n private toggleShowScore() {\r\n this.showScore = !this.showScore;\r\n urlHelperService.setShowScore(this.showScore);\r\n }\r\n\r\n private async downloadRawResult(): Promise {\r\n this.rawResultDownloading = true;\r\n\r\n try {\r\n const rawResult = await Api.search.raw({\r\n categoryId: this.categoryId || urlHelperService.getCategoryId() || '',\r\n categoryIds: urlHelperService.getCategoryIds(),\r\n term: urlHelperService.getTerm() ?? '',\r\n lastFacet: urlHelperService.getLastFacet() || '',\r\n page: urlHelperService.getPage(),\r\n pageSize: this.pageSize,\r\n filter: urlHelperService.getSearchFilterId(),\r\n priceSort: urlHelperService.getSearchPriceSortFilter(),\r\n campaignCode: this.campaignCode,\r\n brandName: this.brandName,\r\n showScore: urlHelperService.getShowScore(),\r\n explain: urlHelperService.getShowExplanation(),\r\n wIds: urlHelperService.getWidsFromTerm(),\r\n useFlattenedCategoryTree: false\r\n }, urlHelperService.getFacets());\r\n\r\n downloadService.downloadFile(rawResult, 'raw-result.json', DownloadContentType.JSON);\r\n } finally {\r\n this.rawResultDownloading = false;\r\n }\r\n }\r\n\r\n private async downloadExplanation(): Promise {\r\n this.searchExplanationDownloading = true;\r\n\r\n try {\r\n const result = await Api.search.search({\r\n categoryId: this.categoryId || urlHelperService.getCategoryId() || '',\r\n categoryIds: urlHelperService.getCategoryIds(),\r\n term: urlHelperService.getTerm() ?? '',\r\n lastFacet: urlHelperService.getLastFacet() || '',\r\n page: urlHelperService.getPage(),\r\n pageSize: this.pageSize,\r\n filter: urlHelperService.getSearchFilterId(),\r\n priceSort: urlHelperService.getSearchPriceSortFilter(),\r\n campaignCode: this.campaignCode,\r\n brandName: this.brandName,\r\n showScore: urlHelperService.getShowScore(),\r\n explain: true,\r\n wIds: urlHelperService.getWidsFromTerm(),\r\n useFlattenedCategoryTree: false\r\n }, urlHelperService.getFacets(), 'admin');\r\n\r\n if (result.explanation) {\r\n downloadService.downloadFile(result.explanation, 'search-explanation.json', DownloadContentType.JSON);\r\n }\r\n } finally {\r\n this.searchExplanationDownloading = false;\r\n }\r\n }\r\n\r\n private async clearBoostCache(): Promise {\r\n try {\r\n this.clearBoostCacheLoading = true;\r\n\r\n await Api.search.clearBoostCache();\r\n\r\n this.boostCacheCleared = true;\r\n\r\n setTimeout(() => {\r\n this.boostCacheCleared = false;\r\n this.$refs.cta.closeDropdown();\r\n }, 1500);\r\n } finally {\r\n this.clearBoostCacheLoading = false;\r\n }\r\n }\r\n\r\n private async copyMPNs() {\r\n this.productIdsCopiedLoading = true;\r\n try {\r\n let mpns: string[] = [];\r\n\r\n if (this.products) {\r\n mpns = this.products.filter(x => !!x.mpn).map(x => x.mpn) as string[];\r\n } else {\r\n const result = await Api.search.productIds({\r\n categoryId: this.categoryId || urlHelperService.getCategoryId() || '',\r\n categoryIds: urlHelperService.getCategoryIds(),\r\n term: urlHelperService.getTerm() ?? '',\r\n lastFacet: urlHelperService.getLastFacet() || '',\r\n page: urlHelperService.getPage(),\r\n pageSize: this.pageSize,\r\n filter: urlHelperService.getSearchFilterId(),\r\n priceSort: urlHelperService.getSearchPriceSortFilter(),\r\n campaignCode: this.campaignCode,\r\n brandName: this.brandName,\r\n showScore: urlHelperService.getShowScore(),\r\n explain: urlHelperService.getShowExplanation(),\r\n wIds: urlHelperService.getWidsFromTerm(),\r\n useFlattenedCategoryTree: false\r\n }, urlHelperService.getFacets());\r\n\r\n mpns = result.products.filter(x => !!x.mpn).map(x => x.mpn) as string[];\r\n }\r\n\r\n const text = mpns.join('\\n');\r\n CopyService.copyTextToClipboard(text);\r\n\r\n this.productIdsCopiedLoading = false;\r\n this.productMPNsCopied = true;\r\n\r\n setTimeout(() => {\r\n this.productMPNsCopied = false;\r\n this.$refs.cta.closeDropdown();\r\n }, 1500);\r\n } finally {\r\n this.productIdsCopiedLoading = false;\r\n }\r\n }\r\n\r\n private async copyWIDs() {\r\n this.productIdsCopiedLoading = true;\r\n try {\r\n let productIds: string[] = [];\r\n\r\n if (this.products) {\r\n productIds = this.products.filter(x => !!x.wid).map(x => x.wid) as string[];\r\n } else {\r\n const result = await Api.search.productIds({\r\n categoryId: this.categoryId || urlHelperService.getCategoryId() || '',\r\n categoryIds: urlHelperService.getCategoryIds(),\r\n term: urlHelperService.getTerm() ?? '',\r\n lastFacet: urlHelperService.getLastFacet() || '',\r\n page: urlHelperService.getPage(),\r\n pageSize: this.pageSize,\r\n filter: urlHelperService.getSearchFilterId(),\r\n priceSort: urlHelperService.getSearchPriceSortFilter(),\r\n campaignCode: this.campaignCode,\r\n brandName: this.brandName,\r\n showScore: urlHelperService.getShowScore(),\r\n explain: urlHelperService.getShowExplanation(),\r\n wIds: urlHelperService.getWidsFromTerm(),\r\n useFlattenedCategoryTree: false\r\n }, urlHelperService.getFacets());\r\n\r\n productIds = result.products.filter(x => !!x.id).map(x => x.id) as string[];\r\n }\r\n\r\n const text = productIds.join('\\n');\r\n CopyService.copyTextToClipboard(text);\r\n\r\n this.productIdsCopiedLoading = false;\r\n this.productIdsCopied = true;\r\n\r\n setTimeout(() => {\r\n this.productIdsCopied = false;\r\n this.$refs.cta.closeDropdown();\r\n }, 1500);\r\n } finally {\r\n this.productIdsCopiedLoading = false;\r\n }\r\n }\r\n\r\n private async requestProductExport(icecatMode: boolean) {\r\n if (icecatMode) {\r\n this.productExportIcecatLoading = true;\r\n } else {\r\n this.productExportLoading = true;\r\n }\r\n\r\n try {\r\n await Api.search.requestProductExport({\r\n categoryId: this.categoryId || urlHelperService.getCategoryId() || '',\r\n categoryIds: urlHelperService.getCategoryIds(),\r\n term: urlHelperService.getTerm() ?? '',\r\n lastFacet: urlHelperService.getLastFacet() || '',\r\n page: urlHelperService.getPage(),\r\n pageSize: this.pageSize,\r\n filter: urlHelperService.getSearchFilterId(),\r\n priceSort: urlHelperService.getSearchPriceSortFilter(),\r\n campaignCode: this.campaignCode,\r\n brandName: this.brandName,\r\n showScore: urlHelperService.getShowScore(),\r\n explain: urlHelperService.getShowExplanation(),\r\n wIds: urlHelperService.getWidsFromTerm(),\r\n useFlattenedCategoryTree: false\r\n },\r\n window.location.toString(),\r\n icecatMode,\r\n urlHelperService.getFacets());\r\n\r\n bus.emit(GeneralErrorEventKey, {\r\n errorId: '',\r\n messages: [{\r\n message: 'Product.ExportButton.Success',\r\n messageType: ClientMessageType.Info\r\n }]\r\n } as ClientMessageWithError);\r\n\r\n this.productExportLoading = false;\r\n this.productExportIcecatLoading = false;\r\n } finally {\r\n this.productExportLoading = false;\r\n this.productExportIcecatLoading = false;\r\n }\r\n }\r\n\r\n public $refs!: Vue['$refs'] & {\r\n cta: CallToAction\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchAdminOptions.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchAdminOptions.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchAdminOptions.vue?vue&type=template&id=b649e750&scoped=true&\"\nimport script from \"./SearchAdminOptions.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchAdminOptions.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SearchAdminOptions.vue?vue&type=style&index=0&id=b649e750&lang=less&scoped=true&\"\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 \"b649e750\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ProductListTracker',{attrs:{\"products\":_vm.products,\"list-name\":_vm.trackingListName},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar productImpression = ref.productImpression;\nvar productClick = ref.productClick;\nreturn _vm._l((_vm.products),function(product,index){return _c('div',{key:product.wid,staticClass:\"mb-10 last:mb-0\"},[_c('ProductTile',{staticClass:\"bg-white\",attrs:{\"product\":product,\"product-click\":productClick,\"tracking-list-name\":_vm.trackingListName},on:{\"productImpression\":productImpression}}),(_vm.isBannerAllowedOnPage && _vm.showProductContentAtIndex(index))?_c('AdnuntiusProductBannerBlock',{staticClass:\"my-10\",attrs:{\"list-location\":_vm.contextKey,\"products\":_vm.products,\"brand-name\":_vm.brandName}}):_vm._e()],1)})}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.adContentBlockViewModel && !_vm.contentLoadError)?_c('div',[_c('adnuntius-pixels',{attrs:{\"rendered-url\":_vm.renderedPixelUrl,\"visible-url\":_vm.visiblePixelUrl,\"view-url\":_vm.viewPixelUrl,\"click-url\":_vm.clickPixelUrl,\"tracking-data\":_vm.adnuntiusTrackingData},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar click = ref.click;\nreturn [_c('image-text-video-block',{attrs:{\"content\":_vm.adContentBlockViewModel,\"content-load-error\":_vm.contentLoadError,\"width-on-screen\":100,\"aspect-ratio\":1200/230,\"is-first-block\":false,\"click-handler\":click}})]}}],null,false,1121790374)})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport ImageTextVideoBlock from './ImageTextVideoBlock.vue';\r\nimport AdnuntiusPixels from '@/project/tracking/adnuntius/AdnuntiusPixels.vue';\r\nimport { AdContentBlockViewModel, ProductTileViewObject } from '@/types/apiServerContract';\r\nimport adnuntiusService from '@/project/personalization/adnuntius.service';\r\nimport { AdnuntiusTrackingData } from '@/project/tracking/adnuntius/types';\r\nimport Api from '@/project/http/Api.service';\r\nimport { uniqBy } from 'lodash';\r\nimport urlHelperService from '@/core/urlHelper.service';\r\n\r\n@Component({\r\n components: { AdnuntiusPixels, ImageTextVideoBlock }\r\n})\r\nexport default class AdnuntiusProductBannerBlock extends Vue {\r\n @Prop({ type: Array, required: true })\r\n private products!: ProductTileViewObject[];\r\n\r\n @Prop({ required: true, type: String })\r\n private listLocation!: string;\r\n\r\n @Prop({ required: true, type: String })\r\n private brandName!: string;\r\n\r\n private adContentBlockViewModel: AdContentBlockViewModel | null = null;\r\n private contentLoadError = false;\r\n private adnuntiusTrackingData: AdnuntiusTrackingData | null = null;\r\n\r\n private created() {\r\n this.getAdContent();\r\n }\r\n\r\n private async getAdContent() {\r\n try {\r\n this.adContentBlockViewModel = await Api.personalization.productListBanner({\r\n listLocation: this.listLocation,\r\n contactKey: adnuntiusService.getContactKey(),\r\n customerKey: adnuntiusService.getCustomerKey(),\r\n currentUrl: this.$route.fullPath,\r\n brandName: this.brandName,\r\n itemIds: this.products.map(x => x.itemId),\r\n brands: uniqBy(this.products.map(x => x.brand), x => x),\r\n categoryIds: uniqBy(this.products.filter(x => !!x.categoryId).map(x => x.categoryId as string), x => x),\r\n searchTerm: urlHelperService.getTerm()\r\n });\r\n\r\n if (this.adContentBlockViewModel.lineItemId && this.adContentBlockViewModel.creativeId) {\r\n this.adnuntiusTrackingData = {\r\n lineItemId: this.adContentBlockViewModel.lineItemId,\r\n creativeId: this.adContentBlockViewModel.creativeId,\r\n parentBlockAlias: 'productBannerBlock'\r\n };\r\n }\r\n } catch {\r\n this.contentLoadError = true;\r\n }\r\n }\r\n\r\n private get renderedPixelUrl() {\r\n return this.adContentBlockViewModel?.renderedPixelUrl;\r\n }\r\n\r\n private get viewPixelUrl() {\r\n return this.adContentBlockViewModel?.viewPixelUrl;\r\n }\r\n\r\n private get visiblePixelUrl() {\r\n return this.adContentBlockViewModel?.visiblePixelUrl;\r\n }\r\n\r\n private get clickPixelUrl() {\r\n return this.adContentBlockViewModel?.clickPixelUrl;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdnuntiusProductBannerBlock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdnuntiusProductBannerBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdnuntiusProductBannerBlock.vue?vue&type=template&id=738f4403&\"\nimport script from \"./AdnuntiusProductBannerBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdnuntiusProductBannerBlock.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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Prop, Component } from 'vue-property-decorator';\r\nimport { ProductTileViewObject } from '@/types/apiServerContract';\r\nimport ProductListTracker from '@/project/tracking/gtm/ProductListTracker.vue';\r\nimport serverContext from '@/core/serverContext.service';\r\nimport AdnuntiusProductBannerBlock from '@/project/app/blocks/AdnuntiusProductBannerBlock.vue';\r\n\r\n@Component({\r\n components: { AdnuntiusProductBannerBlock, ProductListTracker }\r\n})\r\nexport default class SearchProductResultList extends Vue {\r\n @Prop({ type: Array, required: true })\r\n private products!: ProductTileViewObject[];\r\n\r\n @Prop({ required: true, type: String })\r\n private trackingListName!: string;\r\n\r\n @Prop({ required: true, type: String })\r\n private brandName!: string;\r\n\r\n @Prop({ type: String, required: true })\r\n private contextKey!: string;\r\n\r\n @Prop({ type: Number, required: true })\r\n private pageId!: number;\r\n\r\n private get isBannerAllowedOnPage() {\r\n return this.pageId % 2 === 1;\r\n }\r\n\r\n private get placementIndex(): number {\r\n const index = serverContext.settings?.productListContentPlacementIndex ?? -1;\r\n return index > 0 ? Math.max(0, index - 1) : index;\r\n }\r\n\r\n private showProductContentAtIndex(index: number) {\r\n if (this.placementIndex < 0) return false;\r\n\r\n // If wanted placement is higher than result count, then place it at the end\r\n const maxIndex = this.products.length - 1;\r\n if (maxIndex <= this.placementIndex) {\r\n return index === maxIndex;\r\n }\r\n\r\n return index === this.placementIndex;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchProductResultList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchProductResultList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchProductResultList.vue?vue&type=template&id=c3e28c92&\"\nimport script from \"./SearchProductResultList.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchProductResultList.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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop, Watch } from 'vue-property-decorator';\r\nimport PagingCtrl from './PagingCtrl.vue';\r\nimport scrollService from '@/core/scroll/scroll.service';\r\nimport urlHelper from '@/core/urlHelper.service';\r\nimport MobileNavigationAndFacets from '@/project/search/navigation/MobileNavigationAndFacets.vue';\r\nimport { FacetsViewModel, FacetViewObject, MenuItem, ProductTileViewObject, SearchTranslationViewObject, SearchViewModel, SuggestionViewObject } from '@/types/apiServerContract';\r\nimport FacetPickerCheckbox from './facets/FacetPickerCheckbox.vue';\r\nimport FacetQuickView from './facets/FacetQuickView.vue';\r\nimport localeNumberFilter from '@/project/filters/localeNumber.filter';\r\nimport { RawLocation } from 'vue-router';\r\nimport { JsonContent } from '@/types/contentServerContract';\r\nimport SpinnerOverlay from '@/project/spinners/SpinnerOverlay.vue';\r\nimport { PRODUCT_SEARCH_COUNT } from './constants';\r\nimport AdminOptions from './SearchAdminOptions.vue';\r\nimport WithSideNavigation from '@/project/layout/navigation/WithSideNavigation.vue';\r\nimport SearchProductResultList from './SearchProductResultList.vue';\r\nimport serverContextService from '@/core/serverContext.service';\r\n\r\n@Component({\r\n components: {\r\n MobileNavigationAndFacets,\r\n PagingCtrl,\r\n FacetPickerCheckbox,\r\n FacetQuickView,\r\n SpinnerOverlay,\r\n AdminOptions,\r\n WithSideNavigation,\r\n SearchProductResultList\r\n }\r\n})\r\nexport default class SearchResultPanel extends Vue {\r\n @Prop({ type: String, required: true })\r\n private contextKey!: string;\r\n\r\n @Prop({ type: String, default: '' })\r\n private term!: string;\r\n\r\n @Prop({ type: String })\r\n private replacedTerm!: string | null;\r\n\r\n @Prop({ type: HTMLElement })\r\n private scrollContainer!: HTMLElement;\r\n\r\n @Prop({ type: Boolean })\r\n private typing!: boolean;\r\n\r\n @Prop({ type: String, default: '' })\r\n private campaignCode!: string;\r\n\r\n @Prop({ type: String, default: '' })\r\n private brandName!: string;\r\n\r\n @Prop({ type: String })\r\n private searchTitle!: string | undefined;\r\n\r\n @Prop({ type: Array })\r\n private menuItems!: MenuItem[];\r\n\r\n @Prop({ type: Object })\r\n private readonly activeMenu!: MenuItem | null;\r\n\r\n @Prop({ type: Object })\r\n private readonly rootMenuItem!: MenuItem | null;\r\n\r\n @Prop({ type: Array })\r\n private blocks!: JsonContent[];\r\n\r\n @Prop({ type: Array })\r\n private pageBlocks!: JsonContent[];\r\n\r\n @Prop({ type: Array })\r\n private pageBlocksBelow!: JsonContent[];\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private showAllProducts!: boolean;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private searching!: boolean;\r\n\r\n @Prop({ type: Number, default: PRODUCT_SEARCH_COUNT })\r\n private pageSize!: number;\r\n\r\n @Prop({ required: true })\r\n private searchResult!: SearchViewModel | null;\r\n\r\n @Prop({ required: true })\r\n private facetsResult!: FacetsViewModel | null;\r\n\r\n @Prop({ type: Boolean, default: true })\r\n private enableContainer!: boolean;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private useFlattenedCategoryTree!: boolean;\r\n\r\n @Prop({ type: String })\r\n public categoryId: string | undefined;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n public hideAdminOptions!: boolean;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private showBlocksAndProducts!: boolean;\r\n\r\n private get isExternalProductGuide() {\r\n return serverContextService.isExternalProductGuide;\r\n }\r\n\r\n private get hasLeftMenu():boolean {\r\n // default show \"space\" for left menu while loading, when loaded, check for menuItems.length\r\n return (this.searchResult === null || this.searching || this.menuItems.length > 0);\r\n }\r\n\r\n private get pageId() {\r\n return this.searchResult?.page ?? 1;\r\n }\r\n\r\n private get totalResults(): number {\r\n return this.searchResult?.totalHits ?? 0;\r\n }\r\n\r\n private get facets(): FacetViewObject[] {\r\n return this.facetsResult?.facets ?? [];\r\n }\r\n\r\n private get filters(): FacetViewObject[] {\r\n const facets: FacetViewObject[] = [];\r\n\r\n const filters = this.facetsResult?.filters;\r\n if (filters) {\r\n facets.push(filters);\r\n }\r\n\r\n const priceFilter = this.facetsResult?.sorting;\r\n if (priceFilter) {\r\n priceFilter.enabled = this.showPriceSortFacet;\r\n facets.push(priceFilter);\r\n }\r\n\r\n return facets;\r\n }\r\n\r\n get hideFacets() {\r\n if (!serverContextService.externalProductGuideSettings) { return false; }\r\n\r\n return !serverContextService.externalProductGuideSettings?.showFacets;\r\n }\r\n\r\n private get products(): ProductTileViewObject[] {\r\n return this.searchResult?.products ?? [];\r\n }\r\n\r\n private get showPriceSortFacet(): boolean {\r\n return !!this.searchResult?.showPriceSort;\r\n }\r\n\r\n private get searchTranslation(): SearchTranslationViewObject | null {\r\n return this.searchResult?.translation ?? null;\r\n }\r\n\r\n private get spellingSuggestions(): SuggestionViewObject[] | null {\r\n return this.searchResult?.suggestions ?? null;\r\n }\r\n\r\n private get explanation(): string | null {\r\n return this.searchResult?.explanation ?? null;\r\n }\r\n\r\n private firstTime = true;\r\n private facetPickerActive = false;\r\n\r\n private setFacetPickerState(state: boolean) {\r\n this.facetPickerActive = state;\r\n }\r\n\r\n private totalResultsTxt(totalResults: number): string {\r\n return this.typing || this.searching ? '...' : localeNumberFilter(totalResults).toString();\r\n }\r\n\r\n private termSearchLink(term: string): RawLocation {\r\n return urlHelper.getLocationForTerm(term);\r\n }\r\n\r\n private get trackingListName(): string {\r\n const baseName = this.contextKey.toLowerCase();\r\n return `${baseName}-${this.$route.name}-${(this.activeMenu?.id && `sub:${this.activeMenu.id}`) || 'base'}`;\r\n }\r\n\r\n private get hasItemSelectionCode(): boolean {\r\n return this.searchResult?.hasItemSelectionCode ?? false;\r\n }\r\n\r\n private prevPageId: number = this.pageId;\r\n\r\n @Watch('searching')\r\n private onSearchStateChange(searching: boolean, searched: boolean) {\r\n if (!this.firstTime && searching && !searched) {\r\n this.prevPageId = this.pageId;\r\n } else if (this.pageId !== 1 && this.prevPageId !== this.pageId && !searching && searched) {\r\n if (!this.firstTime && !this.facetPickerActive) {\r\n this.$nextTick(() => scrollService.animateScroll(0, 400, this.scrollContainer));\r\n }\r\n }\r\n this.firstTime = false;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResultPanel.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResultPanel.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchResultPanel.vue?vue&type=template&id=1a9aa11d&scoped=true&\"\nimport script from \"./SearchResultPanel.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchResultPanel.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SearchResultPanel.vue?vue&type=style&index=0&id=1a9aa11d&lang=less&scoped=true&\"\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 \"1a9aa11d\",\n null\n \n)\n\nexport default component.exports","import tokenService, { UserGroup } from '@/core/auth/token.service';\r\n\r\nexport enum Permission {\r\n SEE_PRODUCTS_AND_PRICES,\r\n PLACE_ORDER,\r\n CREATE_ORDER,\r\n ADD_DELIVERY_ADDRESS,\r\n VIEW_ORDER_STATUS,\r\n VIEW_RMA_STATUS,\r\n CREATE_RMA,\r\n VIEW_STATEMENT_OF_ACCOUNT,\r\n CREATE_OR_DELETE_USERS,\r\n VIEW_ADDRESSBOOK,\r\n MANAGE_ADDRESSBOOK,\r\n MANAGE_ASSOCIATED_USER,\r\n IMPERSONATE,\r\n VIEW_QUOTE_STATUS,\r\n VIEW_BID_STATUS\r\n}\r\n\r\nconst permissionMapping = new Map>([\r\n [Permission.PLACE_ORDER, [UserGroup.System, UserGroup.Administrator, UserGroup.Trusted, UserGroup.Normal]],\r\n [Permission.CREATE_ORDER, [UserGroup.System, UserGroup.Administrator, UserGroup.Trusted, UserGroup.Normal]],\r\n [Permission.ADD_DELIVERY_ADDRESS, [UserGroup.System, UserGroup.Administrator, UserGroup.Trusted]],\r\n [Permission.VIEW_ORDER_STATUS, [UserGroup.System, UserGroup.Administrator, UserGroup.Trusted, UserGroup.Normal]],\r\n [Permission.VIEW_QUOTE_STATUS, [UserGroup.System, UserGroup.Administrator, UserGroup.Trusted]],\r\n [Permission.VIEW_BID_STATUS, [UserGroup.System, UserGroup.Administrator, UserGroup.Trusted]],\r\n [Permission.VIEW_RMA_STATUS, [UserGroup.System, UserGroup.Administrator, UserGroup.Trusted, UserGroup.Normal, UserGroup.Viewer]],\r\n [Permission.CREATE_RMA, [UserGroup.System, UserGroup.Administrator, UserGroup.Trusted, UserGroup.Normal]],\r\n [Permission.VIEW_STATEMENT_OF_ACCOUNT, [UserGroup.System, UserGroup.Administrator, UserGroup.Trusted]],\r\n [Permission.VIEW_ADDRESSBOOK, [UserGroup.System, UserGroup.Administrator, UserGroup.Trusted]],\r\n [Permission.CREATE_OR_DELETE_USERS, [UserGroup.System, UserGroup.Administrator]],\r\n [Permission.MANAGE_ADDRESSBOOK, [UserGroup.System, UserGroup.Administrator]],\r\n [Permission.MANAGE_ASSOCIATED_USER, [UserGroup.System, UserGroup.Administrator]]\r\n]);\r\n\r\nfunction getUserGroup() {\r\n return tokenService.getUserData()?.role ?? null;\r\n}\r\n\r\nfunction can(permission: Permission): boolean {\r\n const userGroup = getUserGroup();\r\n if (!userGroup) return false;\r\n\r\n const rolebasedPermissionResult = permissionMapping.get(permission)?.includes(UserGroup[userGroup]) ?? false;\r\n return postProcessPermission(permission, rolebasedPermissionResult);\r\n}\r\n\r\nfunction postProcessPermission(permission: Permission, rolebasedPermissionResult: boolean): boolean {\r\n switch (permission) {\r\n case Permission.PLACE_ORDER: {\r\n const customerCanLoginButCannotPlaceOrder = tokenService.getUserData()?.blocking === 'CanLoginButCannotPlaceOrder';\r\n return rolebasedPermissionResult && !customerCanLoginButCannotPlaceOrder;\r\n }\r\n case Permission.IMPERSONATE: {\r\n return (tokenService.getUserData()?.impersonate === '1' ?? false) || (tokenService.getUserData()?.impersonatorEmail != null ?? false);\r\n }\r\n default:\r\n return rolebasedPermissionResult;\r\n }\r\n}\r\n\r\nfunction canPlaceOrder() {\r\n return can(Permission.PLACE_ORDER);\r\n}\r\n\r\nfunction canCreateOrder() {\r\n return can(Permission.CREATE_ORDER);\r\n}\r\n\r\nfunction canAddDeliveryAddress() {\r\n return can(Permission.ADD_DELIVERY_ADDRESS);\r\n}\r\n\r\nfunction canViewOrderStatus() {\r\n return can(Permission.VIEW_ORDER_STATUS);\r\n}\r\n\r\nfunction canViewRMAStatus() {\r\n return can(Permission.VIEW_RMA_STATUS);\r\n}\r\n\r\nfunction canCreateRMA() {\r\n return can(Permission.CREATE_RMA);\r\n}\r\n\r\nfunction canViewStatementOfAccount() {\r\n return can(Permission.VIEW_STATEMENT_OF_ACCOUNT);\r\n}\r\n\r\nfunction canViewAddressBook() {\r\n return can(Permission.VIEW_ADDRESSBOOK);\r\n}\r\n\r\nfunction canCreateOrDeleteUsers() {\r\n return can(Permission.CREATE_OR_DELETE_USERS);\r\n}\r\n\r\nfunction canManageAddressBook() {\r\n return can(Permission.MANAGE_ADDRESSBOOK);\r\n}\r\n\r\nfunction canManageAssociatedUsers() {\r\n return can(Permission.MANAGE_ASSOCIATED_USER);\r\n}\r\n\r\nfunction canImpersonate(): boolean {\r\n return can(Permission.IMPERSONATE);\r\n}\r\n\r\nfunction isStaff(): boolean {\r\n return tokenService.getUserData()?.staff === '1';\r\n}\r\n\r\nexport default {\r\n canPlaceOrder,\r\n canCreateOrder,\r\n canAddDeliveryAddress,\r\n canViewOrderStatus,\r\n canViewRMAStatus,\r\n canCreateRMA,\r\n canViewStatementOfAccount,\r\n canViewAddressBook,\r\n canCreateOrDeleteUsers,\r\n canManageAddressBook,\r\n canManageAssociatedUsers,\r\n canImpersonate,\r\n isStaff,\r\n can\r\n};\r\n","export class HttpCancelError extends Error {};\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"c-plus\",class:_vm.mode,attrs:{\"type\":\"button\",\"role\":\"button\"},on:{\"click\":function($event){return _vm.$emit((_vm.mode + \"-click\"))}}},[_c('div',{staticClass:\"line line1\"}),_c('div',{staticClass:\"line line2\"}),_c('div',{staticClass:\"sr-only\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")((_vm.mode === 'plus' ? 'Product.AddToBasket.AriaLabelAddOneMore' : 'Generic.Confirm')))+\" \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class PlusAccept extends Vue {\r\n @Prop({\r\n required: true,\r\n type: String,\r\n default: 'plus',\r\n validator: value => ['plus', 'accept'].includes(value as string)\r\n })\r\n private mode;\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlusAccept.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlusAccept.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PlusAccept.vue?vue&type=template&id=3a96091c&\"\nimport script from \"./PlusAccept.vue?vue&type=script&lang=ts&\"\nexport * from \"./PlusAccept.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PlusAccept.vue?vue&type=style&index=0&lang=less&\"\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","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'download': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 33 29',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'g-translate': {\r\n width: 24,\r\n height: 24,\r\n viewBox: '0 0 24 24',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'fallback': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 400 300',\r\n data: ''\r\n }\r\n})\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isImpersonating)?_c('div',{staticClass:\"impersonation z-header fixed top-0 left-0 right-0 bg-red-300\"},[_c('div',{staticClass:\"impersonation bg-red-300 text-white flex items-center o-chrome-container\"},[_c('span',[_vm._v(_vm._s(_vm._f(\"t\")('MyAccount.Impersonate.CurrentlyImpersonating')))]),_c('span',{staticClass:\"ml-5 font-semi-bold\"},[_vm._v(_vm._s(_vm.impersonateeName))]),_c('call-to-action',{staticClass:\"ml-auto\",attrs:{\"text\":_vm._f(\"t\")('MyAccount.Impersonate.EndImpersonateBtn')},on:{\"click\":function($event){return _vm.endImpersonation()}}})],1)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue } from 'vue-property-decorator';\r\nimport impersonationStore from '@/project/shared/impersonation/impersonation.service';\r\n\r\n@Component\r\nexport default class ImpersonationBanner extends Vue {\r\n private get isImpersonating(): boolean {\r\n return impersonationStore.isImpersonating;\r\n }\r\n\r\n private get impersonateeName(): string {\r\n return impersonationStore.impersonateeName;\r\n }\r\n\r\n private endImpersonation(): void {\r\n impersonationStore.endImpersonation();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImpersonationBanner.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImpersonationBanner.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ImpersonationBanner.vue?vue&type=template&id=7a1ca40b&scoped=true&\"\nimport script from \"./ImpersonationBanner.vue?vue&type=script&lang=ts&\"\nexport * from \"./ImpersonationBanner.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ImpersonationBanner.vue?vue&type=style&index=0&id=7a1ca40b&lang=less&scoped=true&\"\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 \"7a1ca40b\",\n null\n \n)\n\nexport default component.exports","module.exports = __webpack_public_path__ + \"img/fallback.d9db921d.svg\";","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'quote': {\r\n width: 23,\r\n height: 20,\r\n viewBox: '0 0 23 20',\r\n data: ''\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResultPanel.vue?vue&type=style&index=0&id=1a9aa11d&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResultPanel.vue?vue&type=style&index=0&id=1a9aa11d&lang=less&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationTree.vue?vue&type=style&index=0&id=77c1573f&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationTree.vue?vue&type=style&index=0&id=77c1573f&lang=less&scoped=true&\"","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'logo': {\r\n width: 187,\r\n height: 123,\r\n viewBox: '0 0 187 123',\r\n data: ''\r\n }\r\n})\r\n","\r\nimport Vue, { CreateElement } from 'vue';\r\nimport { Component, Prop } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class SmartHeadline extends Vue {\r\n @Prop({\r\n type: Boolean,\r\n default: false\r\n })\r\n private styleAsH1!: boolean;\r\n\r\n @Prop({ required: true, type: String, default: 'h2', validator: (value: string) => ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(value) })\r\n private level!: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\r\n\r\n render(h: CreateElement) {\r\n const data = {\r\n ...this.$props,\r\n class: {\r\n h1: this.styleAsH1\r\n }\r\n };\r\n return h(this.level, data, this.$slots.default);\r\n }\r\n}\r\n","var render, staticRenderFns\nimport script from \"./SmartHeadline.vue?vue&type=script&lang=ts&\"\nexport * from \"./SmartHeadline.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/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SmartHeadline.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SmartHeadline.vue?vue&type=script&lang=ts&\"","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'arrow-thin-left': {\r\n width: 18,\r\n height: 32,\r\n viewBox: '0 0 18 32',\r\n data: ''\r\n }\r\n})\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('div',{staticClass:\"tab-header flex-shrink-0\"},[_c('div',{staticClass:\"flex flex-row flex-wrap\",class:_vm.headerClass},_vm._l((_vm.tabs),function(tab){return _c('button',{key:tab.name,staticClass:\"tab-button cursor-pointer\",class:{ 'active': tab.name === _vm.activeTab.name },attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.toggle(tab.name)}}},[_vm._t(\"header\",function(){return [_vm._v(\" \"+_vm._s(tab.name)+\" \")]},{\"title\":tab.name,\"active\":tab.name === _vm.activeTab.name})],2)}),0)]),_vm._t(\"sub-content\"),_c('div',{staticClass:\"tab-content\",class:_vm.contentClass},[_vm._t(\"default\")],2)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport Tab from './Tab.vue';\r\nimport urlHelperService from '@/core/urlHelper.service';\r\nimport bus from '@/core/bus';\r\nimport { ProductTrackerProcessBatchKey } from '@/project/tracking/gtm/ProductListTracker.vue';\r\n\r\n@Component\r\nexport default class TabsContainer extends Vue {\r\n private activeTab: Tab | null = null;\r\n\r\n private tabs: Tab[] = []\r\n\r\n @Prop(String) headerClass!: string\r\n @Prop(String) contentClass!: string\r\n\r\n public toggle(name: string) {\r\n if (this.activeTab && this.activeTab.name !== name) {\r\n this.$emit('changed', name);\r\n }\r\n\r\n for (const tab of this.tabs) {\r\n if (tab.name === name) {\r\n this.activeTab = tab;\r\n tab.toggle(true);\r\n } else {\r\n tab.toggle(false);\r\n }\r\n }\r\n bus.emit(ProductTrackerProcessBatchKey);\r\n }\r\n\r\n private setup() {\r\n this.tabs = this.$children.filter(x => x.$options.name === 'Tab') as Tab[];\r\n if (this.tabs.length === 0) {\r\n return;\r\n }\r\n\r\n const hash = urlHelperService.getHash();\r\n if (hash) {\r\n const activeTab = this.tabs.find(x => x.hash === hash);\r\n if (activeTab) {\r\n this.activeTab = activeTab;\r\n activeTab.toggle(true);\r\n }\r\n }\r\n\r\n if (!this.activeTab) {\r\n for (const tab of this.tabs) {\r\n if (tab.isActive) {\r\n this.activeTab = tab;\r\n break;\r\n }\r\n }\r\n\r\n // Always show atleast 1 tab\r\n if (!this.activeTab) {\r\n const activeTab = this.tabs[0];\r\n this.activeTab = activeTab;\r\n activeTab.toggle(true);\r\n }\r\n }\r\n\r\n this.$emit('init', this.activeTab.name);\r\n }\r\n\r\n mounted() {\r\n this.setup();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Tabs.vue?vue&type=template&id=475bab18&\"\nimport script from \"./Tabs.vue?vue&type=script&lang=ts&\"\nexport * from \"./Tabs.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","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'productlist': {\r\n width: 32,\r\n height: 23,\r\n viewBox: '0 0 32 23',\r\n data: ''\r\n }\r\n})\r\n","import Api from '@/project/http/Api.service';\r\nimport { MenuItem } from '@/types/apiServerContract';\r\n\r\nclass MegaMenuService {\r\n private mappedBreadcrumbs: Map | undefined;\r\n private megaMenuPromise = Api.navigation.megaMenu()\r\n .then(megaMenu => {\r\n return Object.freeze(megaMenu.menu);\r\n });\r\n\r\n async getMegaMenu(): Promise {\r\n return this.megaMenuPromise;\r\n }\r\n\r\n mapBreadcrumbs(menus: readonly MenuItem[]): Map {\r\n const map = new Map();\r\n for (const menu of menus) {\r\n this.mapBreadcrumbForChild(map, menu, [menu], 1);\r\n }\r\n return map;\r\n }\r\n\r\n async getUrlForMenuItem(categoryId: string) {\r\n const absoluteId = categoryId.replace(/\\D+/g, '');\r\n const megaMenu = await this.getMegaMenu();\r\n const menu = megaMenu.find(x => x.id === absoluteId);\r\n if (menu) {\r\n return menu.url;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n mapBreadcrumbForChild(map: Map, menu: MenuItem, breadcrumb: MenuItem[], level: number) {\r\n map.set(menu.id, breadcrumb);\r\n menu.children.forEach(m => {\r\n this.mapBreadcrumbForChild(map, m, [...breadcrumb, m], level + 1);\r\n });\r\n }\r\n\r\n async getBreadCrumbForCategory(categoryId: string): Promise {\r\n const megaMenu = await this.getMegaMenu();\r\n if (!this.mappedBreadcrumbs) {\r\n this.mappedBreadcrumbs = this.mapBreadcrumbs(megaMenu);\r\n }\r\n return this.mappedBreadcrumbs.get(categoryId) || [];\r\n }\r\n\r\n getMappedBreadCrumbForCategory(categoryId: string): MenuItem[] {\r\n return this.mappedBreadcrumbs?.get(categoryId) || [];\r\n }\r\n\r\n async getCategoryById(categoryId: string): Promise {\r\n const breadcrumb = await this.getBreadCrumbForCategory(categoryId);\r\n return breadcrumb[breadcrumb.length - 1];\r\n }\r\n}\r\n\r\nexport default new MegaMenuService();\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'lyn2': {\r\n width: 42,\r\n height: 29,\r\n viewBox: '0 0 42 29',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'meatballsmenu': {\r\n width: 9,\r\n height: 32,\r\n viewBox: '0 0 9 32',\r\n data: ''\r\n }\r\n})\r\n","import log from '@/core/logging.service';\r\nimport { isNumber } from 'lodash';\r\nexport type NamedLabelArgument = Record;\r\nconst isLabelDebugMode = location.search.toLowerCase().includes('labelsdebug');\r\n\r\nclass DictionaryService {\r\n private dictionaryMap;\r\n private initialized = false;\r\n\r\n public translate(input: string) {\r\n if (!input || (input.match(/#/g) || []).length < 2) {\r\n return input;\r\n }\r\n\r\n let output = input;\r\n\r\n let labelStart = input.indexOf('#', 0);\r\n let labelEnd = input.indexOf('#', labelStart + 1);\r\n\r\n while (labelStart > -1 && labelEnd > -1) {\r\n const key = input.substring(labelStart + 1, labelEnd);\r\n\r\n if (this.exists(key)) {\r\n const keyReplaceRegex = new RegExp('#' + key + '#');\r\n output = output.replace(keyReplaceRegex, this.get(key));\r\n }\r\n\r\n labelStart = input.indexOf('#', labelEnd + 1);\r\n labelEnd = input.indexOf('#', labelStart + 1);\r\n }\r\n\r\n return output;\r\n }\r\n\r\n public get(key: string, args: string[] = []) {\r\n this.ensureInitialized();\r\n const translated = this.dictionaryMap.get(key);\r\n if (translated === undefined) {\r\n log.error(`### Key '${key}' not found in dictionary ###`);\r\n return `##${key}`;\r\n }\r\n if (isLabelDebugMode) {\r\n return `${this.format(translated, args)} (${key})`;\r\n } else {\r\n return this.format(translated, args);\r\n }\r\n }\r\n\r\n public getWithNamedValues(key: string, namedArguments: NamedLabelArgument = {}, failWithMissingRecords: boolean = false, useKeyAsLabel: boolean = false): string | null {\r\n this.ensureInitialized();\r\n if (!key || (key && key.length === 0)) {\r\n log.error('### Key is null ###');\r\n return null;\r\n }\r\n // useKeyAsLabel false: get label from umbraco dictionary\r\n // useKeyAsLabel true: get label in key and don't look it up\r\n const translated = useKeyAsLabel ? key : this.dictionaryMap.get(key);\r\n if (useKeyAsLabel === false && translated === undefined) {\r\n log.error(`### Key '${key}' not found in dictionary ###`);\r\n return `##${key}`;\r\n }\r\n const label = this.formatNamed(translated, namedArguments);\r\n if (failWithMissingRecords && label.indexOf('{') !== -1) {\r\n return null;\r\n }\r\n if (isLabelDebugMode) {\r\n return `${label} (${key})`;\r\n } else {\r\n return label;\r\n }\r\n }\r\n\r\n public getWithNamedValuesUntilString(keys: string[], namedArguments: NamedLabelArgument = {}): string | null {\r\n for (let i = 0; i < keys.length; i++) {\r\n const value = this.getWithNamedValues(keys[i], namedArguments, true, true);\r\n if (value) {\r\n return value;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public seofyNumbers(num: number | undefined): number | undefined {\r\n if (isNumber(num)) {\r\n if (num < 10) return num; // 0-9\r\n if (num < 100) return Math.floor(num / 10) * 10; // 10-99 floor to nearest 10\r\n if (num < 1000) return Math.floor(num / 100) * 100; // 100-999 floor to nearest 100\r\n if (num < 10000) return Math.floor(num / 500) * 500; // 1000-9999 floor to nearest 500\r\n return Math.floor(num / 1000) * 1000; // 10000+ floor to nearest 1000\r\n }\r\n return undefined;\r\n }\r\n\r\n public exists(key: string): boolean {\r\n this.ensureInitialized();\r\n return !!this.dictionaryMap.get(key);\r\n }\r\n\r\n public reinitialize() {\r\n this.initialized = false;\r\n this.ensureInitialized();\r\n }\r\n\r\n private format(translated, args: string[] = []): string {\r\n return args.reduce((result, arg, ix) => {\r\n return result.split(`{${ix}}`).join(arg);\r\n }, translated);\r\n }\r\n\r\n private formatNamed(toTranslate: string, namedValues: Record = {}): string {\r\n let translated: string = toTranslate;\r\n Object.keys(namedValues).forEach(key => {\r\n const namedValue = namedValues[key];\r\n if (namedValue !== undefined) {\r\n // @ts-ignore\r\n const pattern = new RegExp(`{${key}}`, 'gi');\r\n translated = translated.replace(pattern, namedValue);\r\n }\r\n });\r\n return translated;\r\n }\r\n\r\n private dictionaryExists(): boolean {\r\n return !!window.servercontext.dictionary;\r\n }\r\n\r\n private ensureInitialized() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n this.initialized = true;\r\n // Don't do the check in constructor - too early - dictionary might not be loaded at that time\r\n if (!this.dictionaryExists()) {\r\n throw new Error('window.servercontext.dictionary should exist');\r\n }\r\n this.dictionaryMap = new Map(Object.entries(window.servercontext.dictionary));\r\n }\r\n}\r\n\r\nexport default new DictionaryService();\r\n","import domService from '@/core/dom/dom.service';\r\nimport HttpStatus from 'http-status-codes';\r\nimport serverContextService from '@/core/serverContext.service';\r\nimport { Feature } from '@/types/apiServerContract';\r\n\r\nconst allBots = /(headlesschrome|prerender|prerender.cloud|googlebot|googlebot-mobile|duckduckbot|bingbot|baiduspider|facebookexternalhit|twitterbot|yandex|rogerbot|linkedinbot|embedly|bufferbot|quora link preview|showyoubot|outbrain|bot|crawler|80legs|ia_archiver|voyager|curl|wget|yahoo! slurp|mediapartners-google|prtg|monitis|demandbase|shopit|spider)/i;\r\nconst prerenderBots = /(prerender|prerender.cloud)/i;\r\n\r\nfunction uaIsBot() {\r\n const userAgent = navigator.userAgent;\r\n const result = allBots.test(userAgent);\r\n return result;\r\n}\r\n\r\nfunction uaIsPrerender() {\r\n const userAgent = navigator.userAgent;\r\n const result = prerenderBots.test(userAgent);\r\n return result;\r\n}\r\n\r\nfunction setPrerenderRedirectUrlsIfLocationIsWrong(url: string | null) {\r\n const pathnameWithoutTrailingSlash = location.pathname && location.pathname.endsWith('/') && location.pathname.length > 1 ? location.pathname.slice(0, -1) : location.pathname;\r\n if (url && uaIsPrerender() && serverContextService.isFeatureEnabled(Feature.PrerenderRedirect) && url !== pathnameWithoutTrailingSlash) {\r\n if (!url.startsWith('http')) {\r\n const domain = location.protocol + '//' + location.host;\r\n const urlWithSlash = url.startsWith('/') ? url : '/' + url;\r\n url = domain + urlWithSlash;\r\n }\r\n\r\n domService.setPrerenderStatusCode(HttpStatus.MOVED_PERMANENTLY);\r\n domService.setPrerenderHeader(`Location: ${url}`);\r\n }\r\n}\r\n\r\nexport default {\r\n uaIsBot,\r\n uaIsPrerender,\r\n setPrerenderRedirectUrlsIfLocationIsWrong\r\n};\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"image\",class:{'image--loaded': _vm.lazyLoaded }},[_c('img',{directives:[{name:\"on-error\",rawName:\"v-on-error\"}],ref:\"image\",class:_vm.imgClass,attrs:{\"src\":_vm.src,\"alt\":_vm.alt,\"srcset\":_vm.srcSet},on:{\"load\":_vm.handleLoad}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport breakpointsState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\nimport responsiveProductImageService from './responsiveProductImage.service';\r\n\r\nconst supportedSizes = ['86', '200', '300', '700', '1400', 'hires'];\r\nconst supportedRetinaSizes = ['86', '200'];\r\n\r\n@Component\r\nexport default class ResponsiveProductImage extends Vue {\r\n @Prop({ type: String, default: '' })\r\n private imageUrl!: string;\r\n\r\n @Prop({\r\n type: [String, Object],\r\n required: true,\r\n validator: (value: string | object) => {\r\n const valuesToCheck = typeof value === 'string' ? [value] : Object.values(value);\r\n return valuesToCheck.every(val => supportedSizes.includes(val));\r\n }\r\n })\r\n private size!: string | { [breakpoint: string]: string};\r\n\r\n @Prop({ type: Number, default: 200 })\r\n private offset!: number;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private retina!: boolean;\r\n\r\n @Prop({ type: String, default: 'transparent' })\r\n private bgColor!: string;\r\n\r\n @Prop({ type: String, default: '' })\r\n private alt!: string;\r\n\r\n @Prop({ type: String })\r\n private imgClass!: string;\r\n\r\n private lazyInitialized: boolean = false;\r\n private lazyLoaded: boolean = false;\r\n private loadEventFired = true;\r\n\r\n private observer: IntersectionObserver | undefined;\r\n\r\n private get src(): string {\r\n return this.formatImageUrl();\r\n }\r\n\r\n private get srcSet(): string | undefined {\r\n // Only use src-set for retina setting\r\n if (!this.retina) return undefined;\r\n if (this.retina && !supportedRetinaSizes.includes(this.activeSize)) {\r\n throw new Error('Retina can only be used for these sizes' + supportedRetinaSizes);\r\n }\r\n const retinaSize = (parseInt(this.activeSize) * 2) + '';\r\n return `${encodeURI(this.src)}, ${encodeURI(this.formatImageUrl(retinaSize))} 2x`;\r\n }\r\n\r\n private formatImageUrl(size?: string): string {\r\n return responsiveProductImageService.formatImageUrl(this.absoluteImageUrl, size || this.activeSize);\r\n }\r\n\r\n private get activeSize(): string {\r\n if (typeof this.size === 'string') {\r\n return this.size;\r\n }\r\n\r\n // Else - object with size pr. breakpoint-def.\r\n // Find first active breakpoint-def\r\n const activeBpDef = Object.keys(this.size).find(bpDef => breakpointsState.isBreakpointActive(bpDef));\r\n // Use active or default\r\n const result = activeBpDef ? this.size[activeBpDef] : this.size.default;\r\n if (!result) {\r\n throw new Error('Provide a breakpoint-definition for all cases or a default');\r\n }\r\n return result;\r\n }\r\n\r\n private handleLoad(): void {\r\n this.loadEventFired = true;\r\n this.handleLoadedAndLazyInitialized();\r\n }\r\n\r\n private handleLoadedAndLazyInitialized(): void {\r\n if (this.lazyInitialized && this.loadEventFired) {\r\n this.lazyLoaded = true;\r\n }\r\n }\r\n\r\n private get normalizedBgColor(): string {\r\n return this.bgColor.replace('#', '');\r\n }\r\n\r\n private observe(): void {\r\n const options = { rootMargin: `${this.offset}px` };\r\n this.observer = new IntersectionObserver(entries => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n this.lazyInitialized = true;\r\n this.handleLoadedAndLazyInitialized();\r\n this.unObserve();\r\n }\r\n });\r\n }, options);\r\n this.observer.observe(this.$el);\r\n }\r\n\r\n private get absoluteImageUrl(): string {\r\n return this.imageUrl;\r\n }\r\n\r\n private unObserve(): void {\r\n if (this.observer) {\r\n this.observer.disconnect();\r\n }\r\n }\r\n\r\n private mounted(): void {\r\n this.observe();\r\n }\r\n\r\n public destroyed() {\r\n this.unObserve();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResponsiveProductImage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResponsiveProductImage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ResponsiveProductImage.vue?vue&type=template&id=d4170f4a&scoped=true&\"\nimport script from \"./ResponsiveProductImage.vue?vue&type=script&lang=ts&\"\nexport * from \"./ResponsiveProductImage.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ResponsiveProductImage.vue?vue&type=style&index=0&id=d4170f4a&lang=less&scoped=true&\"\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 \"d4170f4a\",\n null\n \n)\n\nexport default component.exports","import { LanguageAndUrl, Media, Metadata } from '@/types/contentServerContract';\r\nimport { AlternativeUrlViewObject } from '@/types/apiServerContract';\r\nimport $ from 'cash-dom';\r\nimport botService from '@/project/site/bot.service';\r\n\r\nclass DomService {\r\n private static VIEWPORT = 'viewport';\r\n private static TITLE = 'title';\r\n private static KEYWORDS = 'keywords';\r\n private static DESCRIPTION = 'description';\r\n private static ROBOTS = 'robots';\r\n private static PRERENDER_STATUS_CODE = 'prerender-status-code';\r\n private static PRERENDER_HEADER = 'prerender-header';\r\n private static OPENGRAPHTITLE = 'og:title';\r\n private static OPENGRAPHURL = 'og:url';\r\n private static OPENGRAPHDESCRIPTION = 'og:description';\r\n private static OPENGRAPHIMAGE = 'og:image';\r\n private static OPENGRAPHIMAGEALT = 'og:image:alt';\r\n private static OPENGRAPHIMAGEWIDTH = 'og:image:width';\r\n private static OPENGRAPHIMAGEHEIGHT = 'og:image:height';\r\n\r\n public updateMetaData(metadata: Metadata, relativeUrls: boolean = false) {\r\n if (!metadata) return;\r\n this.setCanonicalUrl(metadata.url, relativeUrls);\r\n this.setOpenGraphUrl(metadata.url, relativeUrls);\r\n this.setDescription(metadata.seoDescription);\r\n this.setMetaRobots(metadata.index);\r\n this.setTitle(metadata.seoTitle);\r\n this.setHreflang(metadata.languages, relativeUrls);\r\n this.setOpenGraphImage(metadata.seoImage);\r\n }\r\n\r\n public setTitle(title: string): void {\r\n this.setPageTitle(title);\r\n this.setOpenGraphTitle(title);\r\n }\r\n\r\n public setPrerenderStatusCode(statusCode: number) {\r\n if (!botService.uaIsPrerender()) return;\r\n // See https://prerender.io/documentation/best-practices\r\n this.setContent(DomService.PRERENDER_STATUS_CODE, null, statusCode + '');\r\n }\r\n\r\n public setPrerenderHeader(content: string) {\r\n if (!botService.uaIsPrerender()) return;\r\n // See https://prerender.io/documentation/best-practices\r\n this.setContent(DomService.PRERENDER_HEADER, null, content);\r\n }\r\n\r\n public setPageTitle(title: string): void {\r\n if (title) {\r\n document.title = title;\r\n }\r\n }\r\n\r\n public setDescription(description: string): void {\r\n this.setMetaDescription(description);\r\n this.setOpenGraphDescription(description);\r\n }\r\n\r\n public setOpenGraphTitle(title: string) {\r\n return this.setContent(null, DomService.OPENGRAPHTITLE, title);\r\n }\r\n\r\n public setMetaDescription(description: string) {\r\n return this.setContent(DomService.DESCRIPTION, null, description);\r\n }\r\n\r\n public setOpenGraphDescription(description: string) {\r\n return this.setContent(null, DomService.OPENGRAPHDESCRIPTION, description);\r\n }\r\n\r\n public setMetaRobots(index: boolean) {\r\n const content = index ? '' : 'noindex, follow';\r\n\r\n return this.setContent(DomService.ROBOTS, null, content);\r\n }\r\n\r\n public setMetaKeywords(keywords: string) {\r\n return this.setContent(DomService.KEYWORDS, null, keywords);\r\n }\r\n\r\n public getMetaViewport() {\r\n return this.getMetaElement(DomService.VIEWPORT).content;\r\n }\r\n\r\n public updateCheckoutView(isCheckoutView: boolean): void {\r\n $('html').toggleClass('checkout-view', !!isCheckoutView);\r\n }\r\n\r\n public setMetaViewport(content: string) {\r\n return this.setContent(DomService.VIEWPORT, null, content);\r\n }\r\n\r\n private formatUrlWithPage(url: string): string {\r\n return url;\r\n }\r\n\r\n public setCanonicalUrl(url: string, relativeUrl: boolean = false): void {\r\n const canonicalUrlElement = this.getCanonicalUrlElement();\r\n url = this.formatUrlWithPage(url);\r\n canonicalUrlElement.href = relativeUrl ? this.buildAbsoluteUrlFromRelativePath(url) : this.sanitizeInput(url);\r\n }\r\n\r\n public setOpenGraphUrl(url: string, relativeUrl: boolean = false): void {\r\n url = this.formatUrlWithPage(url);\r\n this.setContent(null, DomService.OPENGRAPHURL, relativeUrl ? this.buildAbsoluteUrlFromRelativePath(url) : this.sanitizeInput(url));\r\n }\r\n\r\n public setOpenGraphImage(image: Media | null): void {\r\n if (image) {\r\n // TODO: Optimal size would be 1200 x 627. Product images does not have a size\r\n const imageUrl = image.url;\r\n this.setContent(null, DomService.OPENGRAPHIMAGE, imageUrl);\r\n if (image.width) {\r\n this.setContent(null, DomService.OPENGRAPHIMAGEWIDTH, image.width.toString());\r\n }\r\n if (image.height) {\r\n this.setContent(null, DomService.OPENGRAPHIMAGEHEIGHT, image.height.toString());\r\n }\r\n this.setContent(null, DomService.OPENGRAPHIMAGEALT, document.title);\r\n } else {\r\n const metaTags = $('meta[property^=\"og:image\"]');\r\n metaTags.each((i, e) => $(e).remove());\r\n }\r\n }\r\n\r\n public setHreflang(languages: LanguageAndUrl[] | AlternativeUrlViewObject[], relativeUrls: boolean = false) {\r\n // First delete all existing hreflang elements, then there will be left no one behind.\r\n const existingLinkElements = Array.from(document.querySelectorAll('link[rel=alternate][hreflang]'));\r\n existingLinkElements.forEach(e => e && e.parentNode && e.parentNode.removeChild(e));\r\n\r\n if (languages.length === 1) {\r\n return;\r\n }\r\n\r\n // Now for all languages, make a hreflang link element.\r\n languages.map((language) => {\r\n const element = document.createElement('link');\r\n element.rel = 'alternate';\r\n element.hreflang = language.language;\r\n element.href = relativeUrls ? this.buildAbsoluteUrlFromRelativePath(language.url) : language.url;\r\n const headElement = this.getHeadElement();\r\n if (headElement) {\r\n headElement.appendChild(element);\r\n }\r\n });\r\n }\r\n\r\n public getHreflang(culture: string) {\r\n const link = document.querySelector(`link[hreflang=\"${culture}\"]`);\r\n return link?.getAttribute('href');\r\n }\r\n\r\n private setContent(nameAttribute: string | null = null, propertyAttribute: string | null = null, content: string): HTMLMetaElement {\r\n const tag = this.getMetaElement(nameAttribute, propertyAttribute);\r\n tag.content = this.sanitizeInput(content);\r\n return tag;\r\n }\r\n\r\n public buildAbsoluteUrlFromRelativePath(path: string) {\r\n return this.removeDoubleSlashesInUrl(`${location.protocol}//${location.host}/${this.sanitizeInput(path)}`).toLowerCase();\r\n }\r\n\r\n public buildCanonicalUrl(path: string) {\r\n return this.removeDoubleSlashesInUrl(`${location.protocol}//${location.host}/${window.servercontext.culture}/${this.sanitizeInput(path)}`).toLowerCase();\r\n }\r\n\r\n public removeDoubleSlashesInUrl(url: string) {\r\n return url.replace(/([^:]\\/)\\/+/g, '$1');\r\n }\r\n\r\n private sanitizeInput(input: string): string {\r\n return input || '';\r\n }\r\n\r\n private getCanonicalUrlElement(): HTMLLinkElement {\r\n return this.getOrCreate('link[rel=canonical]', () => {\r\n const element = document.createElement('link');\r\n element.rel = 'canonical';\r\n const headElement = this.getHeadElement();\r\n if (headElement) {\r\n headElement.appendChild(element);\r\n }\r\n return element;\r\n });\r\n }\r\n\r\n private getHeadElement(): HTMLHeadElement | null {\r\n return document.head;\r\n }\r\n\r\n private getMetaElement(nameAttribute: string | null = null, propertyAttribute: string | null = null): HTMLMetaElement {\r\n return this.getOrCreate('meta[' + (nameAttribute ? 'name=\"' + nameAttribute + '\"' : '') + (propertyAttribute ? 'property=\"' + propertyAttribute + '\"' : '') + ']', () => {\r\n const element = document.createElement('meta');\r\n if (nameAttribute) {\r\n element.name = nameAttribute;\r\n }\r\n if (propertyAttribute) {\r\n element.setAttribute('property', propertyAttribute);\r\n }\r\n const headElement = this.getHeadElement();\r\n if (headElement) {\r\n headElement.appendChild(element);\r\n }\r\n return element;\r\n });\r\n }\r\n\r\n private getOrCreate(selector: string, create?: () => TElement): TElement {\r\n const element = document.querySelector(selector) as TElement;\r\n if (element) {\r\n return element;\r\n }\r\n if (create) {\r\n return create();\r\n }\r\n throw new Error(`Provide create param when element ${selector} cannot be found.`);\r\n }\r\n}\r\n\r\nexport default new DomService();\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTile.vue?vue&type=style&index=0&id=262b48b0&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTile.vue?vue&type=style&index=0&id=262b48b0&lang=less&scoped=true&\"","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'logo-half-top': {\r\n width: 187,\r\n height: 59,\r\n viewBox: '0 0 187 59',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'arrow-right': {\r\n width: 18,\r\n height: 32,\r\n viewBox: '0 0 18 32',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'mail': {\r\n width: 32,\r\n height: 22,\r\n viewBox: '0 0 32 22',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'favorite-outline': {\r\n width: 32,\r\n height: 30,\r\n viewBox: '0 0 32 30',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'plus-small': {\r\n width: 10,\r\n height: 10,\r\n viewBox: '0 0 10 10',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'edit': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 33 33',\r\n data: ''\r\n }\r\n})\r\n","import Api from '@/project/http/Api.service';\r\nimport AbstractBulkFetch from '@/core/bulk-fetch/AbstractBulkFetch';\r\nimport { PriceSimpleViewObject } from '@/types/apiServerContract';\r\nimport { keyBy } from 'lodash';\r\n\r\nexport interface PriceSimpleDataExtended extends PriceSimpleViewObject {\r\n isServiceAvailable: boolean;\r\n}\r\n\r\nclass SimplePriceFetchService extends AbstractBulkFetch {\r\n async apiCall(itemIds: string[], cancelKey: string): Promise<{ [key: string]: PriceSimpleDataExtended }> {\r\n const result = await Api.price.priceSimple(itemIds, cancelKey);\r\n const prices = result.prices.map(price => ({\r\n ...price,\r\n isServiceAvailable: result.isServiceAvailable\r\n }) as PriceSimpleDataExtended);\r\n return keyBy(prices, 'itemId');\r\n }\r\n}\r\n\r\nexport default new SimplePriceFetchService('SimplePrice', 100, true);\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"product-favorite relative\"},[_c('button',{staticClass:\"c-favourites-button flex items-center\",attrs:{\"type\":\"button\",\"title\":_vm._f(\"t\")('Product.AddToFavorite')},on:{\"click\":_vm.openOverlay}},[_c('c-icon',{staticClass:\"mr-5 mb-2\",attrs:{\"name\":_vm.icon,\"width\":\"20\",\"height\":\"20\",\"aria-hidden\":\"true\"}}),(!_vm.hasSlot)?_c('span',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm._f(\"t\")('Product.AddToFavorite')))]):_vm._e(),_vm._t(\"default\")],2),_c('transition',{attrs:{\"appear\":\"\",\"enter-active-class\":\"animated fadeIn u-anim-dur-250\",\"leave-active-class\":\"animated fadeOut u-anim-dur-250\"}},[(_vm.showOverlay)?_c('div',{staticClass:\"close-fav-overlay favourite-list-overlay z-header\"},[_c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.closeOverlay),expression:\"closeOverlay\"}],staticClass:\"favourite-list-overlay__inner bg-white px-20 pt-12 pb-20 absolute top-0 z-2\"},[_c('h1',{staticClass:\"font-medium text-15\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('MyAccount.Favourites.Overlays.Add.Title'))+\" \")]),_c('button',{staticClass:\"close-fav-overlay favourite-list-overlay__action absolute\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.closeOverlay}},[_c('c-icon',{attrs:{\"height\":\"11\",\"width\":\"11\",\"name\":\"close\"}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm._f(\"t\")('Generic.Close'))+\" \\\"\"+_vm._s(_vm._f(\"t\")('MyAccount.Favourites.Overlays.Add.Title'))+\"\\\" \"+_vm._s(_vm._f(\"t\")('Generic.For'))+\" \"+_vm._s(_vm.product.displayName))])],1),(!_vm.loadingLists && _vm.isLoggedIn)?_c('form',{staticClass:\"pt-30 pb-15\"},[(_vm.favoriteLists.length > 0)?_c('ul',{staticClass:\"available-favorite-lists mb-15\"},_vm._l((_vm.favoriteLists),function(list,index){return _c('li',{key:index,staticClass:\"mb-3 last:mb-0\",attrs:{\"title\":_vm.titleForList(list)}},[_c('input-checkbox',{attrs:{\"id\":(\"list-\" + (list.listId)),\"disabled\":!_vm.canEditList(list),\"name\":(\"list-\" + (list.listId)),\"solid-background\":\"\",\"label\":list.name,\"value\":list.name},on:{\"change\":function($event){return _vm.updateList(list)}},model:{value:(list.checked),callback:function ($$v) {_vm.$set(list, \"checked\", $$v)},expression:\"list.checked\"}})],1)}),0):_c('p',{staticClass:\"mb-15\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('FavoriteList.Products.NoListsFound'))+\" \")]),_c('div',{staticClass:\"flex flex-wrap justify-between\"},[_c('button',{staticClass:\"underline hover:no-underline focus:no-underline\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.createList}},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('MyAccount.Favourites.Overlays.CreateNewListAction'))+\" \")]),_c('button',{staticClass:\"close-fav-overlay cta cta--small\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.closeOverlay}},[_c('span',{staticClass:\"text select-none\"},[_vm._v(_vm._s(_vm._f(\"t\")('MyAccount.Favourites.Overlays.Add.DoneAction')))])])])]):(_vm.loadingLists)?_c('div',{staticClass:\"relative h-60\"},[_c('spinner-overlay',{staticClass:\"bg-transparent\",attrs:{\"show\":\"\"}})],1):(!_vm.isLoggedIn)?_c('div',{staticClass:\"mt-15 text-13\"},[_c('p',[_vm._v(_vm._s(_vm._f(\"t\")('FavoriteList.Products.NotLoggedIn')))]),_c('div',{staticClass:\"flex justify-end mt-15\"},[_c('button',{staticClass:\"close-fav-overlay cta cta--small\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.showLoginOverlay}},[_c('span',{staticClass:\"text select-none\"},[_vm._v(_vm._s(_vm._f(\"t\")('Authentication.Login.LoginBtn')))])])])]):_vm._e()])]):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Prop, Component, Watch } from 'vue-property-decorator';\r\nimport {\r\n CreateFavoriteListRequest,\r\n FavoriteListPermission,\r\n FavoriteListViewObject,\r\n FavoritesItemsListedViewObject,\r\n ProductDetailsViewModel,\r\n ProductTileViewObject\r\n} from '@/types/apiServerContract';\r\nimport ProductFavoriteItemsService from '@/project/product/services/productFavoriteItems.service';\r\nimport SpinnerOverlay from '@/project/spinners/SpinnerOverlay.vue';\r\nimport myAccountStore from '@/project/app/client-pages/my-account/my-account.store';\r\nimport loggingService from '@/core/logging.service';\r\nimport bus from '@/core/bus';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\nimport { REMOVE_PRODUCT_TILE } from '@/project/app/client-pages/my-account/constants';\r\nimport FavoriteListCrudOverlayService from '@/project/modals/overlays/FavoriteListCrudOverlay.service';\r\nimport loginFormOverlayService from '@/project/modals/overlays/LoginFormOverlay.service';\r\n\r\ninterface FavoriteListViewObjectExtended extends FavoriteListViewObject {\r\n checked: boolean;\r\n loading: boolean;\r\n}\r\n\r\n@Component({\r\n components: { SpinnerOverlay }\r\n})\r\nexport default class ProductTileFavorite extends Vue {\r\n @Prop({ required: true })\r\n private product!: ProductTileViewObject | ProductDetailsViewModel;\r\n\r\n @Prop({ required: true })\r\n private isLoggedIn!: boolean;\r\n\r\n private loadingLists: boolean = false;\r\n private showOverlay: boolean = false;\r\n private showCreateFavouriteListOverlay: boolean = false;\r\n private listInformation: FavoritesItemsListedViewObject = {\r\n itemId: this.product.itemId,\r\n listIds: []\r\n };\r\n\r\n private get favoriteLists(): FavoriteListViewObject[] {\r\n return myAccountStore.allFavouriteLists.map(x => ({\r\n ...x,\r\n checked: this.isItemOnList(x)\r\n }) as FavoriteListViewObjectExtended)\r\n .filter(x => this.canEditList(x) || this.isItemOnList(x));\r\n }\r\n\r\n private isItemOnList(list: FavoriteListViewObject) {\r\n return this.listInformation.listIds.some(x => x === list.id);\r\n }\r\n\r\n private canEditList(list: FavoriteListViewObject) {\r\n return list.permission === FavoriteListPermission.Edit;\r\n }\r\n\r\n private titleForList(list: FavoriteListViewObject) {\r\n if (this.canEditList(list)) return null;\r\n\r\n return dictionaryService.get('FavoriteList.Products.NoPermission');\r\n }\r\n\r\n private get isOnList() {\r\n return this.listInformation.listIds.length > 0;\r\n }\r\n\r\n private get icon() {\r\n return this.isOnList ? 'favorite' : 'favorite-outline';\r\n }\r\n\r\n private async createList() {\r\n if (!this.isLoggedIn) return;\r\n\r\n this.showCreateFavouriteListOverlay = true;\r\n\r\n try {\r\n await FavoriteListCrudOverlayService.show(null, false, 'create');\r\n } finally {\r\n this.showCreateFavouriteListOverlay = false;\r\n }\r\n }\r\n\r\n private openOverlay() {\r\n this.showOverlay = true;\r\n }\r\n\r\n private closeOverlay() {\r\n // Ensure that we don't triggert the outside click whent he create modal is open\r\n if (this.showCreateFavouriteListOverlay) { return; }\r\n\r\n bus.emit(REMOVE_PRODUCT_TILE, this.listInformation);\r\n\r\n this.showOverlay = false;\r\n }\r\n\r\n private get hasSlot() {\r\n if (this.$slots?.default !== undefined) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private async updateList(list: FavoriteListViewObjectExtended) {\r\n if (list.loading || !this.isLoggedIn) {\r\n return;\r\n }\r\n\r\n list.loading = true;\r\n\r\n try {\r\n // The user doesn't have any favourite lists yet,\r\n // so we need to create the default one first\r\n if (list.id === myAccountStore.defaultList.id) {\r\n const createModel: CreateFavoriteListRequest = {\r\n name: list.name,\r\n description: list.description,\r\n shareWithOrganization: [],\r\n shareWithUsers: []\r\n };\r\n\r\n const updatedFavouriteLists = await myAccountStore.createFavouriteList(createModel);\r\n\r\n // This is a bit optimistic, but, ideally, the user should always have 1 private list\r\n // after the creation request - our default list\r\n if (updatedFavouriteLists.private.length) {\r\n list.id = updatedFavouriteLists.private[0].id;\r\n }\r\n }\r\n\r\n const index = this.listInformation.listIds.indexOf(list.id);\r\n\r\n if (list.checked && index < 0) {\r\n this.listInformation.listIds.push(list.id);\r\n } else if (index >= 0) {\r\n this.listInformation.listIds.splice(index, 1);\r\n }\r\n\r\n if (list.checked) {\r\n await myAccountStore.addFavoriteItem({\r\n listId: list.id,\r\n items: [\r\n {\r\n itemId: this.product.itemId,\r\n quantity: 1\r\n }\r\n ]\r\n });\r\n } else {\r\n await myAccountStore.removeFavoriteItems({\r\n listId: list.id,\r\n itemIds: [this.product.itemId]\r\n });\r\n }\r\n } catch (e) {\r\n loggingService.error(e);\r\n } finally {\r\n list.loading = false;\r\n }\r\n }\r\n\r\n private async checkIfProductIsListed() {\r\n if (!this.isLoggedIn || this.loadingLists) return;\r\n\r\n this.loadingLists = true;\r\n\r\n try {\r\n const request = ProductFavoriteItemsService.requestData(this.product.itemId);\r\n const result = await request.promise;\r\n if (result) {\r\n this.listInformation = result;\r\n }\r\n } catch {\r\n // No need to log any potential errors here since it's dealt with in our \"AbstractBulkFetch\" method.\r\n } finally {\r\n this.loadingLists = false;\r\n }\r\n }\r\n\r\n private showLoginOverlay() {\r\n loginFormOverlayService.show('login');\r\n }\r\n\r\n @Watch('isLoggedIn')\r\n onLoginStateChange(state: boolean) {\r\n if (state) {\r\n this.checkIfProductIsListed();\r\n }\r\n }\r\n\r\n created() {\r\n this.checkIfProductIsListed();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileFavorite.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileFavorite.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductTileFavorite.vue?vue&type=template&id=17546bf2&scoped=true&\"\nimport script from \"./ProductTileFavorite.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductTileFavorite.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductTileFavorite.vue?vue&type=style&index=0&id=17546bf2&lang=less&scoped=true&\"\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 \"17546bf2\",\n null\n \n)\n\nexport default component.exports","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'box': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 28 32',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'calendar': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 32 32',\r\n data: ''\r\n }\r\n})\r\n","type CableGuideName = 'cableGuide';\r\n\r\nexport enum CableGuideModes {\r\n stepByStep = 'step-by-step',\r\n}\r\n\r\nexport enum CableGuideActions {\r\n selectType = 'selectType',\r\n selectCableA = 'selectCableA',\r\n selectCableB = 'selectCableB'\r\n}\r\n\r\nexport interface CableGuideTrackingInformation {\r\n guideName: CableGuideName,\r\n guideMode: CableGuideModes,\r\n action: CableGuideActions,\r\n actionValue: string | undefined\r\n}\r\n\r\ninterface CableGuideTrackingDataModel extends CableGuideTrackingInformation {\r\n event: string,\r\n actionValue: string\r\n}\r\n\r\nexport function generateCableGuideTrackingData(model: CableGuideTrackingInformation): CableGuideTrackingDataModel | void {\r\n if (!model.actionValue) return;\r\n\r\n return {\r\n event: 'guide.selection',\r\n guideName: model.guideName,\r\n guideMode: model.guideMode,\r\n action: model.action,\r\n actionValue: model.actionValue\r\n };\r\n}\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CallToAction.vue?vue&type=style&index=0&id=69b53b22&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CallToAction.vue?vue&type=style&index=0&id=69b53b22&lang=less&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('SearchResultPanel',_vm._b({attrs:{\"context-key\":_vm.contextKey,\"term\":_vm.term,\"replaced-term\":_vm.replacedTerm,\"search-result\":_vm.searchResult,\"facets-result\":_vm.facetsResult,\"page-size\":_vm.pageSize,\"searching\":_vm.searching,\"menu-items\":_vm.menuItems,\"active-menu\":_vm.activeMenu,\"root-menu-item\":_vm.rootMenuItem,\"campaign-code\":_vm.campaignCode,\"brand-name\":_vm.brandName,\"page-blocks\":_vm.pageBlocks,\"page-blocks-below\":_vm.pageBlocksBelow,\"show-all-products\":_vm.showAllProducts,\"show-blocks-and-products\":_vm.showBlocksAndProducts,\"use-flattened-category-tree\":_vm.useFlattenedCategoryTree,\"category-id\":_vm.getCategoryId(),\"hide-admin-options\":_vm.hideAdminOptions},scopedSlots:_vm._u([{key:\"headline\",fn:function(){return [_vm._t(\"headline\",null,{\"searchResult\":_vm.searchResult})]},proxy:true},{key:\"navigation\",fn:function(){return [_vm._t(\"navigation\",null,{\"searchResult\":_vm.searchResult,\"menuItems\":_vm.menuItems,\"activeMenuItem\":_vm.activeMenu,\"rootMenuItem\":_vm.rootMenuItem})]},proxy:true}],null,true)},'SearchResultPanel',_vm.$attrs,false))}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop, Watch } from 'vue-property-decorator';\r\nimport Api from '@/project/http/Api.service';\r\nimport urlHelper, { UrlFacets } from '@/core/urlHelper.service';\r\nimport { Route } from 'vue-router';\r\nimport {\r\n CategoryTreeViewModel,\r\n FacetsViewModel,\r\n MenuItem,\r\n SearchRequest,\r\n SearchViewModel\r\n} from '@/types/apiServerContract';\r\nimport { HttpCancelError } from '@/core/http/HttpCancelError';\r\nimport { debounce } from 'lodash';\r\nimport gtmService from '@/project/tracking/gtm/GTM.service';\r\nimport SearchResultPanel from './SearchResultPanel.vue';\r\nimport { PRODUCT_SEARCH_COUNT } from './constants';\r\nimport { BaseContentModel, BreadcrumbItem, JsonContent, PageData } from '@/types/contentServerContract';\r\nimport appStore from '@/core/app/app.store';\r\nimport contentApiService from '@/core/http/contentApi.service';\r\nimport domService from '@/core/dom/dom.service';\r\nimport loggingService from '@/core/logging.service';\r\nimport serverContextService from '@/core/serverContext.service';\r\nimport facetSortService from '@/project/search/facet.sort.service';\r\n\r\n@Component({\r\n components: {\r\n SearchResultPanel\r\n }\r\n})\r\nexport default class SearchProductControl extends Vue {\r\n @Prop({ type: String, required: true })\r\n private contextKey!: string;\r\n\r\n @Prop({ type: Number, default: PRODUCT_SEARCH_COUNT })\r\n private pageSize!: number;\r\n\r\n @Prop({ type: String, default: '' })\r\n private campaignCode!: string;\r\n\r\n @Prop({ type: String, default: '' })\r\n private brandName!: string;\r\n\r\n @Prop({ type: String })\r\n private cableType!: string;\r\n\r\n @Prop({ type: String })\r\n private cableEndA!: string;\r\n\r\n @Prop({ type: String })\r\n private cableEndB!: string;\r\n\r\n @Prop({ type: String })\r\n private categoryId!: string;\r\n\r\n @Prop({ type: Boolean })\r\n private withResultsBreadcrumb!: boolean;\r\n\r\n @Prop({ type: Boolean })\r\n private includePageDataBreadcrumb!: boolean;\r\n\r\n @Prop({ type: String, default: '' })\r\n private categoryUrlBase!: string;\r\n\r\n @Prop({ type: String })\r\n private pageDataUrl!: string;\r\n\r\n @Prop()\r\n private allowedBrands!: string[];\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private renderMetaData!: boolean;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private trackPageView!: boolean;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private useFlattenedCategoryTree!: boolean;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private allowTerm!: boolean;\r\n\r\n @Prop({ type: Boolean, default: true })\r\n private allowSearch!: boolean;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private reactiveCategories!: boolean;\r\n\r\n @Prop({ type: Function })\r\n private searchResultCallback!: ((searchResult: SearchViewModel) => void) | undefined;\r\n\r\n @Prop({ type: Function })\r\n private pageDataResultCallback!: ((pageData?: PageData) => void) | undefined;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private showBlocksAndProducts!: boolean;\r\n\r\n private intialized: boolean = false;\r\n private pageBlocks: JsonContent[] | null = null;\r\n private pageBlocksBelow: JsonContent[] | null = null;\r\n private pageBreadcrumbs: BreadcrumbItem[] | null = null;\r\n private showAllProducts: boolean = false;\r\n private pageTracked: boolean = false;\r\n\r\n private searchResult: SearchViewModel | null = null;\r\n private facetsResult: FacetsViewModel | null = null;\r\n\r\n private menuItems: readonly MenuItem[] = [];\r\n private activeMenu: MenuItem | null = null;\r\n private rootMenuItem: MenuItem | null = null;\r\n\r\n private term = '';\r\n private replacedTerm: string | null = null;\r\n private translatedTerm: string | null = null;\r\n\r\n private searching = false;\r\n private debouncedTrackSearch = debounce(this.trackSearch, 2000)\r\n\r\n private getCategoryId() {\r\n return this.categoryId || urlHelper.getCategoryId();\r\n }\r\n\r\n private updateTerm() {\r\n this.term = this.allowTerm ? (urlHelper.getTerm() || '') : '';\r\n }\r\n\r\n private setSearching(isSearching: boolean) {\r\n this.searching = isSearching;\r\n }\r\n\r\n private resetSelectedMenus() {\r\n this.menuItems.forEach(x => x.selected = false);\r\n }\r\n\r\n private createSearchRequest() {\r\n const request: SearchRequest = {\r\n categoryId: this.getCategoryId(),\r\n categoryIds: urlHelper.getCategoryIds(),\r\n term: this.translatedTerm || this.replacedTerm || this.term,\r\n lastFacet: urlHelper.getLastFacet() || '',\r\n page: urlHelper.getPage(),\r\n pageSize: this.pageSize,\r\n filter: urlHelper.getSearchFilterId(),\r\n priceSort: urlHelper.getSearchPriceSortFilter(),\r\n campaignCode: this.campaignCode || urlHelper.getCampaignCode() || '',\r\n brandName: this.brandName,\r\n cableType: this.cableType,\r\n cableEndTypeA: this.cableEndA,\r\n cableEndTypeB: this.cableEndB,\r\n showScore: urlHelper.getShowScore(),\r\n wIds: [],\r\n explain: urlHelper.getShowExplanation(),\r\n useFlattenedCategoryTree: this.useFlattenedCategoryTree,\r\n isExternalProductGuide: window.servercontext.isExternalProductGuide,\r\n showInStockFilter: !(serverContextService.externalProductGuideSettings?.hideStock ?? false),\r\n allowedBrands: this.allowedBrands || undefined\r\n };\r\n\r\n return request;\r\n }\r\n\r\n private createUrlFacets(): UrlFacets {\r\n return facetSortService.createUrlFacets(this.facetsResult);\r\n }\r\n\r\n private async search() {\r\n this.updateTerm();\r\n\r\n // Category-id is either from category (when on category-page) or from url if in search-mode\r\n const request: SearchRequest = this.createSearchRequest();\r\n const facets: UrlFacets = this.createUrlFacets();\r\n\r\n // If parent disallows search\r\n if (!this.allowSearch) return;\r\n // Only search if category or term or campaign\r\n if (!request.categoryId && !request.term && !request.campaignCode && !request.brandName && (!request.cableEndTypeA && !request.cableEndTypeB)) return;\r\n // Do not search on category or campaign page if search is active, unless first time\r\n if (this.term && !this.allowTerm) return;\r\n // Do not search on search overlay if no term has been applied\r\n if (!this.term && this.allowTerm) return;\r\n\r\n this.setSearching(true);\r\n try {\r\n // Make parallel calls and handle individual responses as soon as they arrive - but handle errors in common way.\r\n await Promise.all([this.searchCall(request, facets), this.facetCall(request, facets), this.categoryCall(request, facets)]);\r\n\r\n if (this.searchResult?.translation) {\r\n this.translatedTerm = this.searchResult?.translation?.translation;\r\n } else if (this.searchResult?.changedTerm) {\r\n this.replacedTerm = this.searchResult?.changedTerm;\r\n }\r\n\r\n this.setSearching(false);\r\n this.intialized = true;\r\n } catch (error) {\r\n if (error instanceof HttpCancelError) {\r\n // Ok - cancelled by newer request\r\n } else {\r\n this.setSearching(false);\r\n this.intialized = true;\r\n throw error;\r\n }\r\n }\r\n\r\n if (this.term) {\r\n this.debouncedTrackSearch();\r\n }\r\n }\r\n\r\n private async searchCall(request: SearchRequest, facets: UrlFacets) {\r\n const result = await Api.search.search(request, facets, this.contextKey);\r\n this.searchResult = result;\r\n\r\n if (this.searchResultCallback) {\r\n this.searchResultCallback(result);\r\n }\r\n }\r\n\r\n private async facetCall(request: SearchRequest, facets: UrlFacets) {\r\n const result = await Api.search.facets(request, facets, this.contextKey);\r\n this.facetsResult = result;\r\n this.setupFacets(result);\r\n }\r\n\r\n private setupFacets(result: FacetsViewModel) {\r\n const facetsToKeep = [...result.facets];\r\n if (result.filters) {\r\n facetsToKeep.push(result.filters);\r\n }\r\n if (result.sorting) {\r\n facetsToKeep.push(result.sorting);\r\n }\r\n urlHelper.cleanupUrl(facetsToKeep.map(x => ({\r\n key: x.facetId,\r\n activeValueKeys: x.values.filter(x => x.selected).map(x => x.key),\r\n from: x.rangeFrom,\r\n to: x.rangeTo\r\n })));\r\n }\r\n\r\n private async categoryCall(request: SearchRequest, facets: UrlFacets) {\r\n const result: CategoryTreeViewModel = await Api.search.categories(request, facets, this.contextKey);\r\n\r\n if (this.categoryUrlBase) {\r\n fixupUrls(result.menuItems, this.categoryUrlBase);\r\n fixupUrls(result.breadcrumb, this.categoryUrlBase);\r\n }\r\n\r\n this.menuItems = this.reactiveCategories\r\n ? result.menuItems\r\n : Object.freeze(result.menuItems);\r\n\r\n this.activeMenu = result.selectedMenu ?? null;\r\n this.rootMenuItem = result.rootMenu ?? null;\r\n\r\n this.setupBreadcrumb(result.breadcrumb);\r\n\r\n function fixupUrls(menus: MenuItem[], path: string): void {\r\n for (const menu of menus) {\r\n menu.url = path + '/' + menu.url;\r\n fixupUrls(menu.children, path);\r\n }\r\n }\r\n }\r\n\r\n private setupBreadcrumb(megaMenuPath: readonly MenuItem[]) {\r\n if (!this.includePageDataBreadcrumb && !this.withResultsBreadcrumb) return;\r\n\r\n let result: MenuItem[] = [];\r\n\r\n // On a campaign page we want to prepend the breadcrumb with the path to the campaigns content page\r\n if (this.includePageDataBreadcrumb && this.pageBreadcrumbs) {\r\n result = this.pageBreadcrumbs as MenuItem[];\r\n }\r\n\r\n if (this.withResultsBreadcrumb) {\r\n result = [...result, ...megaMenuPath];\r\n }\r\n\r\n if (result.length > 0) {\r\n appStore.setBreadcrumb(result);\r\n }\r\n }\r\n\r\n private async getPageData() {\r\n const pageUrl = this.pageDataUrl;\r\n if (!pageUrl || urlHelper.getCategoryId()) {\r\n this.pageBlocks = null;\r\n this.pageBlocksBelow = null;\r\n this.pageBreadcrumbs = null;\r\n this.trackPage();\r\n return;\r\n }\r\n\r\n try {\r\n const pageData = await contentApiService.getPageParallel(pageUrl);\r\n if (this.pageDataResultCallback) {\r\n this.pageDataResultCallback(pageData);\r\n }\r\n\r\n if (this.renderMetaData) {\r\n const isRelativeUrl = this.brandName !== '';\r\n domService.updateMetaData(pageData.metadata, isRelativeUrl);\r\n }\r\n\r\n this.trackPage(pageData.metadata.id);\r\n this.setPageBlocks(pageData);\r\n this.setPageBlocksBelow(pageData);\r\n this.setPageBreadcrumbs(pageData);\r\n this.setShowAllProducts(pageData);\r\n } catch {\r\n this.pageBlocks = null;\r\n this.pageBlocksBelow = null;\r\n this.pageBreadcrumbs = null;\r\n\r\n if (this.pageDataResultCallback) {\r\n this.pageDataResultCallback();\r\n }\r\n }\r\n }\r\n\r\n private setPageBlocks(pageData: PageData) {\r\n this.pageBlocks = (pageData?.jsonContent?.content as BaseContentModel).blocks ?? null;\r\n }\r\n\r\n private setPageBlocksBelow(pageData: PageData) {\r\n this.pageBlocksBelow = (pageData?.jsonContent?.content as BaseContentModel).blocksBelow ?? null;\r\n }\r\n\r\n private setPageBreadcrumbs(pageData: PageData) {\r\n this.pageBreadcrumbs = (pageData?.navigation?.breadcrumb) ?? null;\r\n }\r\n\r\n private setShowAllProducts(pageData: PageData) {\r\n this.showAllProducts = (pageData?.jsonContent?.content.listAllProducts as boolean) ?? false;\r\n }\r\n\r\n private async setAlternativeUrlLanguages() {\r\n if (!this.categoryId) { return; }\r\n\r\n try {\r\n const result = await Api.metadata.getAlternativeCategoryUrls(this.categoryId);\r\n if (result.alternativeUrls.length > 1) {\r\n domService.setHreflang(result.alternativeUrls);\r\n }\r\n } catch (error) {\r\n loggingService.error(error);\r\n }\r\n }\r\n\r\n private trackSearch() {\r\n gtmService.trackSearch(this.term, this.searchResult?.totalHits ?? 0);\r\n }\r\n\r\n private trackPage(pageId?: number) {\r\n if (this.trackPageView && !this.pageTracked && this.$route.name) {\r\n this.pageTracked = true;\r\n gtmService.trackGenericPageView(this.$route.name, pageId);\r\n }\r\n }\r\n\r\n private get hideAdminOptions(): boolean {\r\n return !!(this.cableType || this.cableEndA || this.cableEndB);\r\n }\r\n\r\n @Watch('$route')\r\n onRouteChange(to: Route, from?: Route) {\r\n // If user engaged in a new search, remove the replaced term\r\n if (to.query.term !== from?.query.term) {\r\n this.replacedTerm = null;\r\n this.translatedTerm = null;\r\n this.resetSelectedMenus();\r\n urlHelper.clearFacets();\r\n urlHelper.removeQueryParams('pageKey', 'categoryIdKey', 'categoryIdsKey');\r\n } else if (to.params.categoryId !== from.params.categoryId) {\r\n urlHelper.removeQueryParams('pageKey');\r\n }\r\n\r\n // Always allow it to render at page load, in case we are on a page while also having an active term\r\n if (this.intialized) {\r\n const isSearching = urlHelper.isSearching(to) || urlHelper.isSearching(from);\r\n if (isSearching && !this.allowTerm) return;\r\n }\r\n\r\n this.search();\r\n }\r\n\r\n @Watch('pageDataUrl')\r\n onPageDataUrlChange() {\r\n this.pageTracked = false;\r\n this.getPageData();\r\n }\r\n\r\n @Watch('allowSearch')\r\n onAllowSearchChange() {\r\n if (this.allowSearch) {\r\n this.search();\r\n }\r\n }\r\n\r\n @Watch('categoryId', {\r\n immediate: true\r\n })\r\n onCategoryIdChange() {\r\n this.setAlternativeUrlLanguages();\r\n }\r\n\r\n mounted() {\r\n this.getPageData().then(() => {\r\n this.search();\r\n });\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchProductControl.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchProductControl.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchProductControl.vue?vue&type=template&id=2faa37d2&\"\nimport script from \"./SearchProductControl.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchProductControl.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","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'help': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 32 32',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'delete': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 26 32',\r\n data: ''\r\n }\r\n})\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('CultureAwareRouterLink',{staticClass:\"c-product-tile-image flex items-center w-full h-full\",attrs:{\"to\":_vm.productDetailsUrl,\"target\":_vm.productDetailsUrlTarget},nativeOn:{\"click\":function($event){return _vm.productClick()}}},[_c('ResponsiveProductImage',{attrs:{\"size\":_vm.imageSize,\"image-url\":_vm.thumbnailImage,\"alt\":_vm.product.displayName,\"retina\":\"\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Prop, Component } from 'vue-property-decorator';\r\nimport { ProductTileViewObject, LineItemViewObject, BidViewObject } from '@/types/apiServerContract';\r\nimport ResponsiveProductImage from '@/project/product/image/ResponsiveProductImage.vue';\r\nimport serverContextService from '@/core/serverContext.service';\r\n\r\n@Component({\r\n components: { ResponsiveProductImage }\r\n})\r\nexport default class ProductTileImage extends Vue {\r\n @Prop({ required: true }) product!: ProductTileViewObject | LineItemViewObject | BidViewObject;\r\n @Prop({ required: false, type: Function }) productClick!: () => void;\r\n @Prop({ required: false, type: String, default: 'vertical' }) mode!: 'vertical' | 'horizontal' | 'horizontal-tiny';\r\n\r\n private get imageSize(): string {\r\n switch (this.mode) {\r\n case 'horizontal': return '86';\r\n case 'horizontal-tiny': return '86';\r\n default: return '200';\r\n }\r\n }\r\n\r\n private get thumbnailImage(): string {\r\n return this.product?.image?.uri ?? serverContextService.imageNotFound;\r\n }\r\n\r\n private get productDetailsUrl() {\r\n return serverContextService.productUrl(this.product);\r\n }\r\n\r\n private get productDetailsUrlTarget() {\r\n return serverContextService.externalProductLinkTarget;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileImage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileImage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductTileImage.vue?vue&type=template&id=7c3a7f78&scoped=true&\"\nimport script from \"./ProductTileImage.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductTileImage.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductTileImage.vue?vue&type=style&index=0&id=7c3a7f78&lang=less&scoped=true&\"\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 \"7c3a7f78\",\n null\n \n)\n\nexport default component.exports","/* tslint:disable */\r\nrequire('./become-a-customer-success-step1');\r\nrequire('./become-a-customer-success-step2');\r\nrequire('./become-a-customer-success-step3');\r\n","import {\r\n disableBodyScroll as bslDisableBodyScroll,\r\n enableBodyScroll as bslEnableBodyScroll,\r\n clearAllBodyScrollLocks as bslClearAllBodyScrollLocks\r\n} from 'body-scroll-lock';\r\nimport bus from '@/core/bus';\r\n\r\nexport const BODY_SCROLL_LOCKED = 'BodyScrollLocked';\r\n\r\nclass ScrollService {\r\n bodyLocks = 0;\r\n\r\n public scrollToTop() {\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n public scrollToElement(element: HTMLElement, offset: number = 0, duration: number = 200, scrollElement: HTMLElement | undefined = undefined) {\r\n duration === 0\r\n ? this.simpleScroll(element.offsetTop + offset, scrollElement)\r\n : this.animateScroll(element.offsetTop + offset, duration, scrollElement);\r\n }\r\n\r\n public disableBodyScroll(targetElement: HTMLElement): void {\r\n if (!targetElement) {\r\n throw new Error('disableBodyScroll: targetElement is null');\r\n }\r\n if (this.bodyLocks === 0) {\r\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\r\n bus.emit(BODY_SCROLL_LOCKED, scrollBarGap);\r\n }\r\n\r\n bslDisableBodyScroll(targetElement, {\r\n reserveScrollBarGap: true,\r\n allowTouchMove: el => {\r\n while (el && el !== document.body) {\r\n if (el.getAttribute('id') === 'coiOverlay') {\r\n return true;\r\n }\r\n\r\n el = el.parentElement;\r\n }\r\n }\r\n });\r\n this.bodyLocks++;\r\n }\r\n\r\n public enableBodyScroll(targetElement: HTMLElement): void {\r\n if (!targetElement) {\r\n throw new Error('enableBodyScroll: targetElement is null');\r\n }\r\n if (this.bodyLocks === 0) throw new Error('enableBodyScroll: no locks');\r\n this.bodyLocks--;\r\n if (this.bodyLocks === 0) {\r\n bus.emit(BODY_SCROLL_LOCKED, 0);\r\n }\r\n bslEnableBodyScroll(targetElement);\r\n }\r\n\r\n public clearAllBodyScrollLocks(): void {\r\n this.bodyLocks = 0;\r\n bus.emit(BODY_SCROLL_LOCKED, 0);\r\n bslClearAllBodyScrollLocks();\r\n }\r\n\r\n public simpleScroll(to: number, scrollElement: HTMLElement | undefined = undefined) {\r\n if (scrollElement) {\r\n scrollElement.scrollTop = to;\r\n } else {\r\n window.scrollTo(0, to);\r\n }\r\n }\r\n\r\n public animateScroll(to, duration, scrollElement: HTMLElement | undefined = undefined) {\r\n const startingY = scrollElement ? scrollElement.scrollTop : window.pageYOffset;\r\n const diff = to - startingY;\r\n let start;\r\n window.requestAnimationFrame(function step(timestamp) {\r\n if (!start) {\r\n start = timestamp;\r\n }\r\n const time = timestamp - start;\r\n const percent = Math.min(time / duration, 1);\r\n\r\n if (scrollElement) {\r\n scrollElement.scrollTop = startingY + diff * percent;\r\n } else {\r\n window.scrollTo(0, startingY + diff * percent);\r\n }\r\n\r\n if (time < duration) {\r\n window.requestAnimationFrame(step);\r\n }\r\n });\r\n }\r\n\r\n public getScrollbarWidth() {\r\n // Creating invisible container\r\n const outer = document.createElement('div');\r\n outer.style.visibility = 'hidden';\r\n outer.style.overflow = 'scroll'; // forcing scrollbar to appear\r\n (outer.style as any).msOverflowStyle = 'scrollbar'; // needed for WinJS apps\r\n document.body.appendChild(outer);\r\n\r\n // Creating inner element and placing it in the container\r\n const inner = document.createElement('div');\r\n outer.appendChild(inner);\r\n\r\n // Calculating difference between container's full width and the child width\r\n const scrollbarWidth = (outer.offsetWidth - inner.offsetWidth);\r\n\r\n // Removing temporary elements from the DOM\r\n if (outer.parentNode) {\r\n outer.parentNode.removeChild(outer);\r\n }\r\n\r\n return scrollbarWidth;\r\n }\r\n}\r\n// t = current time\r\n// b = start value\r\n// c = change in value\r\n// d = duration\r\n(Math as any).easeInOutQuad = (t, b, c, d) => {\r\n t /= d / 2;\r\n if (t < 1) {\r\n return (c / 2) * t * t + b;\r\n }\r\n t--;\r\n return (-c / 2) * (t * (t - 2) - 1) + b;\r\n};\r\n\r\nexport default new ScrollService();\r\n","import { RouteConfig } from 'vue-router';\r\nimport { PageName } from '@/router/routes/constants';\r\nimport { RouterMetaData } from '@/core/app/clientPageHandler';\r\nimport { isDevMode } from '@/core/environmentService';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\nimport siteService from '@/project/site/site.service';\r\n\r\nconst GeneralRoutes: RouteConfig[] = [\r\n {\r\n path: '/*wid-:id',\r\n name: PageName.PRODUCT_DETAILS,\r\n component: () => import(\r\n /* webpackPrefetch: true */\r\n '@/project/app/client-pages/product-details/ProductDetailsPage.vue'),\r\n meta: {\r\n headMeta: {\r\n index: true\r\n },\r\n isPublic: true,\r\n skipAutoPageTracking: true,\r\n skipAutoBreadcrumb: true,\r\n skipAutoSeoTitle: true\r\n } as RouterMetaData\r\n },\r\n {\r\n path: '/campaigns/:campaignCode',\r\n name: PageName.CAMPAIGN,\r\n component: () => import(\r\n /* webpackPrefetch: true */\r\n '@/project/app/client-pages/CampaignPage.vue'),\r\n props: (route) => ({\r\n campaignCode: route.params.campaignCode\r\n }),\r\n meta: {\r\n headMeta: {\r\n index: true\r\n },\r\n isPublic: true,\r\n skipAutoPageTracking: true,\r\n skipAutoBreadcrumb: true,\r\n skipAutoSeoTitle: true\r\n } as RouterMetaData\r\n },\r\n {\r\n path: '/brands',\r\n redirect: { name: PageName.BRAND_OVERVIEW }\r\n },\r\n {\r\n path: '/brands/all/:categoryId?',\r\n name: PageName.BRAND_OVERVIEW,\r\n component: () => import(\r\n /* webpackChunkName: 'brands' */\r\n '@/project/app/client-pages/BrandsOverview.vue'),\r\n meta: {\r\n isPublic: true,\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('Brand.BrandOverview.Title'),\r\n page: PageName.BRAND_OVERVIEW\r\n },\r\n {\r\n name: dictionaryService.get('Brand.BrandOverview.AllBrands'),\r\n page: PageName.BRAND_OVERVIEW\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: '/brands/:brandName',\r\n name: PageName.BRAND,\r\n component: () => import(\r\n /* webpackChunkName: 'brands' */\r\n '@/project/app/client-pages/BrandPage.vue'),\r\n props: (route) => ({\r\n brandName: route.params.brandName,\r\n mode: PageName.BRAND\r\n }),\r\n meta: {\r\n headMeta: {\r\n index: true\r\n },\r\n isPublic: true,\r\n skipAutoSeoTitle: true,\r\n skipAutoPageTracking: true\r\n } as RouterMetaData\r\n },\r\n {\r\n path: '/brands/:brandName/:brandSubContent',\r\n name: PageName.BRAND_SUBCONTENT,\r\n component: () => import(\r\n /* webpackChunkName: 'brands' */\r\n '@/project/app/client-pages/BrandPage.vue'),\r\n props: (route) => ({\r\n brandName: route.params.brandName,\r\n mode: PageName.BRAND_SUBCONTENT,\r\n brandSubContent: route.params.brandSubContent\r\n }),\r\n meta: {\r\n headMeta: {\r\n index: true\r\n },\r\n isPublic: true,\r\n skipAutoSeoTitle: true,\r\n skipAutoPageTracking: true\r\n } as RouterMetaData\r\n },\r\n {\r\n path: '/c-:categoryId',\r\n name: PageName.CATEGORY,\r\n component: () => import(\r\n /* webpackPrefetch: true */\r\n '@/project/app/client-pages/CategoryPage.vue'),\r\n props: (route) => ({\r\n categoryId: route.params.categoryId,\r\n mode: PageName.CATEGORY\r\n }),\r\n meta: {\r\n headMeta: {\r\n index: true\r\n },\r\n isPublic: true,\r\n skipAutoPageTracking: true,\r\n skipAutoBreadcrumb: true,\r\n skipAutoSeoTitle: true\r\n } as RouterMetaData\r\n },\r\n {\r\n path: '/*/c-:categoryId',\r\n name: PageName.CATEGORY_2,\r\n component: () => import(\r\n /* webpackPrefetch: true */\r\n '@/project/app/client-pages/CategoryPage.vue'),\r\n props: (route) => ({\r\n categoryId: route.params.categoryId,\r\n mode: PageName.CATEGORY\r\n }),\r\n meta: {\r\n headMeta: {\r\n index: true\r\n },\r\n isPublic: true,\r\n skipAutoPageTracking: true,\r\n skipAutoBreadcrumb: true,\r\n skipAutoSeoTitle: true\r\n } as RouterMetaData\r\n },\r\n {\r\n path: '/basket',\r\n name: PageName.BASKET,\r\n component: () => import(\r\n /* webpackPrefetch: true */\r\n '@/project/app/client-pages/basket-page/BasketPage.vue'),\r\n meta: {\r\n isPublic: false,\r\n skipAutoPageTracking: true,\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('Basket'),\r\n page: PageName.BASKET\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: '/checkout',\r\n name: PageName.CHECKOUT,\r\n component: () => import(\r\n /* webpackPrefetch: true */\r\n '@/project/app/client-pages/checkout/CheckoutPage.vue'),\r\n meta: {\r\n isTunnelView: true,\r\n hideBreadcrumb: true,\r\n isPublic: false,\r\n skipAutoPageTracking: true\r\n } as RouterMetaData\r\n },\r\n {\r\n path: '/confirmation',\r\n name: PageName.CONFIRMATION,\r\n component: () => import(\r\n /* webpackPrefetch: true */\r\n '@/project/app/client-pages/confirmation/ConfirmationPage.vue'),\r\n meta: {\r\n hideBreadcrumb: true,\r\n isPublic: false,\r\n skipAutoPageTracking: true\r\n } as RouterMetaData\r\n },\r\n {\r\n path: '/404',\r\n name: 'notfound',\r\n component: () => import('@/project/app/content-pages/ContentPageRenderer.vue'),\r\n meta: {\r\n isContent: true,\r\n isPublic: true\r\n }\r\n\r\n },\r\n {\r\n path: '/500',\r\n name: 'errorpage',\r\n component: () => import('@/project/app/content-pages/ContentPageRenderer.vue'),\r\n meta: {\r\n isContent: true,\r\n isPublic: true\r\n }\r\n\r\n },\r\n {\r\n path: '/page/:pageId(\\\\d+)',\r\n name: 'pageRedirect',\r\n beforeEnter(to) { location.href = `/${siteService.getCulture()}/${to.params.pageId}`; },\r\n meta: {\r\n isPublic: true,\r\n skipAutoPageTracking: true\r\n } as RouterMetaData\r\n\r\n },\r\n {\r\n path: '/:pageId(\\\\d+)',\r\n name: 'pageIdRedirect',\r\n beforeEnter(to) { location.href = `/${siteService.getCulture()}/${to.params.pageId}`; },\r\n meta: {\r\n isPublic: true,\r\n skipAutoPageTracking: true\r\n } as RouterMetaData\r\n }\r\n];\r\n\r\nif (isDevMode()) {\r\n GeneralRoutes.push({\r\n path: '/lokaltestside',\r\n name: PageName.KITCHEN_SINK,\r\n component: () => import(\r\n /* webpackPrefetch: true */\r\n '@/project/kitchensink/KitchenSink.vue')\r\n });\r\n}\r\n\r\nexport { GeneralRoutes };\r\n","import { GeneralRoutes } from './general.routes';\r\nimport { MyAccountRoutes } from './my-account.routes';\r\nconst isProductGuide = process.env.PRODUCTGUIDE !== undefined;\r\n\r\nexport const ClientRoutes = isProductGuide ? [] : [...GeneralRoutes, MyAccountRoutes];\r\n","import { RouteConfig } from 'vue-router';\r\n\r\nexport const ContentRoute: RouteConfig = {\r\n path: '*', // All non-client side routes we assume first to be a content route\r\n name: 'content',\r\n component: () => import('@/project/app/content-pages/ContentPageRenderer.vue'),\r\n meta: {\r\n isContent: true,\r\n isPublic: true\r\n }\r\n};\r\n","import { RouteConfig } from 'vue-router';\r\nimport { ClientRoutes } from './client-routes';\r\n\r\n// Content Route is a fallback route and therefor must be added last to vue-router\r\nimport { ContentRoute } from './content-routes/content.route';\r\n\r\nexport const routes: RouteConfig[] = [...ClientRoutes, ContentRoute];\r\n","import Vue from 'vue';\r\nimport VueRouter, { Route } from 'vue-router';\r\nimport bus from '@/core/bus';\r\nimport { Position, PositionResult } from 'vue-router/types/router';\r\nimport { Ensure } from './Ensure';\r\nimport { routes } from './routes';\r\nimport { HasOutstandingXhrCallsEventKey } from '@/core/http/constants';\r\nimport scrollService from '@/core/scroll/scroll.service';\r\nimport Deferred from '@/core/async/Deferred';\r\n\r\nlet hasOutstandingXHRRequests = false;\r\nlet clearOutstandingXHRRequestsTimerHandle = 0;\r\nlet ensurePageReadyForScroll: Ensure | null = null;\r\nexport const ContentPageRenderedEventKey = 'ContentPageRendered';\r\nexport const PageRenderedEventKey = 'PageRendered';\r\nconst hashOffset = -60;\r\n\r\nVue.use(VueRouter);\r\n\r\nexport const router = new VueRouter({\r\n base: window.servercontext?.culture,\r\n routes: routes,\r\n mode: 'history',\r\n async scrollBehavior(to: Route, from: Route, savedPosition: Position | void) {\r\n const positionResultDeferred: Deferred = new Deferred();\r\n\r\n // First set scrollresult for waiting scenarios\r\n const positionResult = await setScrollPositionResult(to, from, savedPosition);\r\n positionResultDeferred.resolve(positionResult);\r\n\r\n // Await pending XHR request and report whole page is ready (so e.g. footer can be drawn (WebVitals CLS))\r\n try {\r\n await pageRendered();\r\n } finally {\r\n bus.emit(PageRenderedEventKey);\r\n }\r\n\r\n return positionResultDeferred.promise;\r\n }\r\n});\r\n\r\nrouter.onReady(() => {\r\n preventAutoScroll();\r\n\r\n bus.on(HasOutstandingXhrCallsEventKey, (hasOutstanding: boolean) => {\r\n if (hasOutstanding) {\r\n clearTimeout(clearOutstandingXHRRequestsTimerHandle);\r\n hasOutstandingXHRRequests = true;\r\n } else {\r\n // Allow for rendering of data returned from call\r\n clearOutstandingXHRRequestsTimerHandle = setTimeout(() => hasOutstandingXHRRequests = false, 25);\r\n }\r\n });\r\n\r\n // Potential initial scrolling to hash\r\n navigateToRouteHash();\r\n});\r\n\r\nasync function setScrollPositionResult(to: Route, from: Route, savedPosition: Position | void): Promise {\r\n // Make sure an unfinished waiting to scroll is canceled first.\r\n cleanupEnsures();\r\n\r\n if (to.path === from.path && (!to.hash || to.hash === from.hash)) {\r\n // Only query or params changed - don't scroll\r\n return Promise.resolve();\r\n }\r\n\r\n if (!savedPosition && !to.hash) {\r\n // New page with no hash - scroll to top\r\n return Promise.resolve({ x: 0, y: 0 });\r\n }\r\n\r\n // We have a saved position or a hash. Page is now loaded but components may not be rendered\r\n try {\r\n await pageRendered();\r\n if (to.hash) {\r\n return Promise.resolve({ selector: to.hash, behavior: 'smooth', offset: { x: 0, y: -1 * hashOffset } });\r\n } else {\r\n return Promise.resolve(savedPosition);\r\n }\r\n } catch (e) {\r\n // Timeout or cancelled - scroll to top\r\n return Promise.resolve({\r\n x: 0,\r\n y: 0\r\n });\r\n }\r\n\r\n function cleanupEnsures() {\r\n if (ensurePageReadyForScroll) {\r\n ensurePageReadyForScroll.cancel();\r\n ensurePageReadyForScroll = null;\r\n }\r\n }\r\n}\r\n\r\nfunction preventAutoScroll() {\r\n if ('scrollRestoration' in history) {\r\n try {\r\n history.scrollRestoration = 'manual';\r\n } catch (e) {\r\n // Ignore\r\n }\r\n }\r\n}\r\n\r\nasync function pageRendered() {\r\n const deferred = new Deferred();\r\n try {\r\n ensurePageReadyForScroll = new Ensure(() => !hasOutstandingXHRRequests, -1);\r\n await ensurePageReadyForScroll.start();\r\n Vue.nextTick(() => deferred.resolve());\r\n } catch {\r\n deferred.reject();\r\n }\r\n return deferred.promise;\r\n}\r\n\r\nasync function navigateToRouteHash() {\r\n const hash = window.location.hash;\r\n if (hash) {\r\n try {\r\n const elementId = hash.slice(1);\r\n const hashElementCheckerEnsure = new Ensure(() => {\r\n return !!document.getElementById(elementId);\r\n });\r\n await hashElementCheckerEnsure.start();\r\n await pageRendered();\r\n const hashElement = document.getElementById(elementId);\r\n scrollService.scrollToElement(hashElement!, hashOffset);\r\n } catch (e) {\r\n // No hash elements found, or we changed page before it appeared in dom\r\n }\r\n }\r\n}\r\n","module.exports = function() {\r\n return function({ e, addVariant }) {\r\n addVariant('oprema', ({ modifySelectors, separator, container }) => {\r\n modifySelectors(({ className }) => {\r\n return `body[data-theme=\"oprema\"] .${e(`oprema${separator}${className}`)}`;\r\n });\r\n });\r\n };\r\n};\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'map-marker-green': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 18 24',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'search': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 32 32',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'bid': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 30 31',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'oprema-logo-half-eet': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 107.8 21.6',\r\n data: ''\r\n }\r\n})\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ValidationProvider',{attrs:{\"rules\":_vm.rules,\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nvar classes = ref.classes;\nreturn [_c('div',{staticClass:\"c-input-select relative w-full h-40\",class:_vm.variant},[(_vm.labelPrefix)?_c('div',{staticClass:\"c-input-select__label-prefix px-20 h-40\"},[_vm._v(\" \"+_vm._s(_vm.labelPrefix)+\" \")]):_vm._e(),_c('select',_vm._g(_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.internalValue),expression:\"internalValue\"},{name:\"prohibit-zoom\",rawName:\"v-prohibit-zoom\"}],staticClass:\"c-input-select__select h-40 w-full px-20 z-0\",class:[classes, _vm.selectClasses],attrs:{\"id\":_vm.id,\"name\":_vm.name},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.internalValue=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},'select',_vm.$attrs,false),_vm.listeners),[_vm._t(\"default\")],2),_c('c-icon',{staticClass:\"c-input-select__arrow\",attrs:{\"name\":\"arrow-down\"}})],1),(_vm.showErrors)?_c('div',_vm._l((errors),function(error){return _c('div',{key:error,staticClass:\"text-red-500 text-12 font-medium px-20 pb-5 pt-5\"},[_vm._v(\" \"+_vm._s(error)+\" \")])}),0):_vm._e()]}}],null,true)})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop, Watch } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class InputSelect extends Vue {\r\n internalValue: string | object | number | null = null;\r\n\r\n @Prop({ required: true })\r\n private value!: string | object | number | null;\r\n\r\n @Prop({ type: String, required: true })\r\n private name!: string;\r\n\r\n @Prop({ type: [String, Object], required: false, default: '' })\r\n private rules!: string | object;\r\n\r\n @Prop({ type: Boolean, required: false, default: true })\r\n private showErrors!: boolean;\r\n\r\n @Prop({ type: String, required: false })\r\n private selectClasses!: string;\r\n\r\n @Prop({ type: String, required: false })\r\n private labelPrefix!: string;\r\n\r\n @Prop({ type: String, validator: value => ['blue', 'white'].includes(value as string) })\r\n private variant!: 'blue' | 'white';\r\n\r\n private get id() {\r\n return this.name + new Date().valueOf();\r\n }\r\n\r\n created() {\r\n this.internalValue = this.value;\r\n }\r\n\r\n @Watch('value')\r\n onValueChange(value: object) {\r\n this.internalValue = value;\r\n }\r\n\r\n @Watch('internalValue')\r\n onInternalValueChange(value: any) {\r\n this.$emit('input', value);\r\n }\r\n\r\n private get listeners() {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { input, ...listeners } = this.$listeners;\r\n return listeners;\r\n }\r\n\r\n private get hasValue(): boolean {\r\n return !!this.value;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InputSelect.vue?vue&type=template&id=7cc45f68&scoped=true&\"\nimport script from \"./InputSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./InputSelect.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./InputSelect.vue?vue&type=style&index=0&id=7cc45f68&lang=less&scoped=true&\"\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 \"7cc45f68\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"text-12\",class:{'flex flex-wrap' : _vm.tileBasketMode}},[(!_vm.condensedMode)?_c('p',{staticClass:\"truncate font-medium text-left\",class:{'product-condition-title md:font-bold' : !_vm.tileBasketMode, 'text-alignment': _vm.tileBasketMode}},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Stock.Condition'))+\" \")]):_vm._e(),_c('div',{staticClass:\"product-condition-value truncate\"},[_c('v-popover',{attrs:{\"trigger\":\"hover focus\",\"auto-hide\":\"\",\"offset\":\"5\",\"placement\":\"top\"}},[(!_vm.condensedMode)?_c('div',{staticClass:\"text-right md:text-left theme-text-linkcolor font-medium underline cursor-pointer\"},[_vm._v(\" \"+_vm._s(_vm.getClassificationCodeDictionary())+\" \")]):_c('div',{staticClass:\"flex items-center bg-blue-500 oprema:bg-opremablue-300 px-15 py-2 text-12 text-white font-medium text-center cursor-pointer\"},[_c('span',{staticClass:\"mr-10\"},[_vm._v(_vm._s(_vm._f(\"t\")('Product.Condition')))]),_c('c-icon',{attrs:{\"name\":\"info\",\"original\":false,\"width\":\"15\",\"height\":\"15\"}})],1),_c('template',{slot:\"popover\"},[_c('div',{staticClass:\"text-12 font-bold mb-5\"},[_c('p',[_vm._v(_vm._s(_vm.getClassificationCodeDictionary()))])]),_c('div',{staticClass:\"text-12 font-medium whitespace-pre-line\"},[_c('p',[_vm._v(_vm._s(_vm.getClassificationCodeDictionary(true)))])])])],2)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Prop, Component } from 'vue-property-decorator';\r\nimport { ProductTileViewObject, LineItemViewObject } from '@/types/apiServerContract';\r\nimport productConditionService from '@/project/product/services/productCondition.service';\r\n\r\n@Component\r\nexport default class ProductTileCondition extends Vue {\r\n @Prop({ required: true }) product!: ProductTileViewObject | LineItemViewObject;\r\n @Prop({ required: false, type: Boolean }) condensedMode!: boolean;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private tileBasketMode!: boolean;\r\n\r\n private getClassificationCodeDictionary(details: boolean = false) {\r\n return productConditionService.getProductClassificationCodeDictionary(this.product.conditionCode, details);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileCondition.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileCondition.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductTileCondition.vue?vue&type=template&id=b9b237e2&scoped=true&\"\nimport script from \"./ProductTileCondition.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductTileCondition.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductTileCondition.vue?vue&type=style&index=0&id=b9b237e2&lang=less&scoped=true&\"\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 \"b9b237e2\",\n null\n \n)\n\nexport default component.exports","/* eslint-disable */\r\nexport interface ImportTranslationResultViewModel {\r\n importedDateTime: string;\r\n saveAndPublishTranslatedContentResult: SaveAndPublishTranslatedContentResult;\r\n}\r\nexport interface TranslationJobListItemViewModel {\r\n jobId: string;\r\n lastImported: string;\r\n lastSaved: string;\r\n projectId: string;\r\n status: string;\r\n targetLanguage: string;\r\n}\r\nexport interface TranslationProjectListItemViewModel {\r\n name: string;\r\n numberOfJobs: number;\r\n pageId: number;\r\n projectId: string;\r\n projectStatus: string;\r\n sourceLanguage: string;\r\n}\r\nexport interface TranslationProjectTemplateViewModel {\r\n id: string;\r\n sourceLanguage: string;\r\n targetLanguages: string[];\r\n templateName: string;\r\n}\r\nexport interface BaseContentModel {\r\n blocks: JsonContent[];\r\n blocksBelow: JsonContent[];\r\n}\r\nexport interface SaveAndPublishTranslatedContentResult {\r\n isPublished: boolean;\r\n languageVariantSaveAndPublishResults: SaveAndPublishTranslatedContentResult[];\r\n publishFailed: boolean;\r\n targetLanguage: string;\r\n translationJobId: string;\r\n}\r\nexport interface BasketPageViewModel extends BaseContentModel {\r\n}\r\nexport interface BecomeACustomerViewModel extends BaseContentModel {\r\n areaOfInterest: string[];\r\n image: Media;\r\n imageText: string;\r\n showCrn: boolean;\r\n}\r\nexport interface BrandPageViewModel extends BaseContentModel {\r\n brandName: string;\r\n listAllProducts: boolean;\r\n}\r\nexport interface BrandSearchPageLinkViewModel {\r\n brandName: string;\r\n links: BrandSearchPageLinkViewObject[];\r\n}\r\nexport interface BrandSearchPageLinkViewObject {\r\n categoryIds: string[];\r\n displayName: string;\r\n pageName: string;\r\n url: string;\r\n}\r\nexport interface BrandSearchPageViewModel extends BaseContentModel {\r\n brandName: string;\r\n categoryIds: string[];\r\n displayName: string;\r\n}\r\nexport interface BrandsViewModel extends BaseContentModel {\r\n}\r\nexport interface CampaignBlockViewModel {\r\n buttonText: string;\r\n campaignName: string;\r\n campaignUrl: string;\r\n categories: string[];\r\n endDate: string;\r\n iconUrl: string;\r\n id: number;\r\n image: Media;\r\n showIcon: boolean;\r\n startDate: string;\r\n teaser: string;\r\n}\r\nexport interface CampaignPageViewModel extends BaseContentModel {\r\n buttonText: string;\r\n campaignName: string;\r\n campaignText: string;\r\n categories: string[];\r\n image: Media;\r\n listAllProducts: boolean;\r\n}\r\nexport interface CampaignsViewModel extends BaseContentModel {\r\n campaignPageSize: number;\r\n campaigns: CampaignBlockViewModel[];\r\n categories: string[];\r\n count: number;\r\n firstCampaign: CampaignBlockViewModel;\r\n}\r\nexport interface CategoryPageViewModel extends BaseContentModel {\r\n categoryId: number;\r\n listAllProducts: boolean;\r\n}\r\nexport interface CategorySeoInformationViewModel {\r\n seoDescription: string;\r\n seoTitle: string;\r\n}\r\nexport interface DepartmentsViewModel extends BaseContentModel {\r\n}\r\nexport interface EmailViewModel {\r\n modules: JsonContent[];\r\n preheader: string;\r\n subject: string;\r\n}\r\nexport interface FooterCompanyDetails {\r\n addressInformation: string;\r\n city: string;\r\n companyName: string;\r\n email: string;\r\n openingHours: string;\r\n phoneNumber: string;\r\n postalCode: string;\r\n vatNumber: string;\r\n}\r\nexport interface FooterSitemapColumnViewModel {\r\n links: NameAndUrl[];\r\n socialMediaLinks: IconNameAndUrl[];\r\n title: string;\r\n}\r\nexport interface FrontpageViewModel extends BaseContentModel {\r\n}\r\nexport interface News {\r\n categories: string[];\r\n date: string;\r\n header: string;\r\n id: number;\r\n image: Media;\r\n teaser: string;\r\n url: NameAndUrl;\r\n}\r\nexport interface NewsArticlePageViewModel extends BaseContentModel {\r\n articleText: string;\r\n campaignLink: Link;\r\n categories: string[];\r\n date: Date;\r\n dateFormatted: string;\r\n header: string;\r\n image: Media;\r\n pressMaterial: Media[];\r\n pressRelease: boolean;\r\n relatedLinks: Link[];\r\n}\r\nexport interface NewsPageViewModel extends BaseContentModel {\r\n categories: string[];\r\n count: number;\r\n firstNews: News;\r\n news: News[];\r\n newsPageSize: number;\r\n}\r\nexport interface NotificationsViewModel {\r\n anonymous: JsonContent;\r\n authenticated: JsonContent;\r\n employees: JsonContent;\r\n}\r\nexport interface Product404PageViewModel extends BaseContentModel {\r\n}\r\nexport interface ProductDetailsPageViewModel {\r\n recommendations: JsonContent[];\r\n seoDescription: string;\r\n seoTitles: string[];\r\n}\r\nexport interface SettingsViewModel {\r\n accessRequestPage: string;\r\n basketPage: string;\r\n becomeACustomerPage: string;\r\n brandsPage: string;\r\n campaignPage: string;\r\n dataProcessingAgreementPage: string;\r\n departmentPage: string;\r\n directDebitPage: string;\r\n enableClientSideLogging: boolean;\r\n financialDepartment: string;\r\n menuCampaignLink: Link;\r\n newsPage: string;\r\n notificationsLink: string;\r\n orderIntegrationPage: string;\r\n priceFilesPage: string;\r\n product404Page: string;\r\n productDetailsPage: string;\r\n productGuidePage: string;\r\n productGuideSpecificGuidePage: string;\r\n productListContentPlacementIndex: number;\r\n receiptPage: string;\r\n salesAndSupportPage: string;\r\n standardFreightPage: string;\r\n termsPage: string;\r\n}\r\nexport interface SiteChromeViewModel {\r\n settings: SettingsViewModel;\r\n siteFooter: SiteFooterViewModel;\r\n}\r\nexport interface SiteFooterViewModel {\r\n companyDetails: FooterCompanyDetails;\r\n sitemapColumns: FooterSitemapColumnViewModel[];\r\n}\r\nexport interface BreadcrumbItem {\r\n id: string;\r\n name: string;\r\n page?: string;\r\n url: string;\r\n}\r\nexport interface IconNameAndUrl {\r\n icon: string;\r\n name: string;\r\n target: string;\r\n url: string;\r\n}\r\nexport interface JsonContent {\r\n alias: string;\r\n content: any;\r\n name: string;\r\n}\r\nexport interface LanguageAndUrl {\r\n language: string;\r\n url: string;\r\n}\r\nexport interface Link {\r\n name: string;\r\n target: string;\r\n type: LinkType;\r\n url: string;\r\n}\r\nexport interface Media extends NameAndUrl {\r\n extension: string;\r\n focalPoint: ImageCropperFocalPoint;\r\n height: number;\r\n width: number;\r\n}\r\nexport interface Metadata {\r\n id: number;\r\n index: boolean;\r\n key: string;\r\n languages: LanguageAndUrl[];\r\n navigationTitle: string;\r\n seoDescription: string;\r\n seoImage: Media;\r\n seoTitle: string;\r\n url: string;\r\n}\r\nexport interface NameAndUrl {\r\n name: string;\r\n target: string;\r\n url: string;\r\n}\r\nexport interface Navigation {\r\n breadcrumb: BreadcrumbItem[];\r\n leftMenu: NavigationItem[];\r\n}\r\nexport interface NavigationItem {\r\n children: NavigationItem[];\r\n id: string;\r\n name: string;\r\n url: string;\r\n}\r\nexport interface PageData {\r\n jsonContent: JsonContent;\r\n metadata: Metadata;\r\n navigation: Navigation;\r\n}\r\nexport interface PreviewModel {\r\n apiHost: string;\r\n assets: { [key: string]: string };\r\n assetsUrl: string;\r\n businessEntityName: string;\r\n clientAssetsUrl: string;\r\n contentHost: string;\r\n countryCode: string;\r\n cssFiles: string[];\r\n culture: string;\r\n currentPath: string;\r\n customCulture: string;\r\n devServerUrl: string;\r\n dictionary: string;\r\n erpBusinessEntityId: number;\r\n externalProductGuideLink: string;\r\n externalProductGuideLinkText: string;\r\n googleTagManagerId: string;\r\n isExternalProductGuide: boolean;\r\n jsFiles: string[];\r\n languageCode: string;\r\n marketId: number;\r\n pageData: PageData;\r\n siteChromeJson: any;\r\n siteId: number;\r\n url: string;\r\n}\r\nexport interface ImageCropperFocalPoint {\r\n left: number;\r\n top: number;\r\n}\r\nexport interface EmailBreaker3ElementsViewModel {\r\n}\r\nexport interface EmailBreaker4ElementsViewModel {\r\n}\r\nexport interface EmailBreakerOneLineViewModel {\r\n backgroundColor: string;\r\n header: string;\r\n headerColor: string;\r\n headerSize: string;\r\n}\r\nexport interface EmailFullWidthTestimonialViewModel {\r\n backgroundColor: string;\r\n bodyText: string;\r\n bodyTextColor: string;\r\n bodyTextSize: string;\r\n cleanBodyText: string;\r\n header: string;\r\n headerColor: string;\r\n headerSize: string;\r\n image: Media;\r\n imageText1: string;\r\n imageText2: string;\r\n}\r\nexport interface EmailHeroBannerViewModel {\r\n backgroundColor: string;\r\n backgroundImage: Media;\r\n callToAction: Link;\r\n callToActionColor: string;\r\n callToActionTextColor: string;\r\n caption: string;\r\n captionColor: string;\r\n cleanSubheader: string;\r\n contentBackgroundColor: string;\r\n contentBackgroundColorTransparent: boolean;\r\n header: string;\r\n headerColor: string;\r\n headerSize: string;\r\n shim: boolean;\r\n subheader: string;\r\n subheaderColor: string;\r\n subheaderSize: string;\r\n}\r\nexport interface EmailImageBannerViewModel {\r\n image: Media;\r\n link: Link;\r\n}\r\nexport interface EmailImageTextBlockViewModel {\r\n bodyText: string;\r\n bodyTextColor: string;\r\n bodyTextSize: string;\r\n bullets: JsonContent[];\r\n callToAction: Link;\r\n callToActionColor: string;\r\n callToActionTextColor: string;\r\n cleanBodyText: string;\r\n cleanSubheader: string;\r\n header: string;\r\n headerColor: string;\r\n headerSize: string;\r\n image: Media;\r\n imageAlignment: string;\r\n imageWidth: string;\r\n subheader: string;\r\n subheaderColor: string;\r\n subheaderSize: string;\r\n}\r\nexport interface EmailPersonalizedContentBannerViewModel {\r\n adUnitId: PersonalizedContentModel;\r\n}\r\nexport interface EmailPersonalizedContentBrandBlocksViewModel {\r\n backgroundColor: string;\r\n textColor: string;\r\n}\r\nexport interface EmailPersonalizedContentDepartmentsViewModel {\r\n adUnitId: PersonalizedContentModel;\r\n}\r\nexport interface EmailProductBlocksViewModel {\r\n blocks: JsonContent[];\r\n}\r\nexport interface EmailTextBlockViewModel {\r\n bodyText: string;\r\n bodyTextColor: string;\r\n bodyTextSize: string;\r\n callToAction: Link;\r\n callToActionColor: string;\r\n callToActionTextColor: string;\r\n cleanBodyText: string;\r\n cleanSubheader: string;\r\n header: string;\r\n headerColor: string;\r\n headerSize: string;\r\n subheader: string;\r\n subheaderColor: string;\r\n subheaderSize: string;\r\n textAlignment: string;\r\n}\r\nexport interface EmailThreeStepBlockViewModel {\r\n backgroundColor: string;\r\n header: string;\r\n headerColor: string;\r\n headerSize: string;\r\n image: Media;\r\n imageLink: Link;\r\n steps: JsonContent[];\r\n stepsColor: string;\r\n}\r\nexport interface EmailUspBlockViewModel {\r\n backgroundColor: string;\r\n caption: string;\r\n captionColor: string;\r\n uspItems: JsonContent[];\r\n}\r\nexport interface AdUnitIdContentModel {\r\n adUnitId: string;\r\n id: number;\r\n name: string;\r\n}\r\nexport interface PersonalizedContentModel {\r\n selectedAdUnitIdContent: AdUnitIdContentModel;\r\n}\r\nexport interface BulletViewModel {\r\n color: string;\r\n text: string;\r\n type: string;\r\n}\r\nexport interface EmailProductViewModel {\r\n block: ProductBlockModel;\r\n}\r\nexport interface NestedBulletViewModel {\r\n value: string;\r\n}\r\nexport interface StepViewModel {\r\n bodyText: string;\r\n cleanBodyText: string;\r\n cleanHeader: string;\r\n header: string;\r\n}\r\nexport interface UspItemViewModel {\r\n callToAction: Link;\r\n callToActionColor: string;\r\n callToActionTextColor: string;\r\n headline: string;\r\n icon: Media;\r\n shortText: string;\r\n}\r\nexport interface Image {\r\n extension: string;\r\n isOriginIceCat: boolean;\r\n name: string;\r\n sortOrder: any;\r\n uri: string;\r\n}\r\nexport interface ProductBlockModel {\r\n brand: string;\r\n categoryId: string;\r\n description: string;\r\n displayName: string;\r\n image: Image;\r\n inStock: number;\r\n itemId: string;\r\n mpn: string;\r\n name: string;\r\n showPrice: boolean;\r\n title: string;\r\n url: string;\r\n wid: string;\r\n}\r\nexport enum ContentWidth {\r\n FullWidth = 0,\r\n TwoThird = 1,\r\n OneThird = 2\r\n}\r\nexport enum HorizontalAlignment {\r\n Left = 0,\r\n Right = 1\r\n}\r\nexport enum SubheaderFontSize {\r\n Normal = 0,\r\n Large = 1\r\n}\r\nexport interface BaseBlockViewModel {\r\n anchorLink: string;\r\n backgroundColor: string;\r\n backgroundImage: Media;\r\n backgroundImageBehavior: string;\r\n callToAction: Link;\r\n callToActionColor: string;\r\n caption: string;\r\n captionColor: string;\r\n captionLocation: string;\r\n contentBackgroundColor: string;\r\n header: string;\r\n headerColor: string;\r\n isBackgroundVideo: boolean;\r\n makeContentBackgroundTransparent: boolean;\r\n shimColor: string;\r\n showVideoControls: boolean;\r\n subheader: string;\r\n subheaderColor: string;\r\n video: Media;\r\n vimeoVideoId: string;\r\n}\r\nexport interface BaseTextBlockViewModel {\r\n anchorLink: string;\r\n backgroundColor: string;\r\n bodyText: string;\r\n callToAction: Link;\r\n callToActionColor: string;\r\n customBackgroundColor: string;\r\n headline: string;\r\n}\r\nexport interface BecomeACustomerBlockViewModel {\r\n anchorLink: string;\r\n appendToPreviousBlock: boolean;\r\n headline: string;\r\n info: string;\r\n origin: string;\r\n remark: string;\r\n subtitle: string;\r\n}\r\nexport interface BecomeAResellerBlockViewModel {\r\n anchorLink: string;\r\n appendToPreviousBlock: boolean;\r\n headline: string;\r\n informationBoxBullets: JsonContent[];\r\n informationBoxHeadline: string;\r\n origin: string;\r\n receiptBody: string;\r\n receiptHeadline: string;\r\n receiptImage: Media;\r\n receiptImageContent: string;\r\n receiptImageHeadline: string;\r\n showCrnField: boolean;\r\n}\r\nexport interface BrandRecommendationsBlockViewModel {\r\n anchorLink: string;\r\n appendToPreviousBlock: boolean;\r\n brandCount: number;\r\n brandId: string;\r\n categoryIdFilterNegativeList: string[];\r\n categoryIdFilterPositiveList: string[];\r\n displayLocation: string;\r\n headline: string;\r\n interval: number;\r\n isSimpleView: boolean;\r\n popularity: number;\r\n type: number;\r\n}\r\nexport interface BrandsBlockViewModel {\r\n anchorLink: string;\r\n appendToPreviousBlock: boolean;\r\n headline: string;\r\n linkText: string;\r\n}\r\nexport interface CableGuideBlockViewModel {\r\n anchorLink: string;\r\n appendToPreviousBlock: boolean;\r\n productPageSize: number;\r\n}\r\nexport interface CancelNewsletterBlockViewModel {\r\n anchorLink: string;\r\n appendToPreviousBlock: boolean;\r\n headline: string;\r\n subtitle: string;\r\n}\r\nexport interface CategoryBlockViewModel {\r\n anchorLink: string;\r\n appendToPreviousBlock: boolean;\r\n backgroundColor: string;\r\n customBackgroundColor: string;\r\n headline: string;\r\n settings: PersonalizedContentModel;\r\n}\r\nexport interface CategoryRecommendationsBlockViewModel {\r\n anchorLink: string;\r\n appendToPreviousBlock: boolean;\r\n brandId: string;\r\n brandIdFilterList: string[];\r\n categoryCount: number;\r\n categoryIdFilterNegativeList: string[];\r\n categoryIdFilterPositiveList: string[];\r\n displayLocation: string;\r\n headline: string;\r\n interval: number;\r\n popularity: number;\r\n type: number;\r\n}\r\nexport interface CategoryTileBlockViewModel {\r\n anchorLink: string;\r\n headline: string;\r\n imageMode: string;\r\n tiles: JsonContent[];\r\n}\r\nexport interface CategoryTileViewModel {\r\n buttonFullWidth: boolean;\r\n callToAction: Link;\r\n description: string;\r\n headline: string;\r\n image: Media;\r\n}\r\nexport interface CodeBlockViewModel {\r\n anchorLink: string;\r\n appendToPreviousBlock: boolean;\r\n author: string;\r\n code: string;\r\n description: string;\r\n heading: string;\r\n}\r\nexport interface EmployeesBlockViewModel {\r\n employeeNumbers: string[];\r\n headline: string;\r\n}\r\nexport interface FullWidthTextBlockViewModel extends BaseTextBlockViewModel {\r\n appendToPreviousBlock: boolean;\r\n}\r\nexport interface HalfWidthBlocksViewModel {\r\n anchorLink: string;\r\n appendToPreviousBlock: boolean;\r\n blocks: JsonContent[];\r\n}\r\nexport interface HalfWidthBlockViewModel extends BaseBlockViewModel {\r\n}\r\nexport interface HeroBannerUspItemViewModel {\r\n icon: Media;\r\n text: string;\r\n}\r\nexport interface HeroBannerViewModel extends BaseBlockViewModel {\r\n appendToPreviousBlock: boolean;\r\n contentAligmentValue: HorizontalAlignment;\r\n contentWidthValue: ContentWidth;\r\n subheaderFontSizeValue: SubheaderFontSize;\r\n}\r\nexport interface HeroBannerWithUspBlockViewModel {\r\n backgroundImage: Media;\r\n callToAction: Link;\r\n callToActionColor: string;\r\n header: string;\r\n headerColor: string;\r\n mobileVimeoVideoId: string;\r\n shimColor: string;\r\n showUspItemsOnMobile: boolean;\r\n subheader: string;\r\n uspItems: JsonContent[];\r\n vimeoVideoId: string;\r\n}\r\nexport interface IframeBlockViewModel {\r\n anchorLink: string;\r\n headline: string;\r\n iframeTitle: string;\r\n iframeUrl: string;\r\n}\r\nexport interface JotFormBlockViewModel {\r\n allowFullscreen: boolean;\r\n allowScrolling: boolean;\r\n allowTransparency: boolean;\r\n anchorLink: string;\r\n headline: string;\r\n jotFormId: string;\r\n}\r\nexport interface LatestCampaignsBlockViewModel {\r\n}\r\nexport interface LatestNewsBlockViewModel {\r\n anchorLink: string;\r\n}\r\nexport interface MapBlockViewModel {\r\n anchorLink: string;\r\n mapLocations: JsonContent[];\r\n mapType: string;\r\n maxZoom: number;\r\n minZoom: number;\r\n}\r\nexport interface MapLocationBlockViewModel {\r\n address: string;\r\n businessEntityID: string;\r\n country: string;\r\n email: string;\r\n gpsLatitude: string;\r\n gpsLongitude: string;\r\n groupName: string;\r\n link: Link;\r\n locationType: string;\r\n phoneNumber: string;\r\n postalCodeAndCity: string;\r\n}\r\nexport interface PersonalizedContentBlockViewModel {\r\n anchorLink: string;\r\n appendToPreviousBlock: boolean;\r\n settings: PersonalizedContentModel;\r\n}\r\nexport interface ProductCategoriesViewModel {\r\n anchorLink: string;\r\n header: string;\r\n}\r\nexport interface ProductGuideBlockViewModel {\r\n anchorLink: string;\r\n appendToPreviousBlock: boolean;\r\n guideId: string;\r\n productGuideTitle: string;\r\n productPageSize: number;\r\n searchContent: string;\r\n searchHeadline: string;\r\n startInStepByStep: boolean;\r\n stepByStepContent: string;\r\n stepByStepHeadline: string;\r\n}\r\nexport interface ProductGuideConfigurationBlockViewModel {\r\n anchorLink?: string;\r\n blocks?: JsonContent[];\r\n confirmText?: string;\r\n headline: string;\r\n introductionText?: string;\r\n successText?: string;\r\n}\r\nexport interface ProductListBlockViewModel {\r\n anchorLink: string;\r\n header: string;\r\n productBackgroundColor: string;\r\n productIds: string[];\r\n}\r\nexport interface ProductRecommendationsBlockViewModel {\r\n allowFillIfNecessary: boolean;\r\n anchorLink: string;\r\n appendToPreviousBlock: boolean;\r\n brandId: string;\r\n categoryId: string;\r\n categoryIdFilterNegativeList: string[];\r\n categoryIdFilterPositiveList: string[];\r\n displayLocation: string;\r\n hasImages: boolean;\r\n headline: string;\r\n interval: number;\r\n popularity: number;\r\n productBackgroundColor: string;\r\n productCount: number;\r\n showFeedProducts: boolean;\r\n stockFilter: number;\r\n type: number;\r\n useListView: boolean;\r\n}\r\nexport interface QuoteBlockViewModel {\r\n anchorLink: string;\r\n appendToPreviousBlock: boolean;\r\n author: string;\r\n backgroundColor: string;\r\n customBackgroundColor: string;\r\n quote: string;\r\n}\r\nexport interface RecentlyViewedProductsViewModel {\r\n anchorLink: string;\r\n recentlyViewedHeader: string;\r\n}\r\nexport interface StatisticBlockItemViewModel {\r\n animationDurationMS: number;\r\n color: string;\r\n customColor: string;\r\n statistic: string;\r\n value: number;\r\n valuePrefix: string;\r\n valueSuffix: string;\r\n}\r\nexport interface StatisticsBlockViewModel {\r\n appendToPreviousBlock: boolean;\r\n backgroundColor: string;\r\n customBackgroundColor: string;\r\n statistics: JsonContent[];\r\n}\r\nexport interface SubscribeNewsletterBlockViewModel {\r\n anchorLink: string;\r\n appendToPreviousBlock: boolean;\r\n}\r\nexport interface TabbedContentBlockViewModel {\r\n anchorLink: string;\r\n tabs: JsonContent[];\r\n}\r\nexport interface TabbedContentViewModel {\r\n anchorLink: string;\r\n blocks: JsonContent[];\r\n headline: string;\r\n keepAlive: boolean;\r\n}\r\nexport interface TextBlockViewModel extends BaseTextBlockViewModel {\r\n}\r\nexport interface TextWithImageBlockViewModel {\r\n anchorLink: string;\r\n callToAction: Link;\r\n callToActionColor: string;\r\n headline: string;\r\n headlineColor: string;\r\n image: Media;\r\n placeImageRight: boolean;\r\n subHeadline: string;\r\n subHeadlineColor: string;\r\n text: string;\r\n textColor: string;\r\n}\r\nexport interface TwoPlusOneBlocksViewModel {\r\n anchorLink: string;\r\n appendToPreviousBlock: boolean;\r\n halfWidthBlocks: JsonContent[];\r\n largeBlock: JsonContent[];\r\n largeBlockAlignmentValue: HorizontalAlignment;\r\n}\r\nexport interface UniqueSellingPointBlocksViewModel {\r\n anchorLink: string;\r\n appendToPreviousBlock: boolean;\r\n backgroundColor: string;\r\n customBackgroundColor: string;\r\n headline: string;\r\n uniqueSellingPointItems: JsonContent[];\r\n}\r\nexport interface UniqueSellingPointItemViewModel {\r\n anchorLink: string;\r\n headline: string;\r\n icon: Media;\r\n iconBackgroundColor: string;\r\n link: Link;\r\n shortText: string;\r\n}\r\nexport interface WebsiteNotificationViewModel {\r\n endDate: Date;\r\n message: string;\r\n startDate: Date;\r\n}\r\nexport interface ProductGuideSettingsViewModel {\r\n confirmText: string;\r\n introductionText: string;\r\n successText: string;\r\n}\r\nexport interface EmailLaunchStatusViewModel {\r\n launchDate: string;\r\n message: string;\r\n status: string;\r\n timeOfDay: string;\r\n}\r\nexport interface DictionaryViewModel {\r\n created: Date;\r\n cultureName: string;\r\n dictionaryKey: string;\r\n dictionaryValues: { [key: string]: string };\r\n}\r\nexport interface KeyValuePair {\r\n key: TKey;\r\n value: TValue;\r\n}\r\nexport enum LinkType {\r\n Content = 0,\r\n Media = 1,\r\n External = 2\r\n}\r\n\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'chat': {\r\n width: 33,\r\n height: 28,\r\n viewBox: '0 0 33 28',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'becomeacustomer/become-a-customer-success-step1': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 68.98 68.98',\r\n data: ''\r\n }\r\n})\r\n","const passwordValidator = {\r\n validate(value: string) {\r\n if (!value) return false;\r\n if (!hasLength(value)) return false;\r\n if (!hasLowercase(value)) return false;\r\n if (!hasUppercase(value)) return false;\r\n if (!hasNumeric(value)) return false;\r\n if (!hasSpecialChar(value)) return false;\r\n return true;\r\n }\r\n};\r\n\r\nfunction hasLength(value: string): boolean {\r\n return value.length >= 8;\r\n}\r\n\r\nfunction hasUppercase(value: string): boolean {\r\n return !!(value.match(/[A-Z]/)?.length) ?? false;\r\n}\r\n\r\nfunction hasLowercase(value: string): boolean {\r\n return !!(value.match(/[a-z]/)?.length) ?? false;\r\n}\r\n\r\nfunction hasNumeric(value: string): boolean {\r\n return !!(value.match(/\\d/)?.length) ?? false;\r\n}\r\n\r\nfunction hasSpecialChar(value: string): boolean {\r\n return !!(value.match(/[#$%^¤&£*\\-_+=[\\]{}|\\\\:',?/`~\"\"();!.(?@)]/)?.length) ?? false;\r\n}\r\n\r\nexport default {\r\n passwordValidator,\r\n hasLength,\r\n hasLowercase,\r\n hasUppercase,\r\n hasNumeric,\r\n hasSpecialChar\r\n};\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlusAccept.vue?vue&type=style&index=0&lang=less&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlusAccept.vue?vue&type=style&index=0&lang=less&\"","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'document': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 26 32',\r\n data: ''\r\n }\r\n})\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetPickerCheckbox.vue?vue&type=style&index=0&id=6e2a6222&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetPickerCheckbox.vue?vue&type=style&index=0&id=6e2a6222&lang=less&scoped=true&\"","import logging from '@/core/logging.service';\r\n\r\nexport type ClientComponentType = object | (() => object);\r\n\r\nexport interface ClientComponentOptions {\r\n updateOnQueryChange?: boolean\r\n}\r\n\r\nexport interface ClientComponent {\r\n component: ClientComponentType,\r\n options?: ClientComponentOptions\r\n}\r\n\r\nclass ComponentResolver {\r\n components = new Map();\r\n fallback: ClientComponent | undefined;\r\n\r\n constructor(private context: string, private enforceFallback: boolean = true) {\r\n }\r\n\r\n register(alias: T, component: ClientComponentType, options?: Partial) {\r\n if (this.components.get(alias)) {\r\n throw new Error(`${this.context}: ${alias} already registered`);\r\n }\r\n this.components.set(alias, { component: component, options: options });\r\n }\r\n\r\n registerFallback(component: ClientComponentType) {\r\n this.fallback = { component: component };\r\n }\r\n\r\n resolve(alias: string): ClientComponent | null {\r\n const component = this.components.get(alias);\r\n if (!component) {\r\n if (this.fallback) {\r\n logging.warn(`${this.context}: ${alias} not registered, using fallback`);\r\n return this.fallback;\r\n } else if (this.enforceFallback) {\r\n const msg = `${this.context}: ${alias} not registered and no default component`;\r\n logging.warn(msg);\r\n throw new Error(msg);\r\n } else {\r\n return null;\r\n }\r\n }\r\n return component;\r\n }\r\n}\r\n\r\nexport const blockResolver = new ComponentResolver('block');\r\nexport const pageResolver = new ComponentResolver('page', false);\r\nexport const modalsResolver = new ComponentResolver('modal');\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'profiles': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 32 32',\r\n data: ''\r\n }\r\n})\r\n","// For loading assets from CDN\r\n// @ts-ignore\r\nconst overrideClientAssetsUrl = window.servercontext.clientAssetsUrl;\r\nif (process.env.NODE_ENV === 'production' && overrideClientAssetsUrl) {\r\n // eslint-disable-next-line camelcase\r\n __webpack_public_path__ = overrideClientAssetsUrl;\r\n}\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchCtrl.vue?vue&type=style&index=0&id=68c5b8cd&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchCtrl.vue?vue&type=style&index=0&id=68c5b8cd&lang=less&scoped=true&\"","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'newproduct': {\r\n width: 26,\r\n height: 32,\r\n viewBox: '0 0 26 32',\r\n data: ''\r\n }\r\n})\r\n","import Vue from 'vue';\r\nimport tailwind from '@/styling/tailwind.config';\r\nimport { hexToRgbValues, luma } from '@/core/color/color.service';\r\nimport { Route } from 'vue-router';\r\nimport { router } from 'spaRouter';\r\n\r\ninterface Theme {\r\n topColor: string;\r\n menuColor: string;\r\n takeoverTheme: string;\r\n layoutId: string;\r\n}\r\n\r\nconst takeOverThemeLayoutId = 'yfrt26v3bfttmxn3';\r\nconst defaultTakeOverOpacity = 0.8;\r\n\r\nclass ThemeService {\r\n private activeTheme: {\r\n theme: Partial | null;\r\n takeOverOpacity: number;\r\n themeLoaded: boolean;\r\n } = Vue.observable({\r\n theme: null,\r\n themeLoaded: false,\r\n takeOverOpacity: defaultTakeOverOpacity\r\n });\r\n\r\n public restoreDefaultTheme() {\r\n this.activeTheme.theme = null;\r\n }\r\n\r\n public applyTheme(theme: Partial) {\r\n if (Object.keys(theme).length === 0) {\r\n this.activeTheme.theme = null;\r\n return;\r\n }\r\n\r\n this.activeTheme.themeLoaded = false;\r\n this.activeTheme.theme = theme;\r\n }\r\n\r\n public disableBackgroundOpacity() {\r\n return this.activeTheme.takeOverOpacity = 1.0;\r\n }\r\n\r\n public setThemeLoaded() {\r\n this.activeTheme.themeLoaded = true;\r\n }\r\n\r\n public restoreBackgroundOpacity() {\r\n return this.activeTheme.takeOverOpacity = defaultTakeOverOpacity;\r\n }\r\n\r\n public get isTakeOverEnabled() {\r\n return this.activeTheme.theme?.layoutId === takeOverThemeLayoutId;\r\n }\r\n\r\n public get isTakeOverEnabledAndLoaded() {\r\n return this.isTakeOverEnabled && this.activeTheme.themeLoaded;\r\n }\r\n\r\n public get isInWhiteTheme() {\r\n return this.activeTheme.theme?.takeoverTheme?.toLowerCase() === 'white';\r\n }\r\n\r\n public get takeOverOpacity() {\r\n return this.isTakeOverEnabled ? this.activeTheme.takeOverOpacity : 1.0;\r\n }\r\n\r\n public get theme() {\r\n return this.activeTheme.theme;\r\n }\r\n\r\n public getColor(hex: string) {\r\n const rgb = hexToRgbValues(hex);\r\n const isDarkBackground = luma(rgb.red, rgb.green, rgb.blue) <= 0.5;\r\n return isDarkBackground ? tailwind.theme.colors.white : tailwind.theme.colors.black;\r\n }\r\n}\r\n\r\nconst themeService = new ThemeService();\r\n\r\nrouter.afterEach((to: Route, from: Route) => {\r\n if (to.path !== from.path) {\r\n themeService.restoreDefaultTheme();\r\n }\r\n});\r\n\r\nexport default themeService;\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageTextVideoBlock.vue?vue&type=style&index=0&id=4932ce64&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageTextVideoBlock.vue?vue&type=style&index=0&id=4932ce64&lang=less&scoped=true&\"","import { SettingsViewModel, SiteChromeViewModel, SiteFooterViewModel } from '@/types/contentServerContract';\r\nimport {\r\n CountryOptionsViewModel,\r\n Feature,\r\n ProductGuideConfigurationViewModel,\r\n SiteName\r\n} from '@/types/apiServerContract';\r\nimport { ImageNotFound, ImageNotFoundOprema } from '@/project/config/constants';\r\n\r\ndeclare global {\r\n interface Window {\r\n servercontext: {\r\n siteChrome: SiteChromeViewModel;\r\n culture: string;\r\n customCulture: string;\r\n erpBusinessEntityId: string;\r\n marketId: string;\r\n businessEntityName: string;\r\n siteId: number;\r\n languageCode: string;\r\n countryCode: string;\r\n contentHost: string;\r\n productMediaUrl: string;\r\n url: string;\r\n apiHost: string;\r\n siteAssetsUrl: string;\r\n googleTagManagerId: string;\r\n preview: boolean;\r\n isExternalProductGuide: boolean;\r\n externalProductGuideLink: string;\r\n externalProductGuideLinkText: string;\r\n externalProductGuideSettings?: Partial;\r\n externalProductGuideId?: string;\r\n dictionary: {[key: string]: string};\r\n theming: {\r\n themeString: string;\r\n };\r\n featureFlags: { name: Feature, active: boolean }[];\r\n siteName: SiteName;\r\n maintenance: boolean;\r\n },\r\n CookieInformation: {\r\n getConsentGivenFor(string): boolean,\r\n loadConsent()\r\n }\r\n }\r\n}\r\nexport interface ExternalProductGuideConfigurationViewModel extends ProductGuideConfigurationViewModel {\r\n externalId?: string;\r\n}\r\nexport interface SiteInfo {\r\n erpBusinessEntityId: number | null;\r\n marketId: number | null;\r\n siteId: number;\r\n countryCode: string | null;\r\n url: string | null;\r\n languageCode: string | null;\r\n culture: string | null;\r\n customCulture: string | null;\r\n countryOptions?: null | CountryOptionsViewModel;\r\n}\r\n\r\nclass ServerContextService {\r\n constructor() {\r\n if (!window.servercontext) {\r\n throw new Error('### window.servercontext object should exist ###');\r\n }\r\n if (!window.servercontext.siteChrome) {\r\n throw new Error('### window.servercontext.siteChrome object should exist ###');\r\n }\r\n }\r\n\r\n public get footer(): SiteFooterViewModel {\r\n return window.servercontext.siteChrome.siteFooter;\r\n }\r\n\r\n public get settings(): SettingsViewModel {\r\n return window.servercontext.siteChrome.settings;\r\n }\r\n\r\n public get siteInfo(): SiteInfo {\r\n const erpBusinessEntityId = parseInt(window.servercontext.erpBusinessEntityId, 10);\r\n const marketId = parseInt(window.servercontext.marketId, 10);\r\n\r\n return ({\r\n culture: window.servercontext.culture,\r\n customCulture: window.servercontext.customCulture,\r\n url: window.servercontext.url,\r\n countryCode: window.servercontext.countryCode,\r\n languageCode: window.servercontext.languageCode,\r\n siteId: window.servercontext.siteId,\r\n erpBusinessEntityId: Number.isNaN(erpBusinessEntityId) ? null : erpBusinessEntityId,\r\n marketId: Number.isNaN(marketId) ? null : marketId\r\n });\r\n }\r\n\r\n public get apiHost(): string {\r\n return window.servercontext.apiHost;\r\n }\r\n\r\n public get contentHost(): string {\r\n return window.servercontext.contentHost;\r\n }\r\n\r\n public get productMediaUrl(): string {\r\n return window.servercontext.productMediaUrl;\r\n }\r\n\r\n public get isPreview(): boolean {\r\n return window.servercontext.preview;\r\n }\r\n\r\n public get isExternalProductGuide(): boolean {\r\n return window.servercontext.isExternalProductGuide;\r\n }\r\n\r\n public get themeString(): string {\r\n return window.servercontext.theming.themeString;\r\n }\r\n\r\n public get isOprema(): boolean {\r\n return window.servercontext.siteName === SiteName.Oprema;\r\n }\r\n\r\n public get siteName(): SiteName {\r\n return window.servercontext.siteName;\r\n }\r\n\r\n public productUrl(product: { itemId: string, url?: string, mpn?: string }) {\r\n const externalProductLink = window.servercontext.externalProductGuideSettings?.externalProductLink;\r\n return encodeURI(this.isExternalProductGuide && externalProductLink\r\n ? externalProductLink.replace(/XXX/gi, (product.mpn || product.itemId))\r\n : product.url ? product.url : '');\r\n }\r\n\r\n public get externalProductLinkTarget() {\r\n return this.isExternalProductGuide ? '_blank' : null;\r\n }\r\n\r\n public get externalProductLinkText() {\r\n return window.servercontext.externalProductGuideSettings?.externalProductLinkText;\r\n }\r\n\r\n public set externalProductGuideSettings(settings: Partial | undefined) {\r\n window.servercontext.externalProductGuideSettings = settings;\r\n }\r\n\r\n public get externalProductGuideSettings(): Partial | undefined {\r\n return window.servercontext.externalProductGuideSettings;\r\n }\r\n\r\n public get imageNotFound() {\r\n return this.isOprema ? ImageNotFoundOprema : ImageNotFound;\r\n }\r\n\r\n public isFeatureEnabled(featureName: Feature): boolean {\r\n const feature = window.servercontext.featureFlags.find(feature => feature.name === featureName);\r\n return feature?.active ?? true;\r\n }\r\n\r\n public isAddressSuggestFeatureEnabled():boolean {\r\n return this.isFeatureEnabled(Feature.AddressSuggest);\r\n }\r\n\r\n public get cookieConsent(): {\r\n // eslint-disable-next-line camelcase\r\n cookie_cat_necessary: undefined | boolean; // undefined indicate cookie dialog is still shown\r\n // eslint-disable-next-line camelcase\r\n cookie_cat_functional: undefined | boolean;\r\n // eslint-disable-next-line camelcase\r\n cookie_cat_statistic: undefined | boolean;\r\n // eslint-disable-next-line camelcase\r\n cookie_cat_marketing: undefined | boolean;\r\n // eslint-disable-next-line camelcase\r\n cookie_cat_unclassified: undefined | boolean;\r\n } {\r\n return {\r\n cookie_cat_necessary: window.CookieInformation?.getConsentGivenFor('cookie_cat_necessary') ?? false,\r\n cookie_cat_functional: window.CookieInformation?.getConsentGivenFor('cookie_cat_functional') ?? false,\r\n cookie_cat_statistic: window.CookieInformation?.getConsentGivenFor('cookie_cat_statistic') ?? false,\r\n cookie_cat_marketing: window.CookieInformation?.getConsentGivenFor('cookie_cat_marketing') ?? false,\r\n cookie_cat_unclassified: window.CookieInformation?.getConsentGivenFor('cookie_cat_unclassified') ?? false\r\n };\r\n }\r\n}\r\n\r\nexport default new ServerContextService();\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'map-marker-blue': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 18 24',\r\n data: ''\r\n }\r\n})\r\n","export class RedirectError extends Error {\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.headline)?_c('SmartHeadline',{staticClass:\"mb-10 only-xs:ml-20 only-xs:mb-20 text-18 md:text-36 font-regular\",class:{ 'mt-20': _vm.isFirstBlock },attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.headline)+\" \")]):_vm._e(),_c('ProductListTracker',{staticClass:\"relative w-full\",attrs:{\"products\":_vm.products,\"list-name\":_vm.trackingListName},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar productImpression = ref.productImpression;\nvar productClick = ref.productClick;\nreturn [(_vm.useSwiper)?[(_vm.rendered)?_c('Swiper',{class:'swiper-' + _vm.id,attrs:{\"id\":_vm.id,\"instance-name\":_vm.id,\"options\":_vm.sliderOptions}},_vm._l((_vm.products),function(product,index){return _c('SwiperSlide',{key:index,staticClass:\"condensed-product-tile-outer\"},[_c('Interceptor',{attrs:{\"threshold\":0.5},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar viewed = ref.viewed;\nreturn [(viewed)?_c('ProductTile',{class:_vm.productColor,attrs:{\"mode\":\"vertical\",\"product\":product,\"number-of-stock-labels\":1,\"product-click\":productClick,\"tracking-list-name\":_vm.trackingListName,\"relation-type\":_vm.relationType},on:{\"productImpression\":productImpression}}):_vm._e()]}}],null,true)})],1)}),1):_vm._e(),_c('button',{staticClass:\"custom-swiper-button-prev hidden md:block\",class:_vm.prevButtonSelector,attrs:{\"slot\":\"button-prev\",\"type\":\"button\"},slot:\"button-prev\"},[_c('c-icon',{attrs:{\"name\":\"arrow-thin-left\",\"width\":\"25\",\"height\":\"25\"}})],1),_c('button',{staticClass:\"custom-swiper-button-next hidden md:block\",class:_vm.nextButtonSelector,attrs:{\"slot\":\"button-next\",\"type\":\"button\"},slot:\"button-next\"},[_c('c-icon',{attrs:{\"name\":\"arrow-thin-right\",\"width\":\"25\",\"height\":\"25\"}})],1)]:_c('div',[_vm._l((_vm.listViewProducts),function(product,index){return _c('div',{key:index + ':' + product.itemId,staticClass:\"mb-10\",class:_vm.productColor},[_c('ProductTile',{attrs:{\"product\":product,\"nested\":\"\",\"number-of-stock-labels\":1,\"mode\":\"horizontal-tiny\",\"product-click\":productClick,\"relation-type\":_vm.relationType,\"tracking-list-name\":_vm.trackingListName},on:{\"productImpression\":productImpression}})],1)}),(_vm.listViewPageSize !== undefined && _vm.products.length > _vm.page * _vm.listViewPageSize)?_c('div',{staticClass:\"flex\"},[_c('CallToAction',{staticClass:\"cta--link cta-icon--16 mx-auto\",attrs:{\"text\":_vm._f(\"t\")('Product.Relations.ShowMore'),\"icon\":\"plus-big\"},on:{\"click\":_vm.handleNextPage}})],1):_vm._e()],2)]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Component from 'vue-class-component';\r\nimport { Prop, Vue } from 'vue-property-decorator';\r\nimport ProductListTracker from '@/project/tracking/gtm/ProductListTracker.vue';\r\nimport { ProductTileViewObject } from '@/types/apiServerContract';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport { ProductRelationType } from './constants';\r\nimport breakpointState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\nimport { MIN_LG } from '@/core/config/breakpointConfig';\r\nimport breakpointService from '@/core/responsive/breakpoints/breakpoints.service';\r\n\r\n@Component({\r\n components: { ProductListTracker, SmartHeadline }\r\n})\r\nexport default class CondensedProductList extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Array\r\n })\r\n products!: ProductTileViewObject[];\r\n\r\n @Prop({\r\n required: true,\r\n type: String\r\n }) trackingListName!: string;\r\n\r\n @Prop({\r\n required: false,\r\n type: String,\r\n default: null\r\n }) headline!: string | null;\r\n\r\n @Prop({\r\n required: false,\r\n type: Boolean,\r\n default: false\r\n }) isFirstBlock!: boolean;\r\n\r\n @Prop({\r\n required: false,\r\n type: String,\r\n default: null\r\n }) productBgColor!: string | null;\r\n\r\n @Prop({\r\n required: false,\r\n type: String,\r\n default: null\r\n }) relationType!: ProductRelationType | null;\r\n\r\n @Prop({\r\n type: Boolean,\r\n default: false\r\n }) useSwiper!: boolean;\r\n\r\n @Prop({\r\n type: Number\r\n }) listViewPageSize!: number | undefined;\r\n\r\n page: number = 1;\r\n slidesPerView: 6 | 'auto' = 6; // Desktop (LG and XL) 6, else 'auto'\r\n rendered: boolean = false;\r\n activeBreakpoint: string = '';\r\n\r\n private get listViewProducts() {\r\n return this.products.filter((p, index) => this.listViewPageSize === undefined || index < this.page * this.listViewPageSize);\r\n }\r\n\r\n handleNextPage() {\r\n this.page++;\r\n }\r\n\r\n private get productColor() {\r\n if (!this.productBgColor) return '';\r\n\r\n switch (this.productBgColor.toLowerCase()) {\r\n case 'white':\r\n return 'bg-white';\r\n case 'gray':\r\n return 'bg-gray-300';\r\n }\r\n }\r\n\r\n private get id() {\r\n return new Date().valueOf();\r\n }\r\n\r\n private get prevButtonSelector() {\r\n return 'custom-swiper-button-prev-' + this.id;\r\n }\r\n\r\n private get nextButtonSelector() {\r\n return 'custom-swiper-button-next-' + this.id;\r\n }\r\n\r\n handleBreakpointChange() {\r\n const newBreakpoint = breakpointService.getActiveBreakpoint();\r\n if (newBreakpoint !== this.activeBreakpoint) {\r\n this.activeBreakpoint = newBreakpoint;\r\n this.rendered = false;\r\n this.setSlidesPerView();\r\n this.$nextTick(() => this.rendered = true);\r\n }\r\n }\r\n\r\n mounted() {\r\n this.activeBreakpoint = breakpointService.getActiveBreakpoint();\r\n breakpointService.addListener(this.handleBreakpointChange);\r\n this.setSlidesPerView();\r\n this.$nextTick(() => {\r\n this.rendered = true;\r\n });\r\n }\r\n\r\n destroyed() {\r\n breakpointService.removeListener(this.handleBreakpointChange);\r\n }\r\n\r\n setSlidesPerView() {\r\n this.slidesPerView = breakpointState.isBreakpointActive(MIN_LG) ? 6 : 'auto';\r\n }\r\n\r\n private get sliderOptions() {\r\n return {\r\n spaceBetween: 10,\r\n slidesPerView: this.slidesPerView,\r\n slidesPerGroup: 1,\r\n loop: false,\r\n loopFillGroupWithBlank: false,\r\n watchSlidesVisibility: true,\r\n watchOverflow: true,\r\n setWrapperSize: true,\r\n navigation: {\r\n nextEl: '.' + this.nextButtonSelector,\r\n prevEl: '.' + this.prevButtonSelector\r\n },\r\n grabCursor: true,\r\n instanceName: this.id,\r\n observer: true,\r\n observeParents: true,\r\n observeSlideChildren: true\r\n };\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CondensedProductList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CondensedProductList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CondensedProductList.vue?vue&type=template&id=567d05ff&scoped=true&\"\nimport script from \"./CondensedProductList.vue?vue&type=script&lang=ts&\"\nexport * from \"./CondensedProductList.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CondensedProductList.vue?vue&type=style&index=0&id=567d05ff&lang=less&scoped=true&\"\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 \"567d05ff\",\n null\n \n)\n\nexport default component.exports","import loggingService from '@/core/logging.service';\r\nimport HttpStatus from 'http-status-codes';\r\nimport siteService from '@/project/site/site.service';\r\nimport botService from '@/project/site/bot.service';\r\nimport { hardRedirect } from '@/core/redirect.service';\r\nimport serverContext from '@/core/serverContext.service';\r\nimport domService from '@/core/dom/dom.service';\r\nimport { router } from 'spaRouter';\r\n\r\nconst ErrorPage = {\r\n [HttpStatus.NOT_FOUND]: '/404',\r\n [HttpStatus.INTERNAL_SERVER_ERROR]: '/500',\r\n [HttpStatus.BAD_GATEWAY]: '/500'\r\n};\r\n\r\nconst uaIsBot = botService.uaIsBot();\r\nconst uaIsPrerender = botService.uaIsPrerender();\r\n\r\nfunction handleErrorCodes(errorCode: number, message?: string, notFoundProductWid?: string) {\r\n if (!Object.keys(ErrorPage).includes(errorCode + '')) {\r\n return;\r\n }\r\n\r\n if (uaIsPrerender) {\r\n // For prerender do XHR redirect and set prerender metadata\r\n domService.setPrerenderStatusCode(errorCode);\r\n router.push(ErrorPage[errorCode]);\r\n } else if (uaIsBot) {\r\n // If bot, but not prerender (not all product detailpages urls are handled by prerender) - hard-redirect\r\n const path = `/${serverContext.siteInfo.culture}${ErrorPage[errorCode]}`;\r\n hardRedirect(path);\r\n } else if (errorCode === HttpStatus.NOT_FOUND) {\r\n // No bot. 404's are redirected to content-page - all others handled by toaster for user\r\n loggingService.warn(`404 page. Referrer: ${siteService.documentReferrer}`);\r\n\r\n if (notFoundProductWid && serverContext.settings.product404Page) {\r\n router.push(withoutCulturePrefix(`${serverContext.settings.product404Page}?wid=${notFoundProductWid}`));\r\n } else {\r\n router.push(ErrorPage[errorCode]);\r\n }\r\n }\r\n\r\n if (message) {\r\n loggingService.info(`StatusCode: ${errorCode} - ${message}`);\r\n }\r\n}\r\n\r\nfunction withoutCulturePrefix(url: string): string {\r\n return url.substr((serverContext.siteInfo.url!.length));\r\n}\r\n\r\nexport default {\r\n handleErrorCodes\r\n};\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"h-full overflow-hidden\",class:{ 'flex flex-col': _vm.shouldUseFlexBox }},[(_vm.showCaptionAsContentTitle && _vm.content.caption)?_c('SmartHeadline',{staticClass:\"text-18 md:text-34 mb-10\",attrs:{\"style-as-h1\":_vm.isFirstBlock}},[(!_vm.shouldApplyBannerTextLimits)?[_vm._v(\" \"+_vm._s(_vm.content.caption)+\" \")]:[_c('SmartParagraph',{attrs:{\"content\":_vm.content.caption,\"max-characters\":20}})]],2):_vm._e(),(_vm.content)?_c('section',{staticClass:\"relative\",class:{ 'has-video-or-image' : _vm.content.vimeoVideoId || _vm.content.video || _vm.showBackgroundImage,\n 'flex flex-col flex-1': _vm.shouldUseFlexBox }},[_c('section',{staticClass:\"relative\",class:{ 'flex flex-col flex-1': _vm.shouldUseFlexBox },style:(_vm.aspectRatioStyling)},[_c('div',{class:{ 'absolute inset-0 overflow-hidden': !_vm.shouldUseFlexBox,\n 'flex flex-col flex-1': _vm.shouldUseFlexBox }},[(_vm.content.vimeoVideoId || _vm.content.video)?_c('div',{staticClass:\"relative flex flex-col h-full flex-1\",style:(_vm.videoContainerStyle)},[(_vm.content.video)?_c('video',{ref:\"videoMount\",staticClass:\"video flex-1\",attrs:{\"controls\":false,\"autoplay\":_vm.content.isBackgroundVideo,\"loop\":_vm.content.isBackgroundVideo,\"height\":\"100%\",\"width\":\"100%\"},domProps:{\"muted\":_vm.content.isBackgroundVideo}},[_c('source',{attrs:{\"src\":_vm.content.video.url,\"type\":'video/' + _vm.content.video.extension}}),_vm._v(\" Your browser does not support the video tag. \")]):(_vm.content.vimeoVideoId)?_c('div',{ref:\"videoMount\",class:{'video absolute inset-0': !_vm.loadingVideo}}):_vm._e()]):(_vm.showBackgroundImage)?_c('div',{staticClass:\"h-full\"},[_c('ResponsiveImage',{attrs:{\"image-url\":_vm.content.backgroundImage.url,\"aspect-ratio\":_vm.realAspectRatio,\"width-on-screen\":_vm.realWidthOnScreen,\"format\":_vm.backgroundImageFormat,\"mode\":\"crop\",\"focal-point\":_vm.content.backgroundImage.focalPoint,\"alt\":_vm.content.backgroundImage.name},on:{\"loaded\":function($event){return _vm.$emit('loaded')}}})],1):(_vm.adImageProps)?_c('img',_vm._b({staticClass:\"h-full relative\",style:(_vm.adImageStyle),attrs:{\"alt\":\"\"},on:{\"load\":function($event){return _vm.$emit('loaded')}}},'img',_vm.adImageProps,false)):_c('div',{staticClass:\"h-full\",style:(_vm.backgroundColorStyle(_vm.content.backgroundColor))})]),(_vm.showShim)?_c('section',{staticClass:\"absolute inset-0\",style:(_vm.shimColor)}):_vm._e()]),_c('section',{staticClass:\"content-wrapper flex flex-col h-full w-full justify-center\",class:{ 'has-controls': _vm.showVideoControls, 'playing': _vm.isPlaying, 'wide-banner': _vm.isWithinWideBannerAspectRatio }},[(_vm.renderContent)?_c('div',{staticClass:\"flex flex-col justify-center overflow-hidden\",class:{'items-end': _vm.alignRight },style:(_vm.contentTakeoverTransformStyle)},[_c('div',{staticClass:\"content flex items-center\",class:_vm.contentClass,style:(_vm.backgroundContentColorStyle)},[_c('div',[(_vm.content.caption)?_c('SmartHeadline',{staticClass:\"text-12 font-bold\",class:{\n 'mb-10': _vm.content.header || _vm.content.subheader,\n 'sm:mb-15': (_vm.content.header || _vm.content.subheader) && !_vm.isWithinWideBannerAspectRatio },style:(_vm.colorStyle(_vm.content.captionColor)),attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2'}},[(!_vm.shouldApplyBannerTextLimits)?[_vm._v(\" \"+_vm._s(_vm.content.caption)+\" \")]:[_c('smart-paragraph',{attrs:{\"content\":_vm.content.caption,\"max-characters\":20}})]],2):_vm._e(),(_vm.content.header)?_c('SmartHeadline',{directives:[{name:\"font-content-sync\",rawName:\"v-font-content-sync\",value:(_vm.headerFontSyncData),expression:\"headerFontSyncData\"}],class:{ 'mb-10': _vm.content.subheader, 'sm:mb-15': _vm.content.subheader && !_vm.isWithinWideBannerAspectRatio },style:(_vm.colorStyle(_vm.content.headerColor)),attrs:{\"level\":_vm.headerHeadlineLevel,\"style-as-h1\":true}},[(!_vm.shouldApplyBannerTextLimits)?[_vm._v(\" \"+_vm._s(_vm.content.header)+\" \")]:[_c('smart-paragraph',{attrs:{\"content\":_vm.content.header,\"max-characters\":30}})]],2):_vm._e(),(_vm.content.subheader)?_c('p',{staticClass:\"leading-normal whitespace-pre-line\",class:_vm.subheaderSizeClass,style:(_vm.colorStyle(_vm.content.subheaderColor))},[(!_vm.shouldApplyBannerTextLimits)?[_vm._v(\" \"+_vm._s(_vm.content.subheader)+\" \")]:[_c('SmartParagraph',{attrs:{\"content\":_vm.content.subheader,\"max-characters\":180}})]],2):_vm._e(),(_vm.showCallToActionButton)?_c('CallToAction',{staticClass:\"cta--rounded\",class:{ 'mt-15': _vm.isWithinWideBannerAspectRatio, 'mt-20': !_vm.isWithinWideBannerAspectRatio },attrs:{\"hex-color\":_vm.ctaColor,\"text\":_vm.content.callToAction.name,\"href\":_vm.content.callToAction.url,\"target\":_vm.content.callToAction.target,\"max-characters\":_vm.shouldApplyBannerTextLimits ? 30 : -1,\"on-click-event\":_vm.clickHandler}}):(_vm.showCallToActionVideoOverlayButton)?_c('CallToAction',{staticClass:\"cta--rounded\",class:{ 'mt-15': _vm.isWithinWideBannerAspectRatio, 'mt-20': !_vm.isWithinWideBannerAspectRatio },attrs:{\"hex-color\":_vm.ctaColor,\"text\":_vm.content.overlayVimeoCta,\"max-characters\":_vm.shouldApplyBannerTextLimits ? 30 : -1,\"on-click-event\":_vm.clickHandler},on:{\"click\":_vm.clickOpenVideoOverlay}}):_vm._e()],1)])]):_vm._e(),(_vm.showVideoControls)?_c('div',{staticClass:\"video-controls flex justify-center\",class:{ 'mt-20': _vm.renderContent }},[_c('button',{staticClass:\"controls\",on:{\"click\":function($event){return _vm.toggleVideoState()}}},[(!_vm.isPlaying)?[_c('c-icon',{staticClass:\"play\",attrs:{\"name\":\"play\",\"width\":\"30\",\"height\":\"30\"}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Play\")])]:[_c('c-icon',{staticClass:\"pause\",attrs:{\"name\":\"pause\",\"width\":\"30\",\"height\":\"30\"}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Pause\")])]],2)]):_vm._e(),(_vm.loadingVideo)?_c('div',{staticClass:\"absolute inset-0\"},[_c('SpinnerOverlay',{attrs:{\"show\":\"\"}})],1):_vm._e()]),(_vm.showCallToActionBlock)?_c('CultureAwareRouterLink',{staticClass:\"absolute inset-0\",attrs:{\"to\":_vm.content.callToAction.url,\"target\":_vm.content.callToAction.target},nativeOn:{\"click\":function($event){return _vm.clickHandler()}}}):_vm._e()],1):_c('section',{staticClass:\"relative\",style:(_vm.aspectRatioStyling)},[_c('div',{staticClass:\"absolute inset-0\"},[_c('SpinnerOverlay',{attrs:{\"show\":!_vm.contentLoadError}})],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop, Watch } from 'vue-property-decorator';\r\nimport { ContentWidth, HeroBannerViewModel, HorizontalAlignment, SubheaderFontSize } from '@/types/contentServerContract';\r\nimport CallToAction from '@/project/form/CallToAction.vue';\r\nimport VimeoPlayer from '@vimeo/player';\r\nimport breakpointState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\nimport { MAX_MD, MIN_LG, MIN_MD, MAX_SM, MIN_XS } from '@/core/config/breakpointConfig';\r\nimport { hexToRgb, isValidHexColor } from '@/core/color/color.service';\r\nimport { AdContentBlockViewModel, AdImage } from '@/types/apiServerContract';\r\nimport SpinnerOverlay from '@/project/spinners/SpinnerOverlay.vue';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport tailwind from '@/styling/tailwind.config';\r\nimport themeService from '@/project/app/themes/theme.service';\r\nimport loggingService from '@/core/logging.service';\r\nimport SmartParagraph from '@/core/ui-components/SmartParagraph.vue';\r\nimport { extensionIsGifOrUndefined } from '@/project/shared/responsive-umbraco-image.service';\r\nimport videoFullscreenOverlayService from '@/project/modals/overlays/VimeoVideoFullscreenOverlay.service';\r\n\r\nconst mobileAspectRatio = 3 / 2;\r\nconst semiTransparencyPercentage = 0.75;\r\nconst videoAspectRatio = 16 / 9;\r\nconst wideBannerAspectRatio = 5;\r\n\r\ninterface VideoElm {\r\n play: () => void;\r\n pause: () => void;\r\n on: any;\r\n onloadeddata: () => void;\r\n getVideoWidth: () => Promise;\r\n getVideoHeight: () => Promise;\r\n}\r\ninterface CombinedHeroBannerViewModel extends HeroBannerViewModel {\r\n // Mixing HeroBannerViewModel with stuff from AdContentBlockViewModel\r\n overlayVimeoVideoId?:string;\r\n overlayVimeoCta?:string;\r\n}\r\n\r\n@Component({\r\n components: { SmartParagraph, SpinnerOverlay, CallToAction, SmartHeadline }\r\n})\r\nexport default class ImageTextVideoBlock extends Vue {\r\n /* Could also be a BaseBlockViewModel - but we handle the missing props:\r\n contentAlignment, contentWidth, subheaderFontSize.\r\n Could also be a AdContentBlockViewModel, but we handle the extra backgroundImages special */\r\n @Prop({\r\n type: Object\r\n }) content!: CombinedHeroBannerViewModel | null;\r\n\r\n @Prop({\r\n type: Boolean,\r\n default: false\r\n }) isFirstBlock!: boolean;\r\n\r\n @Prop({\r\n type: Boolean,\r\n default: false\r\n }) contentLoadError!: boolean;\r\n\r\n @Prop({\r\n type: Function,\r\n default: () => {}\r\n }) clickHandler!: () => void;\r\n\r\n @Prop({\r\n type: Boolean,\r\n default: false\r\n }) isHeroBanner!: boolean;\r\n\r\n @Prop({\r\n type: Boolean,\r\n default: false\r\n }) useFlexBox!: boolean;\r\n\r\n @Prop({\r\n type: Boolean,\r\n default: false\r\n }) shouldApplyBannerTextLimits!: boolean;\r\n\r\n @Prop({\r\n required: true,\r\n type: Number\r\n }) widthOnScreen!: number;\r\n\r\n @Prop({\r\n required: true,\r\n type: Number\r\n }) aspectRatio!: number;\r\n\r\n @Prop()\r\n forceVimeoAspectRatio!: number;\r\n\r\n @Prop({\r\n required: false,\r\n type: Object\r\n }) aspectRatioMargins!: { [bp: string]: number };\r\n\r\n private get shouldUseFlexBox() {\r\n return this.useFlexBox && !this.isMobile;\r\n }\r\n\r\n private video: VimeoPlayer | VideoElm | null = null;\r\n private isPlaying: boolean = false;\r\n private loadingVideo: boolean = false;\r\n private contentBackgroundColor: string = '';\r\n private vimeoVideoAspectRatio: number = 0;\r\n\r\n private get isWithinWideBannerAspectRatio() {\r\n return this.aspectRatio >= wideBannerAspectRatio;\r\n }\r\n\r\n private get isMobile() {\r\n return breakpointState.isBreakpointActive(MAX_SM);\r\n }\r\n\r\n public get realAspectRatio(): number {\r\n if (this.shouldUseFlexBox) return 0;\r\n if (!this.isMobile && this.forceVimeoAspectRatio) return this.forceVimeoAspectRatio;\r\n\r\n // For mobile, aspect-ratio is controlled from within.\r\n return this.isMobile ? mobileAspectRatio : this.vimeoVideoAspectRatio ? this.vimeoVideoAspectRatio : this.aspectRatio;\r\n }\r\n\r\n private get realWidthOnScreen(): number {\r\n // For mobile, widht is controlled from within.\r\n return this.isMobile ? 100 : this.widthOnScreen;\r\n }\r\n\r\n private get margin() {\r\n if (!this.aspectRatioMargins) return 0;\r\n\r\n const activeBpDef = Object.keys(this.aspectRatioMargins).find(bpDef => breakpointState.isBreakpointActive(bpDef));\r\n const result = activeBpDef ? this.aspectRatioMargins[activeBpDef] : 0;\r\n return result;\r\n }\r\n\r\n private get aspectRatioStyling(): Partial {\r\n if (this.shouldUseFlexBox) return {};\r\n\r\n const paddingPct = (1 / this.realAspectRatio) * 100;\r\n return ({\r\n paddingBottom: `calc(${paddingPct}% - ${this.margin}px)`\r\n });\r\n }\r\n\r\n private get renderContent() {\r\n return !this.loadingVideo && !this.showCaptionAsContentTitle &&\r\n (this.content?.caption !== '' || this.content?.header !== '' || this.content?.subheader !== '' || this.content?.callToAction !== null);\r\n }\r\n\r\n private created() {\r\n this.loadingVideo = !!(this.content?.video || this.content?.vimeoVideoId);\r\n }\r\n\r\n private async mounted() {\r\n if (!this.content) return; // For normal blocks (not ad) it will always be not null\r\n\r\n if (this.content.video) {\r\n this.video = this.$refs.videoMount as any as VideoElm;\r\n\r\n this.video.onloadeddata = () => {\r\n this.loadingVideo = false;\r\n };\r\n } else if (this.content.vimeoVideoId) {\r\n const options = {\r\n id: ensureId(this.content.vimeoVideoId),\r\n autoplay: this.content.isBackgroundVideo,\r\n loop: this.content.isBackgroundVideo,\r\n muted: this.content.isBackgroundVideo,\r\n controls: false,\r\n title: false,\r\n byline: false,\r\n portrait: false,\r\n autopause: !this.content.isBackgroundVideo // Ensure that all videos on a page will autoplay\r\n };\r\n // eslint-disable-next-line no-new\r\n this.video = new VimeoPlayer(this.$refs.videoMount as HTMLElement, options) as VimeoPlayer;\r\n\r\n this.video.on('ended', () => {\r\n this.isPlaying = false;\r\n });\r\n\r\n this.video.on('loaded', () => {\r\n this.getVimeoVideoAspectRatio();\r\n });\r\n }\r\n\r\n function ensureId(idOrUrl: string): number {\r\n const idParts = idOrUrl.split(/(\\\\|\\/)/);\r\n let id = idOrUrl;\r\n if (idParts.length > 1) {\r\n id = idParts[idParts.length - 1];\r\n }\r\n return parseInt(id, 10);\r\n }\r\n }\r\n\r\n @Watch('content', {\r\n immediate: true\r\n })\r\n private onContentChange(content: HeroBannerViewModel | undefined) {\r\n if (!content) return;\r\n // Set defaults for properties. Width and subheader-font varies depending on whether hero or not\r\n content.contentAligmentValue = content.contentAligmentValue ?? HorizontalAlignment.Left;\r\n content.contentWidthValue = content.contentWidthValue ?? (this.isHeroBanner ? ContentWidth.TwoThird : ContentWidth.FullWidth);\r\n content.subheaderFontSizeValue = content.subheaderFontSizeValue ?? (this.isHeroBanner ? SubheaderFontSize.Large : SubheaderFontSize.Normal);\r\n }\r\n\r\n private async getVimeoVideoAspectRatio() {\r\n if (this.video) {\r\n const width = await this.video.getVideoWidth();\r\n const height = await this.video.getVideoHeight();\r\n this.vimeoVideoAspectRatio = width / height;\r\n }\r\n\r\n this.loadingVideo = false;\r\n }\r\n\r\n private get headerFontSyncData(): object {\r\n // Minimum is controlled by current subheader size\r\n const minSize = this.subheaderSize === 'small' ? 15 : 22;\r\n return [\r\n [MIN_LG, { min: minSize, max: 34 }],\r\n [MIN_MD, { min: minSize, max: 22 }],\r\n [MIN_XS, { min: minSize, max: 18 }]\r\n ];\r\n }\r\n\r\n private toggleVideoState() {\r\n if (!this.video) return;\r\n\r\n if (this.isPlaying) {\r\n try {\r\n this.video.pause();\r\n } catch (e) {\r\n loggingService.error(e);\r\n }\r\n } else {\r\n try {\r\n this.video.play();\r\n } catch (e) {\r\n loggingService.error(e);\r\n }\r\n }\r\n\r\n this.isPlaying = !this.isPlaying;\r\n }\r\n\r\n private hexToRgbWithDefault(hex: string, alpha?: number): string {\r\n if (!isValidHexColor(hex)) return tailwind.theme.colors.black;\r\n return hexToRgb(hex, alpha);\r\n }\r\n\r\n private backgroundColorStyle(backgroundColor: string, semiTransparent = false): object {\r\n let result = 'transparent';\r\n\r\n if (this.isColorDefined(backgroundColor)) {\r\n result = this.hexToRgbWithDefault(backgroundColor, semiTransparent ? semiTransparencyPercentage : undefined);\r\n }\r\n\r\n return ({\r\n backgroundColor: result\r\n });\r\n }\r\n\r\n private get backgroundContentColorStyle(): Partial {\r\n if (!this.content || this.loadingVideo) return {};\r\n\r\n const backgroundColor = this.content.contentBackgroundColor;\r\n const semiTransparent = this.content.makeContentBackgroundTransparent;\r\n\r\n let result = 'transparent';\r\n\r\n if (this.shouldShowContentBackground && this.isColorDefined(backgroundColor)) {\r\n result = this.hexToRgbWithDefault(backgroundColor, semiTransparent ? semiTransparencyPercentage : undefined);\r\n }\r\n\r\n this.contentBackgroundColor = result;\r\n\r\n return ({\r\n backgroundColor: result\r\n });\r\n }\r\n\r\n private get backgroundImageFormat() {\r\n return extensionIsGifOrUndefined(this.content?.backgroundImage);\r\n }\r\n\r\n private get contentTakeoverTransformStyle(): Partial {\r\n // Take over banner is 200px taller than normal banners, so we have to push content down by half (100)\r\n // to ensure it is centered correctly\r\n const translateY = this.isTakeOverBanner && !this.isMobile ? 100 : 0;\r\n\r\n return ({\r\n transform: `translateY(${translateY}px)`\r\n });\r\n }\r\n\r\n private get ctaColor(): string | null {\r\n return this.content?.callToActionColor || null;\r\n }\r\n\r\n private get headerHeadlineLevel(): string {\r\n let level;\r\n\r\n if (this.isFirstBlock && !this.content?.caption && this.content?.header) {\r\n level = 'h1';\r\n } else if ((this.isFirstBlock && this.content?.caption && this.content?.header) || (!this.isFirstBlock && !this.content?.caption && this.content?.header)) {\r\n level = 'h2';\r\n } else {\r\n level = 'h3';\r\n }\r\n\r\n return level;\r\n }\r\n\r\n isColorDefined(color: string): boolean {\r\n return color?.length === 7 ?? false; // #233445\r\n }\r\n\r\n private colorStyle(hexColor: string): object {\r\n const EETBlack = tailwind.theme.colors.black;\r\n return ({\r\n color: this.contentBackgroundColor === 'white' ? EETBlack : hexColor ? this.hexToRgbWithDefault(hexColor) : EETBlack\r\n });\r\n }\r\n\r\n private get alignRight(): boolean {\r\n return this.content?.contentAligmentValue === HorizontalAlignment.Right; // Left is default\r\n }\r\n\r\n private get contentClass(): string {\r\n if (!this.content) return '';\r\n\r\n let widthCls = 'w-full'; // Default for mobile\r\n if (!this.isMobile) {\r\n switch (this.content.contentWidthValue) {\r\n case ContentWidth.OneThird:\r\n widthCls = 'w-1/3';\r\n break;\r\n case ContentWidth.TwoThird:\r\n widthCls = 'w-2/3';\r\n break;\r\n case ContentWidth.FullWidth:\r\n widthCls = 'w-full';\r\n break;\r\n }\r\n }\r\n return `${widthCls}`;\r\n }\r\n\r\n private get subheaderSizeClass(): string {\r\n if (!this.subheaderSize) return '';\r\n\r\n return this.subheaderSize === 'small' ? 'text-15' : this.video ? 'text-18' : 'text-22';\r\n }\r\n\r\n private get subheaderSize(): undefined | 'small' | 'large' {\r\n if (!this.content) return undefined;\r\n\r\n if (breakpointState.isBreakpointActive(MAX_MD)) {\r\n return 'small';\r\n }\r\n\r\n return this.content.subheaderFontSizeValue === SubheaderFontSize.Normal ? 'small' : 'large';\r\n }\r\n\r\n private get adnuntiusImages() : AdImage[] {\r\n const adImages = (this.content as any as AdContentBlockViewModel).backgroundImages;\r\n if (!adImages || adImages.length === 0) {\r\n return [];\r\n }\r\n\r\n // Take the ones matching aspect-ratio\r\n return adImages\r\n .filter(img => isMatchingImageAspectRatio(img, this.realAspectRatio));\r\n\r\n function isMatchingImageAspectRatio(image: AdImage, aspectRatio: number): boolean {\r\n // Allow for 5 percentage in difference, to be a bit relaxed. Image will overflow correctly\r\n const allowedDelta = aspectRatio * 0.05;\r\n return Math.abs(image.width / image.height - aspectRatio) <= allowedDelta;\r\n }\r\n }\r\n\r\n private get adImageProps(): object | null {\r\n if (this.adnuntiusImages.length === 0) {\r\n return null;\r\n }\r\n\r\n // Src-set\r\n const srcset = this.adnuntiusImages\r\n .map(img => `${img.url} ${img.width}w`)\r\n .join(', ');\r\n\r\n // src. Take largest\r\n const src = this.adnuntiusImages\r\n .sort((imageA, imageB) => imageA.width - imageB.width)[this.adnuntiusImages.length - 1].url;\r\n\r\n // Sizes\r\n const sizes = `${this.realWidthOnScreen}vw`;\r\n\r\n return {\r\n srcset,\r\n src,\r\n sizes\r\n };\r\n }\r\n\r\n private get shimColor(): Partial {\r\n return { backgroundColor: this.content?.shimColor, opacity: '0.3' };\r\n }\r\n\r\n private get adImageStyle(): object {\r\n if (this.adnuntiusImages.length === 0) return {};\r\n\r\n // Assume aspect ratio is the same for all pictures (they are filtered on aspect-ratio), so grab the first\r\n const image = this.adnuntiusImages[0];\r\n const imgAspectRatio = image.width / image.height;\r\n if (imgAspectRatio > this.realAspectRatio) {\r\n return ({\r\n height: '100%',\r\n width: 'auto',\r\n maxWidth: 'none',\r\n left: '50%',\r\n transform: 'translateX(-50%)'\r\n });\r\n } else {\r\n return ({\r\n height: 'auto',\r\n width: '100%',\r\n maxHeight: 'none',\r\n top: '50%',\r\n transform: 'translateY(-50%)'\r\n });\r\n }\r\n }\r\n\r\n private get videoContainerMoreNarrowThanVideo() {\r\n return this.realAspectRatio < videoAspectRatio;\r\n }\r\n\r\n private get videoContainerStyle(): Partial {\r\n if (!this.content) return {};\r\n\r\n return this.videoContainerMoreNarrowThanVideo ? ({\r\n width: 100 + '%',\r\n height: '100%',\r\n left: '50%',\r\n transform: 'translateX(-50%)'\r\n }) : ({\r\n ...(!!(this.content.vimeoVideoId) && { height: 100 * videoAspectRatio + '%' }),\r\n width: '100%',\r\n top: '50%',\r\n transform: 'translateY(-50%)'\r\n });\r\n }\r\n\r\n private get shouldShowContentBackground(): boolean {\r\n return this.showBackgroundImage || !!((this.content as any as AdContentBlockViewModel)?.backgroundImages?.length > 0) || !!this.content?.vimeoVideoId;\r\n }\r\n\r\n private get showVideoControls() {\r\n return this.content && !this.loadingVideo && this.video && !this.content.isBackgroundVideo;\r\n }\r\n\r\n private get showCaptionAsContentTitle() {\r\n return this.content?.captionLocation === 'Top';\r\n }\r\n\r\n private get showBackgroundImage(): boolean {\r\n return !!(this.content?.backgroundImage?.url ?? false);\r\n }\r\n\r\n private get showShim(): boolean {\r\n return !!this.content?.shimColor && (!!this.content.vimeoVideoId || !!this.content.video || this.showBackgroundImage || !!this.adImageProps);\r\n }\r\n\r\n private get showCallToActionButton(): boolean {\r\n // Show button if there are no overlayVimeoVideoId (then another button should be shown)\r\n return !!(this.content?.callToAction?.name ?? false);\r\n }\r\n\r\n private get showCallToActionBlock(): boolean {\r\n return !this.showCallToActionButton && (!!this.content?.callToAction?.url ?? false);\r\n }\r\n\r\n private get showCallToActionVideoOverlayButton(): boolean {\r\n return !!(this.content?.overlayVimeoVideoId && this.content?.overlayVimeoCta);\r\n }\r\n\r\n private get isTakeOverBanner() {\r\n return this.isFirstBlock && themeService.isTakeOverEnabled;\r\n }\r\n\r\n private async clickOpenVideoOverlay() {\r\n if (this.content?.overlayVimeoVideoId) {\r\n if (this.video) {\r\n // Pauses video background while playing overlay video\r\n this.video.pause();\r\n }\r\n await videoFullscreenOverlayService.show(this.content.overlayVimeoVideoId, true);\r\n if (this.video) {\r\n // Starts video background again, after video overlay has been closed\r\n this.video.play();\r\n }\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageTextVideoBlock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageTextVideoBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ImageTextVideoBlock.vue?vue&type=template&id=4932ce64&scoped=true&\"\nimport script from \"./ImageTextVideoBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./ImageTextVideoBlock.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ImageTextVideoBlock.vue?vue&type=style&index=0&id=4932ce64&lang=less&scoped=true&\"\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 \"4932ce64\",\n null\n \n)\n\nexport default component.exports","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'clearance': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 14 14',\r\n data: ''\r\n }\r\n})\r\n","// Dont use any imports from Vue here (or bus) - the service is use by GTM.service which is loaded in bootstrap code.\r\nimport { localStorageService } from '@/core/storage.service';\r\n\r\nconst LOCAL_STORAGE_KEY = 'eetgroup-eet-auth';\r\nconst LOCAL_STORAGE_KEY_FOR_PREVIOUS = 'eetgroup-eet-auth-previous';\r\n\r\nexport enum UserGroup {\r\n System = 'System',\r\n Administrator = 'Administrator',\r\n Trusted = 'Trusted',\r\n Normal = 'Normal',\r\n Viewer = 'Viewer'\r\n}\r\n\r\nexport interface UserData {\r\n businessEntityName: string,\r\n contactKey: string,\r\n contactHash: string,\r\n customerId: string\r\n customerKey: string,\r\n customerNo: string,\r\n companyName: string,\r\n salesProfitCategory: string,\r\n userId: string\r\n webUserId: string,\r\n role: UserGroup,\r\n blocking: 'CanLoginButCannotPlaceOrder' | 'None' | 'Complete',\r\n impersonate: string,\r\n userName: string,\r\n impersonatorEmail?: string,\r\n staff: string\r\n}\r\n\r\nlet _token: string | null = localStorageService.getItem(LOCAL_STORAGE_KEY);\r\nlet _tokenPayload: UserData | null = null;\r\nsetTokenPayload(_token);\r\n\r\nfunction clearToken(): void {\r\n _token = null;\r\n localStorageService.removeItem(LOCAL_STORAGE_KEY);\r\n setTokenPayload(null);\r\n}\r\n\r\nfunction setToken(token: string): void {\r\n _token = token;\r\n localStorageService.setItem(LOCAL_STORAGE_KEY, token);\r\n localStorageService.setItem(LOCAL_STORAGE_KEY_FOR_PREVIOUS, token);\r\n setTokenPayload(token);\r\n}\r\n\r\nfunction getToken(): string | null {\r\n return _token;\r\n}\r\n\r\nfunction getPreviousToken(): string | null {\r\n return localStorageService.getItem(LOCAL_STORAGE_KEY_FOR_PREVIOUS);\r\n}\r\n\r\nfunction getUserData(fallbackToPrevious = false): UserData | null {\r\n if (fallbackToPrevious) return _tokenPayload || parseJwt(localStorageService.getItem(LOCAL_STORAGE_KEY_FOR_PREVIOUS));\r\n return _tokenPayload;\r\n}\r\n\r\nfunction setTokenPayload(token: string | null) {\r\n if (token) {\r\n _tokenPayload = parseJwt(token);\r\n } else {\r\n _tokenPayload = null;\r\n }\r\n}\r\n\r\nfunction parseJwt(token: string | null): UserData | null {\r\n if (!token) return null;\r\n\r\n try {\r\n const base64Url = token.split('.')[1];\r\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n // eslint-disable-next-line\r\n const jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {\r\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\r\n }).join(''));\r\n\r\n const parsedToken = JSON.parse(jsonPayload);\r\n const userData = {};\r\n Object.keys(parsedToken).forEach(key => {\r\n const pascalCasedKey = key.charAt(0).toLowerCase() + key.slice(1);\r\n userData[pascalCasedKey] = parsedToken[key];\r\n });\r\n return userData as UserData;\r\n } catch {\r\n localStorageService.removeItem(LOCAL_STORAGE_KEY);\r\n localStorageService.removeItem(LOCAL_STORAGE_KEY_FOR_PREVIOUS);\r\n return null;\r\n }\r\n}\r\n\r\nexport default {\r\n clearToken,\r\n setToken,\r\n getToken,\r\n getPreviousToken,\r\n getUserData\r\n};\r\n","export const BRAND_FACET_KEY = 'ATTR_Brandname';\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pixels\"},[_vm._t(\"default\",null,{\"click\":_vm.handleClick})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Api from '@/project/http/Api.service';\r\nimport AbstractBulkFetch from '@/core/bulk-fetch/AbstractBulkFetch';\r\nimport { AdnuntiusPixelForwardRequest } from '@/types/apiServerContract';\r\n\r\nclass AdnuntiusBulkService extends AbstractBulkFetch {\r\n async apiCall(deliveryUrls: string[]) {\r\n await Api.personalization.forwardAdnuntiusPixelRequest({\r\n deliveryUrls: deliveryUrls\r\n } as AdnuntiusPixelForwardRequest);\r\n\r\n return null;\r\n }\r\n}\r\n\r\nexport default new AdnuntiusBulkService('Adnuntius', 200);\r\n","\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport AdnuntiusBulkService from './adnuntiusBulk.service';\r\nimport gtmService from '@/project/tracking/gtm/GTM.service';\r\nimport { AdnuntiusTrackingData } from '@/project/tracking/adnuntius/types';\r\n\r\n@Component\r\nexport default class AdnuntiusPixels extends Vue {\r\n isSetup = false;\r\n isVisible = false;\r\n isMaybeViewed = false;\r\n isClicked = false;\r\n observer: IntersectionObserver | null = null;\r\n\r\n @Prop(String)\r\n private renderedUrl!: string | null;\r\n\r\n @Prop(String)\r\n private visibleUrl!: string | null;\r\n\r\n @Prop(String)\r\n private viewUrl!: string | null;\r\n\r\n @Prop(String)\r\n private clickUrl!: string | null;\r\n\r\n @Prop(Boolean)\r\n private alwaysVisible!: boolean | null;\r\n\r\n @Prop(Object)\r\n private trackingData!: AdnuntiusTrackingData | null;\r\n\r\n private handleClick() {\r\n if (!this.isClicked) {\r\n this.isClicked = true;\r\n this.forwardContentRequests(this.clickUrl);\r\n this.trackCreativeClick();\r\n }\r\n }\r\n\r\n private forwardContentRequests(url: string | null) {\r\n if (url) { AdnuntiusBulkService.requestData(url); }\r\n }\r\n\r\n private trackCreativeView() {\r\n if (this.trackingData) {\r\n gtmService.trackCreativeView([{ name: this.trackingData.lineItemId, id: this.trackingData.creativeId, creative: this.trackingData.parentBlockAlias }]);\r\n }\r\n }\r\n\r\n private trackCreativeClick() {\r\n if (this.trackingData) {\r\n gtmService.trackCreativeClick(this.trackingData.lineItemId, this.trackingData.creativeId, this.trackingData.parentBlockAlias);\r\n }\r\n }\r\n\r\n private mounted() {\r\n this.setup();\r\n }\r\n\r\n @Watch('renderedUrl')\r\n private onRenderedUrlChange(url: string, oldUrl: string) {\r\n if (url) {\r\n this.setup();\r\n }\r\n }\r\n\r\n private setup() {\r\n // Setup only when has been mounted and link props are present\r\n if (this.isSetup || !this.renderedUrl || !this.$el) return;\r\n this.isSetup = true;\r\n\r\n this.forwardContentRequests(this.renderedUrl);\r\n\r\n if (this.alwaysVisible) {\r\n this.forwardContentRequests(this.viewUrl);\r\n this.forwardContentRequests(this.visibleUrl);\r\n } else {\r\n this.observer = new IntersectionObserver(\r\n (entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n if (!this.isVisible) {\r\n this.isVisible = true;\r\n this.forwardContentRequests(this.visibleUrl);\r\n }\r\n } else {\r\n this.isMaybeViewed = false;\r\n }\r\n\r\n if (entry.intersectionRatio >= 0.5 && entry.isIntersecting) {\r\n this.isMaybeViewed = true;\r\n setTimeout(() => {\r\n if (this.isMaybeViewed) {\r\n this.forwardContentRequests(this.viewUrl);\r\n this.trackCreativeView();\r\n this.unObserve();\r\n }\r\n }, 1000);\r\n }\r\n });\r\n },\r\n {\r\n threshold: [0, 0.5]\r\n });\r\n\r\n this.observer.observe(this.$el);\r\n }\r\n }\r\n\r\n private unObserve(): void {\r\n if (this.observer) {\r\n this.observer.disconnect();\r\n this.observer = null;\r\n }\r\n }\r\n\r\n public destroyed() {\r\n this.unObserve();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdnuntiusPixels.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdnuntiusPixels.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdnuntiusPixels.vue?vue&type=template&id=e3922684&\"\nimport script from \"./AdnuntiusPixels.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdnuntiusPixels.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/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Accordion.vue?vue&type=style&index=0&lang=less&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Accordion.vue?vue&type=style&index=0&lang=less&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResponsiveIcon.vue?vue&type=style&index=0&lang=less&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResponsiveIcon.vue?vue&type=style&index=0&lang=less&\"","\r\nimport Vue from 'vue';\r\nimport { Component } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class Bus extends Vue {\r\n public emit(event: string, ...args: any[]) {\r\n this.$emit(event, ...args);\r\n }\r\n\r\n public once(event: string, callback: (...args: any[]) => void) {\r\n this.$once(event, callback);\r\n }\r\n\r\n public on(event: string, callback: (...args: any[]) => void) {\r\n this.$on(event, callback);\r\n }\r\n\r\n public off(event: string, callback: (...args: any[]) => void) {\r\n this.$off(event, callback);\r\n }\r\n}\r\n","var render, staticRenderFns\nimport script from \"./Bus.vue?vue&type=script&lang=ts&\"\nexport * from \"./Bus.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/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Bus.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Bus.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputTextArea.vue?vue&type=style&index=0&id=9f5c7f46&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputTextArea.vue?vue&type=style&index=0&id=9f5c7f46&lang=less&scoped=true&\"","// Depends on JSNLog which is probably loaded by serverside scripting.\r\n\r\nimport Vue from 'vue';\r\nimport StackTrace from 'stacktrace-js';\r\nimport logging from './logging.service';\r\n\r\nfunction init() {\r\n Vue.config.errorHandler = function(err, vm, info) {\r\n if (isProdMode()) {\r\n StackTrace.fromError(err)\r\n .then(stackframes => logStackframes(stackframes, err, info))\r\n .catch(logging.error);\r\n } else {\r\n logging.error(err);\r\n }\r\n };\r\n\r\n window.onerror = function(errorMsg, url, lineNumber, column, errorObj) {\r\n if (isProdMode() && errorObj) {\r\n StackTrace.fromError(errorObj)\r\n .then(stackframes => logStackframes(stackframes, errorObj, errorMsg, url, lineNumber, column))\r\n .catch(logging.error);\r\n return true;\r\n } else {\r\n logging.error(errorObj);\r\n }\r\n };\r\n\r\n window.onunhandledrejection = function(event) {\r\n if (event && event.reason) {\r\n if (isProdMode()) {\r\n StackTrace.fromError(event.reason)\r\n .then(stackframes => logStackframes(stackframes, event.reason.message, event.reason))\r\n .catch(e => logging.error(event.reason));\r\n } else {\r\n logging.error(event);\r\n }\r\n }\r\n };\r\n\r\n function logStackframes(stackframes, errorObj, errorMsg, url?, lineNumber?, column?) {\r\n const stringifiedStack = stackframes\r\n .map(sf => {\r\n return sf.toString();\r\n })\r\n .join('\\n');\r\n\r\n logging.exception(\r\n {\r\n msg: 'Exception! ' + stringifiedStack,\r\n errorMsg: errorMsg,\r\n url: url,\r\n lineNumber: lineNumber,\r\n column: column\r\n },\r\n errorObj\r\n );\r\n }\r\n\r\n function isProdMode() {\r\n return process.env.NODE_ENV === 'production';\r\n }\r\n}\r\n\r\ninit();\r\n","import bus from '@/core/bus';\r\nimport { HasOutstandingXhrCallsEventKey } from '@/core/http/constants';\r\nimport debounce from 'lodash/debounce';\r\n\r\n// Set window.prerenderReady to true when all initial XHR requests from header/page has settled\r\n\r\n// Debounce for a while to let e.g. loaded products be rendered and start doing XHR requests\r\nconst debouncedHandleOutstandingXhrCalls = debounce(handleOutstandingXhrCalls, 1000);\r\n\r\ndeclare global {\r\n interface Window {\r\n prerenderReady: boolean\r\n }\r\n}\r\n\r\nwindow.prerenderReady = false;\r\n\r\nbus.on(HasOutstandingXhrCallsEventKey, debouncedHandleOutstandingXhrCalls);\r\n\r\nfunction handleOutstandingXhrCalls(hasOutstandingXhrCalls: boolean) {\r\n if (window.prerenderReady) {\r\n bus.off(HasOutstandingXhrCallsEventKey, handleOutstandingXhrCalls);\r\n }\r\n\r\n if (!hasOutstandingXhrCalls) {\r\n window.prerenderReady = true;\r\n }\r\n}\r\n","import { RawLocation, Route } from 'vue-router';\r\nimport { BreadcrumbItem, Media, Metadata } from '@/types/contentServerContract';\r\nimport domService from '@/core/dom/dom.service';\r\nimport appStore from '@/core/app/app.store';\r\nimport authService from '@/core/auth/auth.service';\r\nimport permissionService, { Permission } from '@/project/auth/permission.service';\r\nimport loginFormOverlayService from '@/project/modals/overlays/LoginFormOverlay.service';\r\nimport { router } from 'spaRouter';\r\nimport botService from '@/project/site/bot.service';\r\nimport HttpStatus from 'http-status-codes';\r\nimport bus from '@/core/bus';\r\nimport { RouterBeforeChangeKey } from '@/core/http/constants';\r\n\r\nexport interface RouterMetaData {\r\n isContent?: boolean; // For internal use\r\n isTunnelView?: boolean;\r\n hideBreadcrumb?: boolean;\r\n breadcrumb?: BreadcrumbItem[];\r\n skipAutoBreadcrumb?: boolean;\r\n isPublic?: boolean;\r\n permission?: Permission;\r\n headMeta: Partial,\r\n skipAutoPageTracking?: boolean,\r\n skipAutoSeoTitle?: boolean\r\n}\r\n\r\nrouter.beforeEach((to: Route, from: Route, next: (to?: RawLocation | false | void) => void) => {\r\n bus.emit(RouterBeforeChangeKey, to, from);\r\n const routerMeta = to.meta as RouterMetaData;\r\n\r\n const isLoggedIn = authService.isLoggedIn();\r\n const nonPublicAndNotLoggedIn = !routerMeta.isPublic && !isLoggedIn;\r\n const needsPermissionAndHasNot = routerMeta.permission && !permissionService.can(routerMeta.permission);\r\n\r\n if (nonPublicAndNotLoggedIn) {\r\n if (botService.uaIsPrerender()) {\r\n domService.setPrerenderStatusCode(HttpStatus.UNAUTHORIZED);\r\n }\r\n setTimeout(() => {\r\n loginFormOverlayService.show('login', to.path);\r\n }, 0);\r\n next('/');\r\n return;\r\n }\r\n\r\n if (needsPermissionAndHasNot) {\r\n next('/');\r\n return;\r\n }\r\n\r\n next();\r\n});\r\n\r\nrouter.afterEach((to: Route) => {\r\n const routerMeta = to.meta as RouterMetaData;\r\n\r\n appStore.initPage({ isTunnelView: routerMeta.isTunnelView ?? false, hideBreadcrumb: routerMeta.hideBreadcrumb ?? false });\r\n\r\n if (routerMeta.isContent) {\r\n // Route for content pages (from server). Ignore\r\n return;\r\n }\r\n\r\n // Set breadcrumb\r\n if (!routerMeta.skipAutoBreadcrumb) {\r\n const breadCrumb = routerMeta.breadcrumb || appStore.getBreadcrumbFromRoute(to.fullPath);\r\n appStore.setBreadcrumb(breadCrumb);\r\n }\r\n\r\n const metaData = {\r\n ...{\r\n id: 0,\r\n key: '',\r\n index: false,\r\n url: domService.buildCanonicalUrl(to.path),\r\n languages: [],\r\n navigationTitle: to.name || '',\r\n seoDescription: '',\r\n seoImage: undefined as unknown as Media\r\n },\r\n ...routerMeta.headMeta\r\n } as Metadata;\r\n\r\n // Set the seoTitle automatically if skipAutoSeoTitle has not been setup on the route\r\n if (!routerMeta.skipAutoSeoTitle) {\r\n metaData.seoTitle = to.name || '';\r\n }\r\n\r\n // Set meta-data - with optional pr. route override.\r\n domService.updateMetaData(metaData);\r\n});\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('d-icon',{key:_vm.name,attrs:{\"name\":_vm.nameComputed,\"width\":_vm.width,\"height\":_vm.height,\"original\":_vm.original,\"alt\":_vm.altText,\"color\":_vm.color,\"fill\":_vm.fill}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport serverContextService from '@/core/serverContext.service';\r\n\r\n@Component\r\nexport default class cIcon extends Vue {\r\n @Prop({\r\n type: String,\r\n required: true\r\n })\r\n name!:string;\r\n\r\n @Prop({\r\n type: String\r\n })\r\n height!:string;\r\n\r\n @Prop({\r\n type: String\r\n })\r\n width!:string;\r\n\r\n @Prop()\r\n original!: string;\r\n\r\n @Prop()\r\n alt!: string;\r\n\r\n @Prop()\r\n title!: string;\r\n\r\n @Prop()\r\n color;\r\n\r\n @Prop()\r\n fill;\r\n\r\n get nameComputed() {\r\n const opremaPrefixedIcons = new Set(['logo', 'logo-half-eet', 'logo-half-top', 'lyn1', 'lyn2', 'lyn3', 'splash-new']);\r\n if (serverContextService.themeString && opremaPrefixedIcons.has(this.name)) {\r\n return `${serverContextService.themeString}-${this.name}`;\r\n }\r\n return this.name;\r\n }\r\n\r\n get altText(): string {\r\n return this.alt || this.title || this.name;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cIcon.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cIcon.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./cIcon.vue?vue&type=template&id=46b8c892&\"\nimport script from \"./cIcon.vue?vue&type=script&lang=ts&\"\nexport * from \"./cIcon.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 Vue from 'vue';\r\n\r\n// We are using vue-svgicon to generate icons as components - https://github.com/MMF-FE/vue-svgicon\r\nimport SvgIcon from 'vue-svgicon';\r\nimport '@/project/icons';\r\nimport cIcon from '@/core/responsive/image/cIcon.vue';\r\n\r\n// Default tag name is 'svgicon'\r\nVue.use(SvgIcon, {\r\n tagName: 'd-icon',\r\n classPrefix: 'c-icon'\r\n});\r\nVue.component('CIcon', cIcon);\r\n","import Vue from 'vue';\r\n\r\nVue.directive('submit', function(el, binding, vnode) {\r\n if (!(typeof binding.value === 'function')) {\r\n throw new Error('You must supply a submit-handler function');\r\n }\r\n if (!(vnode.context as any).$validator) {\r\n throw new Error('V-validate \"$validator\" object should exist in your Vue component containing the form');\r\n }\r\n\r\n (el as HTMLFormElement).noValidate = true;\r\n (el as HTMLFormElement).onsubmit = e => {\r\n e.preventDefault();\r\n // vnode.context is the Vue the form is located in.\r\n (vnode.context as any).$validator.validateAll().then(isValid => {\r\n if (isValid) {\r\n binding.value();\r\n }\r\n });\r\n };\r\n});\r\n","import Vue from 'vue';\r\nimport domService from '@/core/dom/dom.service';\r\nimport botService from '@/project/site/bot.service';\r\n\r\nconst timeout = 1000;\r\n\r\nVue.directive('prohibit-zoom', {\r\n bind: function(el: HTMLElement) {\r\n // For SEO purpose, dont bind if bot or prerender\r\n if (botService.uaIsPrerender() || botService.uaIsBot()) return;\r\n\r\n let touchTimer;\r\n let blurTimer;\r\n const standardMeta = domService.getMetaViewport();\r\n const unscalableMeta = standardMeta + ', maximum-scale=1.0, user-scalable=0';\r\n\r\n el.ontouchstart = touchstartHandler;\r\n el.onfocus = focusHandler;\r\n el.onblur = blurHandler;\r\n\r\n function touchstartHandler() {\r\n clearTimeout(touchTimer);\r\n domService.setMetaViewport(unscalableMeta);\r\n touchTimer = setTimeout(() => {\r\n domService.setMetaViewport(standardMeta);\r\n }, timeout);\r\n }\r\n\r\n function focusHandler() {\r\n clearTimeout(touchTimer);\r\n domService.setMetaViewport(unscalableMeta);\r\n }\r\n\r\n function blurHandler() {\r\n clearTimeout(blurTimer);\r\n domService.setMetaViewport(unscalableMeta);\r\n blurTimer = setTimeout(() => {\r\n domService.setMetaViewport(standardMeta);\r\n }, timeout);\r\n }\r\n }\r\n});\r\n","import Vue, { VNodeDirective } from 'vue';\r\nimport botService from '@/project/site/bot.service';\r\nimport serverContextService from '@/core/serverContext.service';\r\n\r\nfunction errorHandler(el:HTMLElement, classNamesArray:string[] = []) {\r\n el.setAttribute('src', serverContextService.imageNotFound); // Set attribute to no image src const\r\n el.removeAttribute('srcset'); // Remove srcset attribute\r\n\r\n classNamesArray.forEach((className: string) => {\r\n el.classList.add(className); // Add class when error on image\r\n\r\n // TODO: use polyfill for compatibility (mjo) - https://vanillajstoolkit.com/polyfills/closest/\r\n\r\n // const closestParent = el.closest('.responsive-image');\r\n\r\n // if (closestParent) {\r\n // closestParent.classList.add('responsive-image--no-image');\r\n // }\r\n });\r\n}\r\n\r\nVue.directive('on-error', {\r\n bind: function(el: HTMLElement, binding: VNodeDirective) {\r\n // Prerender blocks images by default, so all images ends up with fallback url when google sees them.\r\n if (botService.uaIsPrerender()) return;\r\n\r\n const classNamesArrayTemp = binding.value && binding.value[0] ? binding.value : [];\r\n const classNamesArray = ['c-on-error', ...classNamesArrayTemp];\r\n\r\n el.addEventListener('error', () => errorHandler(el, classNamesArray));\r\n }\r\n});\r\n\r\nVue.directive('delegateOnImgError', {\r\n bind: function(elWrapper: HTMLElement, binding: VNodeDirective) {\r\n const imageEls = elWrapper.querySelectorAll('img');\r\n\r\n const classNamesArrayTemp = binding.value && binding.value[0] ? binding.value : [];\r\n const classNamesArray = ['c-on-error', ...classNamesArrayTemp];\r\n\r\n imageEls.forEach((el, index) => {\r\n el.addEventListener('error', () => errorHandler(el, classNamesArray));\r\n });\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport { router } from 'spaRouter';\r\nimport serverContext from '@/core/serverContext.service';\r\n\r\n// Fallback for matches for IE11\r\nif (!Element.prototype.matches) {\r\n Element.prototype.matches = (Element.prototype as any).msMatchesSelector;\r\n}\r\n\r\nVue.directive('delegateHtmlLinks', {\r\n bind: function(el: HTMLElement, binding) {\r\n el.addEventListener('click', event => {\r\n const { target }: any = event;\r\n\r\n if (isExternalScheme(target.href)) {\r\n return;\r\n }\r\n\r\n // only links that do not reference external resources\r\n if (target && target.href && !(isHrefExternal(target.href, location.host) || isHrefMedia(target.href))) {\r\n const { altKey, ctrlKey, metaKey, shiftKey, button, defaultPrevented } = event;\r\n\r\n if (metaKey || altKey || ctrlKey || shiftKey) {\r\n return;\r\n }\r\n\r\n if (defaultPrevented) {\r\n return;\r\n }\r\n\r\n if (button !== undefined && button !== 0) {\r\n return;\r\n }\r\n\r\n if (target && target.getAttribute) {\r\n const linkTarget = target.getAttribute('target');\r\n if (/\\b_blank\\b/i.test(linkTarget)) {\r\n return;\r\n }\r\n }\r\n\r\n const url = new URL(target.href);\r\n if (window.location.pathname !== url.pathname && event.preventDefault) {\r\n event.preventDefault();\r\n router.push(withoutCulturePrefix(url.pathname + url.search + url.hash));\r\n }\r\n } else if (target && target.setAttribute && isHrefExternal(target.href, location.host)) {\r\n // Always open external links in new window and add rel=\"noopener\" attribute.\r\n const relAttribute: string = (target.getAttribute('rel') || '') + ' noopener';\r\n target.setAttribute('rel', relAttribute.trim());\r\n target.setAttribute('target', '_blank');\r\n }\r\n });\r\n }\r\n});\r\n\r\nfunction withoutCulturePrefix(url: string): string {\r\n if (url.indexOf(serverContext.siteInfo.url!) === 0) {\r\n return url.substr((serverContext.siteInfo.url!.length));\r\n }\r\n\r\n return url;\r\n}\r\n\r\n// returns true if href points to an external url\r\nfunction isHrefExternal(href: string, host: string = location.host): boolean {\r\n const external = RegExp('^((f|ht)tps?:)?//(?!' + host + ')');\r\n return external.test(href);\r\n}\r\n// if a href points to some files in the Umbraco /media folder\r\nfunction isHrefMedia(href: string, host: string = location.host): boolean {\r\n let pathname;\r\n if (href.indexOf('http') === 0) {\r\n const url = new URL(href);\r\n pathname = url.pathname;\r\n } else {\r\n pathname = href;\r\n }\r\n return pathname.indexOf('/media/') === 0;\r\n}\r\n\r\n// if a href points to external scheme e.g. (mailto:)\r\nfunction isExternalScheme(href: string): boolean {\r\n const externalScheme = RegExp('^(?:javascript|data|chrome|mailto|tel|sms|callto|mms|skype):.+$');\r\n return externalScheme.test(href);\r\n}\r\n","import Vue from 'vue';\r\n\r\nVue.directive('whole-numbers-only', {\r\n bind: function(el: any) {\r\n el.wholeNumbersHandler = function() {\r\n el.value = el.value.replace(/\\D+/, '');\r\n };\r\n el.addEventListener('input', el.wholeNumbersHandler);\r\n },\r\n unbind: function(el: any) {\r\n el.removeEventListener('input', el.wholeNumbersHandler);\r\n }\r\n});\r\n","import Vue from 'vue';\r\n\r\nVue.directive('autofocus', {\r\n inserted(el, binding) {\r\n // Handle usage with and without binding to expression\r\n if (!binding.expression || binding.value) {\r\n el.focus();\r\n }\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport { DirectiveBinding } from 'vue/types/options';\r\nimport viewportEvents, { Viewport } from '@/core/responsive/viewport/viewportEvents.service';\r\nimport breakpointsState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\n\r\nVue.directive('fontContentSync', {\r\n inserted(el:HTMLElement, binding: DirectiveBinding) {\r\n const viewportEventHandler = function(viewport: Viewport) {\r\n if (!binding.value) {\r\n throw new Error(`Pass an array with breakpoint tuples with their min, max in px.\r\n Should be ordered from highest breakpoint and down.\r\n Example: [\r\n [MIN_LG, { min: 7, max: 34 }],\r\n [MIN_MD, { min: 6, max: 22 }],\r\n [MIN_XS, { min: 5, max: 18 }]\r\n ]`);\r\n }\r\n if (!viewport.sizeChange) return; // Not interested in scroll events\r\n\r\n const activeSizes = binding.value.find(bpTuple => {\r\n return breakpointsState.isBreakpointActive(bpTuple[0]);\r\n });\r\n if (!activeSizes) return;\r\n const sizes = activeSizes[1];\r\n\r\n setFontSize(el, sizes.max);\r\n const isOriginallyWrapped = isWrapped(el, sizes.max);\r\n if (!isOriginallyWrapped) return;\r\n\r\n let fontSize = sizes.max;\r\n for (; fontSize >= sizes.min; --fontSize) {\r\n setFontSize(el, fontSize);\r\n if (!isWrapped(el, fontSize)) {\r\n break; // Success - unwrapped\r\n }\r\n }\r\n if (isWrapped(el, fontSize)) {\r\n // Still wrapped with minimum font - restore to original\r\n setFontSize(el, sizes.max);\r\n }\r\n\r\n function isWrapped(el: HTMLElement, fontSize: number) {\r\n // Somewhat naive approach: If parent height is more than double the font-size it's probably wrapped.\r\n return el.clientHeight > fontSize * 2;\r\n }\r\n\r\n function setFontSize(el: HTMLElement, fontSizeInPx: number) {\r\n el.style.fontSize = fontSizeInPx + 'px';\r\n }\r\n };\r\n el['data-eet-event-handler'] = viewportEventHandler;\r\n viewportEvents.setCallback(viewportEventHandler);\r\n },\r\n unbind(el: HTMLElement) {\r\n viewportEvents.removeCallback(el['data-eet-event-handler']);\r\n }\r\n});\r\n","import Vue from 'vue';\r\n\r\nfunction pluralize(amount: number, singular: string, plural: string) {\r\n return amount !== 1 ? plural : singular;\r\n}\r\n\r\nVue.filter('pluralize', pluralize);\r\n\r\nexport default pluralize;\r\n","import Vue from 'vue';\r\n\r\nfunction jsonFilter(obj: any) {\r\n return JSON.stringify(obj, undefined, 2);\r\n}\r\n\r\nVue.filter('json', jsonFilter);\r\n\r\nexport default jsonFilter;\r\n","import Vue from 'vue';\r\n\r\nfunction optionalProperty(obj: any, ...args: string[]) {\r\n const res = args.reduce((obj, level) => obj && obj[level], obj);\r\n return res || '';\r\n}\r\n\r\nVue.filter('op', optionalProperty);\r\n\r\nexport default optionalProperty;\r\n","import Vue from 'vue';\r\nimport bus from '@/core/bus';\r\nimport { BODY_SCROLL_LOCKED } from './scroll.service';\r\n\r\ninterface HTMLElementWithFunc extends HTMLElement {\r\n bodyScrollLocked: (gap: number) => void\r\n}\r\n\r\nVue.directive('syncBodylockGap', {\r\n inserted(el: HTMLElement) {\r\n const customEl = el as HTMLElementWithFunc;\r\n customEl.bodyScrollLocked = (scrollbarGap: number) => {\r\n el.style.paddingRight = scrollbarGap + 'px';\r\n };\r\n bus.on(BODY_SCROLL_LOCKED, customEl.bodyScrollLocked);\r\n },\r\n unbind(el: HTMLElement) {\r\n const customEl = el as HTMLElementWithFunc;\r\n bus.off(BODY_SCROLL_LOCKED, customEl.bodyScrollLocked);\r\n delete customEl.bodyScrollLocked;\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport VueAwesomeSwiper from 'vue-awesome-swiper';\r\n\r\n// import style (<= Swiper 5.x)\r\nimport 'swiper/css/swiper.css';\r\n\r\n// overwrites\r\nimport './swiper.less';\r\n\r\nVue.use(VueAwesomeSwiper);\r\n","import Vue from 'vue';\r\nimport * as GmapVue from 'gmap-vue';\r\n\r\nVue.use(GmapVue, {\r\n load: {\r\n key: 'AIzaSyB0DhEqDe1BWbbTGL_ycHBCjroikRYz9Eo',\r\n libraries: 'places' // This is required if you use the Autocomplete plugin\r\n // OR: libraries: 'places,drawing'\r\n // OR: libraries: 'places,drawing,visualization'\r\n // (as you require)\r\n\r\n /// / If you want to set the version, you can do so:\r\n // v: '3.26',\r\n },\r\n\r\n /// / If you intend to programmatically custom event listener code\r\n /// / (e.g. `this.$refs.gmap.$on('zoom_changed', someFunc)`)\r\n /// / instead of going through Vue templates (e.g. ``)\r\n /// / you might need to turn this on.\r\n // autobindAllEvents: false,\r\n\r\n /// / If you want to manually install components, e.g.\r\n /// / import {GmapMarker} from 'vue2-google-maps/src/components/marker'\r\n /// / Vue.component('GmapMarker', GmapMarker)\r\n /// / then set installComponents to 'false'.\r\n /// / If you want to automatically install all the components this property must be set to 'true':\r\n installComponents: false\r\n});\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._t(\"default\",null,{\"viewed\":_vm.viewed})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\n@Component\r\nexport default class Interceptor extends Vue {\r\n @Prop({ type: Number, required: false, default: 0 })\r\n private offset!: number;\r\n\r\n @Prop({ type: Number, required: false, default: 1.0 })\r\n private threshold!: number;\r\n\r\n @Prop({ type: Boolean, required: false })\r\n private keepObserving!: number;\r\n\r\n private viewed: boolean = false;\r\n\r\n private observer: IntersectionObserver | null = null;\r\n private observe(): void {\r\n const options: IntersectionObserverInit = { rootMargin: `${this.offset}px`, threshold: this.threshold };\r\n this.observer = new IntersectionObserver(entries => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n this.viewed = true;\r\n this.$emit('visible');\r\n if (!this.keepObserving) {\r\n this.unObserve();\r\n }\r\n } else {\r\n this.$emit('hidden');\r\n }\r\n });\r\n }, options);\r\n this.observer.observe(this.$el);\r\n }\r\n\r\n private unObserve(): void {\r\n if (this.observer) {\r\n this.observer.unobserve(this.$el);\r\n this.observer.disconnect();\r\n this.observer = null;\r\n }\r\n }\r\n\r\n mounted() {\r\n this.observe();\r\n }\r\n\r\n public destroyed() {\r\n this.unObserve();\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./intersection.observer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./intersection.observer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./intersection.observer.vue?vue&type=template&id=7f219716&\"\nimport script from \"./intersection.observer.vue?vue&type=script&lang=ts&\"\nexport * from \"./intersection.observer.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 Vue from 'vue';\r\nimport Interceptor from './intersection.observer.vue';\r\n\r\nVue.component('Interceptor', Interceptor);\r\n","\r\nimport Vue, { CreateElement } from 'vue';\r\nimport { Component, Prop } from 'vue-property-decorator';\r\nimport { Location, RawLocation } from 'vue-router';\r\nimport serverContextService from '@/core/serverContext.service';\r\n\r\n@Component\r\nexport default class CultureAwareRouterLink extends Vue {\r\n @Prop({ type: [Object, String], default: '' }) to!: RawLocation;\r\n @Prop({ type: String }) target!: string;\r\n\r\n render(h: CreateElement) {\r\n // If href / to is missing, render plain
\r\n if (!this.to) {\r\n return h('div', {\r\n attrs: { ...this.$attrs }\r\n }, this.$slots.default);\r\n }\r\n const isExternalLink = isOutgoingUrl(this.to);\r\n const linkTag = isExternalLink ? 'a' : 'router-link';\r\n\r\n const attrs = {\r\n ...this.$attrs,\r\n ...(!isExternalLink && { to: fixupUrl(this.to), target: this.target }),\r\n ...(isExternalLink && { href: this.to, target: '_blank', rel: 'noopener' })\r\n };\r\n\r\n const listeners = isExternalLink\r\n ? {\r\n // For 'a' tag, combine normal and native listeners (not allowed to put native events (e.g. click.native) on 'a' tag)\r\n on: {\r\n ...this.$listeners,\r\n ...this.$vnode?.data?.nativeOn\r\n }\r\n } : {\r\n on: this.$listeners\r\n };\r\n\r\n return h(linkTag, {\r\n attrs: attrs,\r\n ...listeners\r\n }, this.$slots.default);\r\n\r\n function fixupUrl(to: RawLocation): RawLocation {\r\n let path = isLocation(to) ? to.path : to;\r\n let hash: string | undefined;\r\n if (path) {\r\n const { path: tmp, hash: tmpHash } = removeTrailingSlashAndLowercase(path);\r\n if (isFrontpagePath(tmp)) {\r\n return '/' + (tmpHash || '');\r\n }\r\n\r\n path = hasCulturePrefix(tmp) ? withoutCulturePrefix(tmp) : tmp;\r\n hash = tmpHash;\r\n }\r\n\r\n if (!isLocation(to)) {\r\n return (path || '') + (hash || '');\r\n }\r\n\r\n const params = {\r\n ...to.params\r\n };\r\n for (const param in params) {\r\n params[param] = params[param].toLowerCase();\r\n }\r\n\r\n return {\r\n ...to,\r\n path,\r\n params,\r\n hash\r\n };\r\n\r\n function isFrontpagePath(to: string) {\r\n return to.endsWith(serverContextService.siteInfo.url!);\r\n }\r\n\r\n function hasCulturePrefix(to: string): boolean {\r\n return to.startsWith(serverContextService.siteInfo.url!);\r\n }\r\n\r\n function withoutCulturePrefix(url: string): string {\r\n return url.substr((serverContextService.siteInfo.url!.length));\r\n }\r\n\r\n function removeTrailingSlashAndLowercase(location: string): { path: string, hash?: string } {\r\n const [pathWithoutHash, hash] = location.split('#');\r\n const withoutTrailingSlash = pathWithoutHash.endsWith('/') && pathWithoutHash.length > 1 ? pathWithoutHash.slice(0, -1) : pathWithoutHash;\r\n // Lowercase path, but not query. We could have facets that are important to keep in original casing.\r\n let [path, query] = withoutTrailingSlash.split('?');\r\n path = path.toLowerCase().replaceAll(' ', '-').replaceAll('%20', '-');\r\n if (query) {\r\n return {\r\n path: path + '?' + query,\r\n hash: hash ? '#' + hash : undefined\r\n };\r\n }\r\n return {\r\n path: path,\r\n hash: hash ? '#' + hash : undefined\r\n };\r\n }\r\n }\r\n\r\n function isOutgoingUrl(to: RawLocation): boolean {\r\n const path = isLocation(to) ? to.path : to;\r\n if (!path) return false;\r\n\r\n let url;\r\n\r\n try {\r\n url = new URL(path);\r\n } catch (_) {\r\n return false;\r\n }\r\n\r\n return url.protocol === 'http:' || url.protocol === 'https:' || isExternalScheme(path);\r\n }\r\n\r\n function isLocation(to: RawLocation): to is Location {\r\n return typeof to === 'object';\r\n }\r\n\r\n // if a href points to external scheme e.g. (mailto:)\r\n function isExternalScheme(href: string): boolean {\r\n const externalScheme = RegExp('^(?:javascript|data|chrome|mailto|tel|sms|callto|mms|skype):.+$');\r\n return externalScheme.test(href);\r\n }\r\n }\r\n}\r\n","var render, staticRenderFns\nimport script from \"./culture-aware-router-link.vue?vue&type=script&lang=ts&\"\nexport * from \"./culture-aware-router-link.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/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./culture-aware-router-link.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./culture-aware-router-link.vue?vue&type=script&lang=ts&\"","\r\nimport Vue from 'vue';\r\nimport { map } from 'lodash';\r\nimport Component from 'vue-class-component';\r\nimport breakpointsState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\n\r\n// Define as many slots you want with their 'name' set to breakpoints:\r\n// \r\n//
\r\n// xx\r\n//
\r\n//
\r\n// yy\r\n//
\r\n//
- for all except md and xs\r\n//
\r\n//
\r\n\r\n@Component\r\nexport default class Breakpoint extends Vue {\r\n created() {\r\n if (!this.$slots) {\r\n throw new Error('You must provide at least 1 slot');\r\n }\r\n Object.keys(this.$slots).forEach(slotName => {\r\n if (this.$slots[slotName] && this.$slots[slotName]!.length !== 1) {\r\n throw new Error(`There must be exactly 1 element for each breakpoint slot. ${slotName} has ${this.$slots[slotName]!.length}`);\r\n }\r\n });\r\n }\r\n\r\n private render(h) {\r\n const visibleSlots = map(this.$slots, (slot, key) => {\r\n return {\r\n visible: breakpointsState.isBreakpointActive(key),\r\n slot\r\n };\r\n })\r\n .filter(x => x.visible)\r\n .map(x => x.slot);\r\n return visibleSlots.length && visibleSlots[0] ? visibleSlots[0][0] : undefined;\r\n }\r\n}\r\n","var render, staticRenderFns\nimport script from \"./Breakpoints.vue?vue&type=script&lang=ts&\"\nexport * from \"./Breakpoints.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/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Breakpoints.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Breakpoints.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"responsive-image\",class:{'responsive-image--loaded': _vm.lazyLoaded, 'responsive-image--lowsrc': _vm.lowsrc},style:(_vm.style)},[_c('img',{directives:[{name:\"on-error\",rawName:\"v-on-error\"}],ref:\"image\",attrs:{\"src\":_vm.src,\"alt\":_vm.alt,\"srcset\":_vm.srcset,\"sizes\":_vm.sizesFromWidthOnScreen},on:{\"load\":_vm.handleLoad}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport { keys, map, sortBy, zipObject } from 'lodash';\r\nimport breakpointService from '@/core/responsive/breakpoints/breakpoints.service';\r\nimport loggingService from '@/core/logging.service';\r\nimport breakpointsState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\nimport responsiveImageService from '@/core/responsive/image/responsiveImage.service';\r\n\r\nexport interface IResponsiveImageWidthOnScreenConfig {\r\n [key: string]: number;\r\n}\r\nexport interface IFocalPoint {\r\n left: number,\r\n top: number\r\n}\r\n\r\n@Component\r\nexport default class ResponsiveImage extends Vue {\r\n @Prop({ type: String, default: '' })\r\n private imageUrl!: string;\r\n\r\n @Prop({ type: [Object, Number], default: 100 })\r\n private widthOnScreen!: IResponsiveImageWidthOnScreenConfig | number;\r\n\r\n /* Can take a single aspectratio number, or an object with a number pr. breakpoint. If a 'default' is provided is will be used when no breakpoint is active:\r\n {\r\n xs: 16/9,\r\n min-sm,max-md: 4/3\r\n default: 1/2\r\n }\r\n */\r\n @Prop({ type: [Number, Object], default: 16 / 9 })\r\n private aspectRatio!: number | { [breakpoint: string]: number};\r\n\r\n @Prop({ type: Number, default: 200 })\r\n private offset!: number;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private lowsrc!: boolean;\r\n\r\n @Prop({ type: String, default: 'transparent' })\r\n private bgColor!: string;\r\n\r\n @Prop({ type: Number, default: 75, validator: (value) => value as number >= 1 && value as number <= 100 })\r\n private quality!: string;\r\n\r\n @Prop({ type: String, default: '' })\r\n private alt!: string;\r\n\r\n @Prop({ type: Object })\r\n private focalPoint!: IFocalPoint;\r\n\r\n @Prop({ type: String, default: 'crop', validator: value => ['crop', 'pad'].includes(value as string) })\r\n private mode!: string;\r\n\r\n @Prop({ type: String, default: 'jpg', validator: value => ['jpg', 'png', 'gif'].includes(value as string) })\r\n private format!: string;\r\n\r\n private sizes: Array = responsiveImageService.getSizes();\r\n\r\n private lazyInitialized: boolean = false;\r\n private lazyLoaded: boolean = false;\r\n private hasSrcsetSupport: boolean = true;\r\n private loadEventFired = true;\r\n\r\n private observer: IntersectionObserver | undefined;\r\n\r\n private get src(): string {\r\n if (!this.hasSrcsetSupport) {\r\n return this.fallbacksrc;\r\n }\r\n\r\n let lowSrc: string = '';\r\n\r\n if (this.lowsrc) {\r\n const lowSrcWidth = 100;\r\n const lowSrcQuality = 5;\r\n lowSrc = this.formatImageUrl(lowSrcWidth, this.heightFromWidth(lowSrcWidth), lowSrcQuality);\r\n } else {\r\n lowSrc = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\r\n }\r\n\r\n return lowSrc;\r\n }\r\n\r\n private get srcset(): string {\r\n let srcset: string = '';\r\n if (this.lazyInitialized && this.hasSrcsetSupport) {\r\n srcset = this.sizes\r\n .map(width => {\r\n return this.formatImageUrl(width, this.heightFromWidth(width)) + ` ${width}w`;\r\n })\r\n .join(', ');\r\n }\r\n return srcset;\r\n }\r\n\r\n private get fallbacksrc(): string {\r\n const width = this.sizes[this.sizes.length - 2]; // second largest\r\n return this.formatImageUrl(width, this.heightFromWidth(width));\r\n }\r\n\r\n private get sizesFromWidthOnScreen(): string {\r\n let sizes: string = '';\r\n\r\n if (typeof this.widthOnScreen === 'object') {\r\n sizes = map(this.sortConfigBySize(this.widthOnScreen), (width, screen) => {\r\n if (!breakpointService.getBreakpoint(screen)) {\r\n const errorMessage = `ResponsiveImage: Breakpoint ${screen} is not defined for imageUrl ${\r\n this.absoluteImageUrl\r\n }`;\r\n loggingService.warn(errorMessage);\r\n }\r\n return `(min-width: ${breakpointService.getBreakpoint(screen).min}px) ${width}vw`;\r\n }).join(',');\r\n sizes += ', 100vw';\r\n } else {\r\n sizes = `${this.widthOnScreen}vw`;\r\n }\r\n\r\n return sizes;\r\n }\r\n\r\n private get style(): Partial {\r\n if (this.aspectRatio === 0) {\r\n return {\r\n height: '100%',\r\n width: '100%'\r\n };\r\n }\r\n\r\n const padding = `${(100 / this.activeAspectRatio).toFixed(2)}%`;\r\n return { paddingTop: padding, background: `#${this.normalizedBgColor}` };\r\n }\r\n\r\n private heightFromWidth(width) {\r\n return Math.round(width / this.activeAspectRatio);\r\n }\r\n\r\n private get activeAspectRatio(): number {\r\n if (typeof this.aspectRatio === 'number') {\r\n return this.aspectRatio;\r\n }\r\n\r\n // Else - object with aspect-ratio pr. breakpoint-def.\r\n\r\n // Find first active breakpoint-def\r\n const activeBpDef = Object.keys(this.aspectRatio).find(bpDef => breakpointsState.isBreakpointActive(bpDef));\r\n // Use active or default\r\n const result = activeBpDef ? this.aspectRatio[activeBpDef] : this.aspectRatio.default;\r\n if (!result) {\r\n throw new Error('Provide a breakpoint-definition for all cases or a default');\r\n }\r\n return result;\r\n }\r\n\r\n private formatImageUrl(width: number, height: number, quality?: number): string {\r\n const firstSeparator = !this.imageUrl || this.imageUrl.indexOf('?') === -1 ? '?' : '&';\r\n const focal = this.focalPoint ? `¢er=${this.focalPoint.top},${this.focalPoint.left}` : '';\r\n const bgColor = this.normalizedBgColor === 'transparent' ? '' : `&bgcolor=${this.normalizedBgColor}`;\r\n return `${this.absoluteImageUrl}${firstSeparator}format=${this.format}&width=${width}&height=${height}&quality=${quality || this.quality}&mode=${this.mode}${focal}${bgColor}`;\r\n }\r\n\r\n private sortConfigBySize(config: IResponsiveImageWidthOnScreenConfig) {\r\n const sortedKeys = sortBy(keys(config), key => {\r\n return config[key];\r\n });\r\n\r\n return zipObject(\r\n sortedKeys,\r\n map(sortedKeys, function(key) {\r\n return config[key];\r\n })\r\n );\r\n }\r\n\r\n private handleLoad(r): void {\r\n this.loadEventFired = true;\r\n this.handleLoadedAndLazyInitialized();\r\n\r\n this.$emit('loaded');\r\n }\r\n\r\n private handleLoadedAndLazyInitialized(): void {\r\n if (this.lazyInitialized && this.loadEventFired) {\r\n this.lazyLoaded = true;\r\n }\r\n }\r\n\r\n private get normalizedBgColor(): string {\r\n return this.bgColor.replace('#', '');\r\n }\r\n\r\n private observe(): void {\r\n const options = { rootMargin: `${this.offset}px` };\r\n this.observer = new IntersectionObserver(entries => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n this.lazyInitialized = true;\r\n this.handleLoadedAndLazyInitialized();\r\n this.unObserve();\r\n }\r\n });\r\n }, options);\r\n this.observer.observe(this.$el);\r\n }\r\n\r\n private get absoluteImageUrl(): string {\r\n return responsiveImageService.getBaseUrl() + this.imageUrl;\r\n }\r\n\r\n private unObserve(): void {\r\n if (this.observer) {\r\n this.observer.disconnect();\r\n }\r\n }\r\n\r\n private mounted(): void {\r\n this.hasSrcsetSupport = this.$refs.image ? 'sizes' in this.$refs.image : true;\r\n this.observe();\r\n }\r\n\r\n public destroyed() {\r\n this.unObserve();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResponsiveImage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResponsiveImage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ResponsiveImage.vue?vue&type=template&id=27d431c4&scoped=true&\"\nimport script from \"./ResponsiveImage.vue?vue&type=script&lang=ts&\"\nexport * from \"./ResponsiveImage.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ResponsiveImage.vue?vue&type=style&index=0&id=27d431c4&lang=less&scoped=true&\"\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 \"27d431c4\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\r\n\r\nimport CultureAwareRouterLink from '@/core/dom/culture-aware-router-link.vue';\r\nimport Breakpoints from '@/core/responsive/breakpoints/Breakpoints.vue';\r\nimport ResponsiveImage from '@/core/responsive/image/ResponsiveImage.vue';\r\n\r\nVue.component('Breakpoints', Breakpoints);\r\nVue.component('CultureAwareRouterLink', CultureAwareRouterLink);\r\nVue.component('ResponsiveImage', ResponsiveImage);\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.image)?_c('ResponsiveIcon',{attrs:{\"image-url\":_vm.image.url,\"width\":_vm.image.width,\"height\":_vm.image.height,\"alt-text\":_vm.altText || _vm.image.name}}):_c('div')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport { Media } from '@/types/contentServerContract';\r\nimport ResponsiveIcon from '@/core/responsive/image/ResponsiveIcon.vue';\r\n@Component({\r\n name: 'ResponsiveIconWrap',\r\n components: {\r\n ResponsiveIcon\r\n }\r\n})\r\nexport default class ResponsiveIconWrap extends Vue {\r\n @Prop()\r\n private image!:Media;\r\n\r\n @Prop() altText!:string;\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResponsiveIconWrap.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResponsiveIconWrap.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ResponsiveIconWrap.vue?vue&type=template&id=9a3e30be&\"\nimport script from \"./ResponsiveIconWrap.vue?vue&type=script&lang=ts&\"\nexport * from \"./ResponsiveIconWrap.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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"fixed inset-0 z-overlay\"},[_c('transition',{attrs:{\"appear\":\"\",\"enter-active-class\":\"animated fadeIn u-anim-dur-350\",\"leave-active-class\":\"animated fadeOut u-anim-delay-100 u-anim-dur-500\"},on:{\"after-leave\":_vm.modalHidden}},[(_vm.isModalActive)?_c('div',{staticClass:\"overlay__blind\",class:{ '-disabled' : _vm.modal.disableUserClose }}):_vm._e()]),_c('transition',{attrs:{\"appear\":\"\",\"enter-active-class\":_vm.animationEnterClass,\"leave-active-class\":_vm.animationLeaveClass},on:{\"enter\":_vm.modalEntering,\"after-enter\":_vm.modalVisible,\"leave\":_vm.modalExiting}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isModalActive),expression:\"isModalActive\"}],ref:\"contentWrapper\",staticClass:\"modal\",class:{\n 'modal-entering': _vm.modal.state === 'entering',\n 'modal-visible': _vm.modal.state === 'visible'\n }},[_c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.vcoConfig),expression:\"vcoConfig\"}],staticClass:\"modal-dialog\",class:[_vm.overlayClasses, { 'wide': _vm.modal.wide }]},[_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"modal-body-wrap\",class:{ 'bg-white pt-30': _vm.modal.usePanelWrapper }},[_c('div',{staticClass:\"modal-body min-h-80 min-w-120\",class:{ 'pt-0 pb-15 px-20 md:pb-15 md:pb-35 md:px-40 scrolling-touch': _vm.modal.usePanelWrapper, 'modal-body__maxheight': _vm.modal.contentMaxHeight }},[_vm._t(\"default\")],2)]),(_vm.modal.showCloseButton && !_vm.modal.disableUserClose)?_c('button',{staticClass:\"overlay__close\",class:_vm.closeButtonClass,attrs:{\"aria-label\":\"Close\"},on:{\"click\":_vm.hideModal}},[_c('c-icon',{staticClass:\"close-cross\",attrs:{\"name\":\"close\"}})],1):_vm._e()])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop, Watch } from 'vue-property-decorator';\r\nimport { IModal, ModalState } from '@/core/modals/ModalState';\r\nimport { Route } from 'vue-router/types';\r\nimport scrollService from '@/core/scroll/scroll.service';\r\nimport escEventService from '@/core/esc-event.service';\r\nimport breakpointsState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\n\r\n@Component\r\nexport default class ModalOverlay extends Vue {\r\n @Prop({ type: Object, required: true })\r\n private modal!: IModal;\r\n\r\n private get isModalActive() {\r\n return this.modal.state === 'entering' || this.modal.state === 'visible';\r\n }\r\n\r\n private modalEntering(el: HTMLElement) {\r\n if (this.modal.disableBodyScroll) {\r\n scrollService.disableBodyScroll(el);\r\n }\r\n }\r\n\r\n private modalVisible(el: HTMLElement) {\r\n this.modal.state = 'visible';\r\n }\r\n\r\n private modalExiting(el: HTMLElement) {\r\n if (this.modal.disableBodyScroll) {\r\n this.modal.disableBodyScroll = false;\r\n scrollService.enableBodyScroll(this.$refs.contentWrapper);\r\n }\r\n }\r\n\r\n private modalHidden(el: HTMLElement) {\r\n this.modal.state = 'hidden';\r\n this.modal.deferred.resolve(this.modal.data);\r\n }\r\n\r\n vcoConfig = {\r\n handler: this.hideModal,\r\n middleware: this.clickOutsideMiddleware,\r\n events: ['mousedown', 'mouseup']\r\n }\r\n\r\n clickOutsideMouseDownElm = null;\r\n\r\n clickOutsideMiddleware(event) {\r\n if (event.type === 'mousedown') {\r\n this.clickOutsideMouseDownElm = event.target;\r\n return false;\r\n }\r\n const isClickedOutside = event.target === this.clickOutsideMouseDownElm;\r\n this.clickOutsideMouseDownElm = null;\r\n return isClickedOutside;\r\n }\r\n\r\n private hideModal() {\r\n if (this.modal.disableUserClose) {\r\n return;\r\n }\r\n\r\n escEventService.unregister(this.hideModal);\r\n ModalState.hideModal(this.modal.id);\r\n }\r\n\r\n private get animationEnterClass() {\r\n const animTypes = {\r\n left: 'slideInLeft',\r\n right: 'slideInRight',\r\n top: 'slideInDown',\r\n center: 'zoomIn',\r\n modal: 'zoomIn'\r\n };\r\n return this.animationClass(animTypes) + ' u-anim-delay-100 u-anim-dur-300 u-anim-ease-out';\r\n }\r\n\r\n private get animationLeaveClass() {\r\n const animTypes = {\r\n left: 'slideOutLeft',\r\n right: 'slideOutRight',\r\n top: 'slideOutDown',\r\n modal: 'fadeOut',\r\n center: 'fadeOut'\r\n };\r\n return this.animationClass(animTypes) + ' u-anim-dur-200 u-anim-ease-in';\r\n }\r\n\r\n private animationClass(animTypes: { [side: string]: string }) {\r\n return `animated ${animTypes[this.modal.placement]}`;\r\n }\r\n\r\n private get overlayClasses(): string | object {\r\n if (!this.modal.contentAutoScroll) {\r\n return this.modal.placement;\r\n }\r\n\r\n return {\r\n [this.modal.placement]: true\r\n };\r\n }\r\n\r\n private get activeBreakpoint() {\r\n return breakpointsState.activeBreakpoint;\r\n }\r\n\r\n private get closeButtonClass(): string {\r\n return this.modal.closeButtonPosition || 'right-075';\r\n }\r\n\r\n @Watch('activeBreakpoint')\r\n onBreakpointChange(activeBp: string, oldBp: string) {\r\n if (this.modal.closeOnBreakpointChange && activeBp !== oldBp) {\r\n this.hideModal();\r\n }\r\n }\r\n\r\n @Watch('$route')\r\n onRouteChange(to: Route, from: Route) {\r\n if (this.modal.closeOnRouteChange && to.path !== from.path) {\r\n this.hideModal();\r\n }\r\n }\r\n\r\n $refs!: Vue['$refs'] & {\r\n contentWrapper: HTMLElement\r\n }\r\n\r\n created() {\r\n escEventService.register(this.hideModal);\r\n }\r\n\r\n beforeDestroy() {\r\n if (this.modal.disableBodyScroll) {\r\n scrollService.enableBodyScroll(this.$refs.contentWrapper);\r\n }\r\n\r\n escEventService.unregister(this.hideModal);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalOverlay.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalOverlay.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ModalOverlay.vue?vue&type=template&id=188b23dc&scoped=true&\"\nimport script from \"./ModalOverlay.vue?vue&type=script&lang=ts&\"\nexport * from \"./ModalOverlay.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ModalOverlay.vue?vue&type=style&index=0&id=188b23dc&lang=less&scoped=true&\"\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 \"188b23dc\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.product)?_c('div',{staticClass:\"product-tile\",class:{ 'horizontal': _vm.isInHorizontalMode, 'vertical': _vm.isInVerticalMode }},[(!_vm.isBid && _vm.isInHorizontalMode)?_c('ProductTileCampaign',{staticClass:\"product-campaign\",class:{ 'horizontal': _vm.isInHorizontalMode, 'vertical': _vm.isInVerticalMode },attrs:{\"product\":_vm.product}}):_vm._e(),(_vm.isInVerticalMode)?_c('div',{staticClass:\"absolute top-0 right-1 flex flex-col items-end\"},[(_vm.product.conditionCode)?_c('ProductTileCondition',{staticClass:\"mb-3\",attrs:{\"product\":_vm.product,\"condensed-mode\":\"\"}}):_vm._e()],1):_vm._e(),_c('ProductTileImage',{staticClass:\"product-image\",class:{ 'horizontal': _vm.isInHorizontalMode, 'vertical': _vm.isInVerticalMode },attrs:{\"mode\":_vm.mode,\"product\":_vm.product,\"product-click\":_vm.rawProductClick}}),_c('ProductTileDetails',{staticClass:\"product-details\",class:{ 'horizontal': _vm.isInHorizontalMode, 'vertical': _vm.isInVerticalMode },attrs:{\"mode\":_vm.mode,\"product\":_vm.product,\"bid\":_vm.bid,\"stock\":{ loaded: _vm.stockLoaded, data: _vm.stockData, simpleData: _vm.simpleStockData },\"number-of-stock-labels\":_vm.numberOfStockLabels,\"nested\":_vm.nested,\"has-bids\":_vm.hasBids,\"has-alternatives\":_vm.hasAlternatives,\"has-accessories\":_vm.hasAccessories,\"is-logged-in\":_vm.isUserLoggedIn,\"show\":_vm.showTileMenu,\"product-click\":_vm.rawProductClick},on:{\"update:show\":function($event){_vm.showTileMenu=$event},\"toggleMenu\":_vm.toggleMenu}}),(!_vm.isExternalProductGuide && _vm.isInHorizontalMode)?_c('ProductTileFavorite',{staticClass:\"product-favorite md:pr-4\",attrs:{\"product\":_vm.product,\"is-logged-in\":_vm.isUserLoggedIn}}):_vm._e(),_c('ProductTileCart',{staticClass:\"product-cart\",class:{ 'horizontal': _vm.isInHorizontalMode, 'vertical': _vm.isInVerticalMode },attrs:{\"mode\":_vm.mode,\"product\":_vm.product,\"bid\":_vm.bid,\"price\":{ loaded: _vm.pricesLoaded, data: _vm.priceData },\"is-logged-in\":_vm.isUserLoggedIn,\"product-click\":_vm.rawProductClick},on:{\"add-to-basket-change\":_vm.addToBasketChange}})],1):_vm._e(),(!_vm.isExternalProductGuide && _vm.isInHorizontalMode && !_vm.nested && !_vm.isBid && (_vm.hasBids || _vm.hasAlternatives || _vm.hasAccessories))?_c('Breakpoints',[_c('ProductTileMenu',{staticClass:\"product-tile-menu\",attrs:{\"slot\":\"min-md\",\"product\":_vm.product,\"show\":_vm.showTileMenu,\"bids\":_vm.bidsData,\"alternatives\":_vm.product.alternatives,\"accessories\":_vm.product.accessories},on:{\"update:show\":function($event){_vm.showTileMenu=$event}},slot:\"min-md\"})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.product.isNew && !_vm.activeCampaign)?_c('c-icon',{attrs:{\"name\":\"splash-new\",\"fill\":true,\"original\":true,\"title\":_vm._f(\"t\")('Product.Campaign.NewProduct')}}):(_vm.activeCampaign && _vm.showCampaignIcon)?_c('div',{staticClass:\"campaign-image\"},[_c('c-icon',{attrs:{\"name\":_vm.defaultCampaignIcon,\"fill\":true,\"original\":true}}),_c('div',{staticClass:\"campaign-image__icon\"},[(_vm.campaignIconUrl)?_c('img',{directives:[{name:\"on-error\",rawName:\"v-on-error\"}],attrs:{\"src\":_vm.campaignIconUrl,\"alt\":\"campaign-icon\"}}):_vm._e()])],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Prop, Component } from 'vue-property-decorator';\r\nimport { CampaignViewObject, ProductTileViewObject } from '@/types/apiServerContract';\r\n\r\n@Component\r\nexport default class ProductTileCampaign extends Vue {\r\n @Prop({ required: true })\r\n private product!: ProductTileViewObject;\r\n\r\n private get activeCampaign(): CampaignViewObject | null {\r\n return this.product.campaigns[0];\r\n }\r\n\r\n private get showCampaignIcon() {\r\n return !!this.activeCampaign?.showCampaignIcon && !!this.activeCampaign?.description;\r\n }\r\n\r\n private get campaignIconUrl() {\r\n return this.activeCampaign?.campaignIconUrl;\r\n }\r\n\r\n private get defaultCampaignIcon() {\r\n return this.campaignIconUrl ? 'splash-campaign-no-icon' : 'splash-campaign';\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileCampaign.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileCampaign.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductTileCampaign.vue?vue&type=template&id=369ddabc&scoped=true&\"\nimport script from \"./ProductTileCampaign.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductTileCampaign.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductTileCampaign.vue?vue&type=style&index=0&id=369ddabc&lang=less&scoped=true&\"\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 \"369ddabc\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('CultureAwareRouterLink',{staticClass:\"product-title hover:underline\",attrs:{\"to\":_vm.productDetailsUrl,\"target\":_vm.productDetailsUrlTarget},nativeOn:{\"click\":function($event){return _vm.productClick()}}},[_c('div',{staticClass:\"xs:text-13 lg:text-14 font-bold text-black\"},[(_vm.bid)?_c('span',{staticClass:\"block\"},[_vm._v(\" \"+_vm._s(_vm.bid.description)+\" \"+_vm._s(_vm.bid.bidNo)+\" \")]):_vm._e(),_c('span',{directives:[{name:\"line-clamp\",rawName:\"v-line-clamp:16\",value:(_vm.lineClampDisplayName),expression:\"lineClampDisplayName\",arg:\"16\"}],class:{'text-12': _vm.bid}},[_vm._v(\" \"+_vm._s(_vm.product.displayName)+\" \")])])]),(_vm.product.subLine || _vm.bid)?_c('div',{staticClass:\"product-description text-12 text-black font-medium\"},[(_vm.product.subLine)?_c('span',{directives:[{name:\"line-clamp\",rawName:\"v-line-clamp:16\",value:(1),expression:\"1\",arg:\"16\"}],staticClass:\"text-12\"},[_vm._v(\" \"+_vm._s(_vm.product.subLine)+\" \")]):_vm._e(),(_vm.bid)?[_c('p',{directives:[{name:\"line-clamp\",rawName:\"v-line-clamp:16\",value:(1),expression:\"1\",arg:\"16\"}],staticClass:\"mt-5\"},[_vm._v(\" \"+_vm._s(_vm.bid.shortProductDescription)+\" \")]),_c('ProductTileInfo',{staticClass:\"product-info\",attrs:{\"product\":_vm.product}})]:_vm._e()],2):_vm._e(),_c('div',{staticClass:\"product-misc\"},[(_vm.isInHorizontalMode && !_vm.bid)?_c('ProductTileInfo',{staticClass:\"product-info\",attrs:{\"product\":_vm.product}}):_vm._e(),(_vm.product.conditionCode && _vm.isInHorizontalMode)?_c('ProductTileCondition',{staticClass:\"product-condition\",attrs:{\"product\":_vm.product}}):_vm._e(),(_vm.bid)?_c('ProductTileBid',{staticClass:\"product-bid\",attrs:{\"bid\":_vm.bid}}):_vm._e()],1),_c('ProductTileStock',{class:{'items-end flex-grow': _vm.isInVerticalMode },attrs:{\"tile-mode\":\"\",\"item-id\":_vm.product.itemId,\"stock\":_vm.stock,\"ignore-notify-me\":_vm.isInVerticalMode,\"number-of-stock-labels\":_vm.numberOfStockLabels,\"popover-trigger-as-icon-only\":_vm.isInVerticalMode,\"is-limited-item\":_vm.isLimitedItem,\"is-logged-in\":_vm.isLoggedIn}}),(!_vm.isExternalProductGuide && _vm.isInHorizontalMode && !_vm.nested && (_vm.hasBids || _vm.hasAlternatives || _vm.hasAccessories))?_c('Breakpoints',[_c('div',{staticClass:\"product-expanded\",attrs:{\"slot\":\"min-md\"},slot:\"min-md\"},[_c('span',{staticClass:\"expand-action text-11 xl:text-12 theme-text-linkcolor\",on:{\"click\":function($event){return _vm.toggleMenu()}}},[_c('span',[_vm._v(\" \"+_vm._s(_vm._f(\"t\")(_vm.dropdownLabel))+\" \")]),_c('c-icon',{staticClass:\"ml-5\",class:{ 'svg-down': _vm.show },attrs:{\"height\":\"8\",\"width\":\"8\",\"name\":\"arrow-down\"}})],1)])]):_vm._e(),(_vm.product.score != null || _vm.product.salesIndex != null)?_c('div',{staticClass:\"product-score text-12 whitespace-no-wrap\"},[_c('span',{staticClass:\"font-bold\"},[_vm._v(\" score: \"+_vm._s(_vm.product.score)+\" / salesindex: \"+_vm._s(_vm.product.salesIndex)+\" \")])]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"product-info-titles text-left font-medium text-12\"},[(_vm.mpn)?_c('div',{staticClass:\"truncate\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Info.MPN'))+\" \")]):_vm._e(),(_vm.itemId)?_c('div',{staticClass:\"truncate\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Info.ItemNumber'))+\" \")]):_vm._e()]),_c('div',{staticClass:\"product-info-values text-left font-medium text-12 overflow-hidden\"},[(_vm.mpn)?_c('div',{staticClass:\"truncate relative\"},[_c('copy-text',[_c('span',{staticClass:\"copy-text\",attrs:{\"title\":_vm.mpn}},[_vm._v(_vm._s(_vm.mpn))])])],1):_vm._e(),(_vm.itemId)?_c('div',{staticClass:\"truncate relative\"},[_c('copy-text',[_c('span',{staticClass:\"copy-text\",attrs:{\"title\":_vm.itemId}},[_vm._v(_vm._s(_vm.itemId))])])],1):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Prop, Component } from 'vue-property-decorator';\r\nimport { ProductTileViewObject } from '@/types/apiServerContract';\r\nimport CopyText from '@/project/shared/CopyText.vue';\r\nimport serverContextService from '@/core/serverContext.service';\r\n\r\n@Component({ components: { CopyText } })\r\nexport default class ProductTileInfo extends Vue {\r\n @Prop({ required: true }) product!: ProductTileViewObject;\r\n\r\n get itemId(): string | null {\r\n if (serverContextService.isExternalProductGuide) return null;\r\n return (this.product.mpn !== this.product.itemId && this.product.itemId) || null;\r\n }\r\n\r\n get mpn(): string | null {\r\n return this.product.mpn || null;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileInfo.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileInfo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductTileInfo.vue?vue&type=template&id=27d2cfa3&\"\nimport script from \"./ProductTileInfo.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductTileInfo.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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Prop, Component } from 'vue-property-decorator';\r\nimport { ProductTileViewObject, StockInformationViewObject, BidViewObject } from '@/types/apiServerContract';\r\n\r\nimport ProductTileInfo from './ProductTileInfo.vue';\r\nimport ProductTileCondition from './ProductTileCondition.vue';\r\nimport ProductTileStock from './ProductTileStock.vue';\r\nimport ProductTileBid from './ProductTileBid.vue';\r\nimport serverContextService from '@/core/serverContext.service';\r\n\r\n@Component({\r\n components: { ProductTileInfo, ProductTileCondition, ProductTileStock, ProductTileBid }\r\n})\r\nexport default class ProductTileDetails extends Vue {\r\n @Prop({ required: true }) product!: ProductTileViewObject;\r\n @Prop({ required: true }) bid!: BidViewObject | null;\r\n @Prop({ required: false }) numberOfStockLabels!: number;\r\n @Prop({ required: true }) isLoggedIn!: boolean;\r\n @Prop({ required: true }) stock!: { loaded: boolean, data: StockInformationViewObject[], simpleData: StockInformationViewObject[] };\r\n @Prop({ required: true }) show!: boolean;\r\n @Prop({ required: true }) hasBids!: boolean;\r\n @Prop({ required: true }) hasAlternatives!: boolean;\r\n @Prop({ required: true }) hasAccessories!: boolean;\r\n @Prop({ required: true }) nested!: boolean;\r\n @Prop({ required: true, type: Function }) productClick!: () => void;\r\n @Prop({ required: false, type: String, default: 'horizontal' }) mode!: 'vertical' | 'horizontal' | 'horizontal-tiny';\r\n\r\n private get isInVerticalMode() {\r\n return this.mode === 'vertical';\r\n }\r\n\r\n private get isInHorizontalMode() {\r\n return this.mode === 'horizontal' || this.mode === 'horizontal-tiny';\r\n }\r\n\r\n private toggleMenu() {\r\n this.$emit('toggleMenu');\r\n }\r\n\r\n private get productDetailsUrl() {\r\n return serverContextService.productUrl(this.product);\r\n }\r\n\r\n private get productDetailsUrlTarget() {\r\n return serverContextService.externalProductLinkTarget;\r\n }\r\n\r\n private get isLimitedItem() {\r\n return this.isInHorizontalMode && this.product.blocking === 2; // LIMITED ITEM\r\n }\r\n\r\n // Loaded via IFrame\r\n get isExternalProductGuide() {\r\n return serverContextService.isExternalProductGuide;\r\n }\r\n\r\n private get dropdownLabel() {\r\n const hasBids = this.hasBids;\r\n const hasAlt = this.hasAlternatives;\r\n const hasAcc = this.hasAccessories;\r\n\r\n const bidKey = 'bids';\r\n const altKey = 'alt';\r\n const accKey = 'rel';\r\n\r\n const possibleCombinations = {\r\n /* 1 */ [bidKey]: 'Product.Bids',\r\n /* 2 */ [altKey]: 'Product.Alternatives',\r\n /* 3 */ [accKey]: 'Product.Accessories',\r\n /* 1 + 2 */ [bidKey + altKey]: 'Product.BidsAndAlternatives',\r\n /* 1 + 3 */ [bidKey + accKey]: 'Product.BidsAndAccessories',\r\n /* 2 + 3 */ [altKey + accKey]: 'Product.AlternativesAndAccessories',\r\n /* 1 + 2 + 3 */ [bidKey + altKey + accKey]: 'Product.BidsAlternativesAccessories'\r\n };\r\n\r\n const key = `${hasBids ? bidKey : ''}${hasAlt ? altKey : ''}${hasAcc ? accKey : ''}`;\r\n return possibleCombinations[key];\r\n }\r\n\r\n get lineClampDisplayName(): number {\r\n return this.product.subLine ? 2 : 3;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileDetails.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileDetails.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductTileDetails.vue?vue&type=template&id=1fb2d892&scoped=true&\"\nimport script from \"./ProductTileDetails.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductTileDetails.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductTileDetails.vue?vue&type=style&index=0&id=1fb2d892&lang=less&scoped=true&\"\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 \"1fb2d892\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Accordion',{ref:\"accordion\",attrs:{\"tag\":\"div\",\"hide-header\":\"\",\"keep-alive\":\"\"}},[_c('div',{staticClass:\"product-menu bg-blue-300 oprema:bg-opremablue-75\"},[(_vm.activated)?[_c('button',{staticClass:\"overlay__close\",attrs:{\"aria-label\":\"Close\"},on:{\"click\":function($event){return _vm.$emit('update:show', false);}}},[_c('c-icon',{staticClass:\"close-cross\",attrs:{\"name\":\"close\",\"height\":\"12\",\"width\":\"12\"}})],1),_c('Tabs',{attrs:{\"header-class\":\"mb-20\"},on:{\"changed\":_vm.tabsChanged,\"init\":_vm.tabsInit},scopedSlots:_vm._u([{key:\"header\",fn:function(ref){\nvar title = ref.title;\nreturn [_c('span',[_vm._v(\" \"+_vm._s(_vm._f(\"t\")(title))+\" \")])]}}],null,false,287418003)},[(_vm.product.hasAccessories)?_c('Tab',{attrs:{\"name\":\"ProductAccessoriesRecommended\",\"selected\":_vm.activeTab === 'ProductAccessoriesRecommended',\"keep-alive\":\"\"}},[(_vm.labelAccessoriesText)?_c('p',{staticClass:\"text-13 lg:text-14 mb-15\"},[_vm._v(\" \"+_vm._s(_vm.labelAccessoriesText)+\" \")]):_vm._e(),_c('ProductAccessoriesSearchControl',{attrs:{\"product-id\":_vm.product.wid},on:{\"loaded\":_vm.handleRelationLoaded},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar products = ref.products;\nreturn [_c('CondensedProductList',{attrs:{\"products\":products,\"tracking-list-name\":(\"relations-\" + _vm.contextForTrackingListNameRouteOrSearch + \"-accessories\"),\"product-bg-color\":\"white\"}})]}}],null,false,2314925248)})],1):_vm._e(),(_vm.product.hasExactAlternatives || _vm.product.hasSimilarAlternatives)?_c('Tab',{attrs:{\"name\":'Product.Relations.ProductAlternatives',\"selected\":_vm.activeTab === 'Product.Relations.ProductAlternatives',\"keep-alive\":\"\"}},[(_vm.product.hasExactAlternatives)?_c('div',[_c('div',{staticClass:\"text-13 lg:text-14 font-bold mb-5\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Relations.ProductRelatedProductExact'))+\" \")]),_c('ProductAccessoriesSearchControl',{attrs:{\"product-id\":_vm.product.wid,\"relation-type\":_vm.ProductRelationType.exactAlternatives},on:{\"loaded\":_vm.handleRelationLoaded},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar products = ref.products;\nreturn [_c('CondensedProductList',{attrs:{\"products\":products,\"tracking-list-name\":(\"relations-\" + _vm.contextForTrackingListNameRouteOrSearch + \"-\" + (_vm.ProductRelationType.exactAlternatives)),\"product-bg-color\":\"white\"}})]}}],null,false,3303968104)})],1):_vm._e(),(_vm.product.hasSimilarAlternatives)?_c('div',[_c('div',{staticClass:\"text-13 lg:text-14 font-bold mb-5\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Relations.ProductRelatedProductSimilar'))+\" \")]),_c('ProductAccessoriesSearchControl',{attrs:{\"product-id\":_vm.product.wid,\"relation-type\":_vm.ProductRelationType.similarAlternatives},on:{\"loaded\":_vm.handleRelationLoaded},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar products = ref.products;\nreturn [_c('CondensedProductList',{attrs:{\"products\":products,\"tracking-list-name\":(\"relations-\" + (_vm.$route.name) + \"-\" + (_vm.ProductRelationType.similarAlternatives)),\"product-bg-color\":\"white\"}})]}}],null,false,115321074)})],1):_vm._e()]):_vm._e(),(_vm.bids && _vm.bids.length)?_c('Tab',{attrs:{\"name\":\"Product.Menu.Tab.Bids\",\"selected\":\"\",\"keep-alive\":\"\"}},[_c('CondensedProductList',{attrs:{\"products\":_vm.bids,\"tracking-list-name\":(\"bids-\" + _vm.contextForTrackingListNameRouteOrSearch + \"-bids\"),\"product-bg-color\":\"white\"}})],1):_vm._e()],1)]:_vm._e(),(!_vm.activated)?_c('SpinnerOverlay',{attrs:{\"show\":\"\"}}):_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport { ProductRelationViewObject, ProductTileViewObject } from '@/types/apiServerContract';\r\nimport CondensedProductList from '@/project/product/condensed/CondensedProductList.vue';\r\nimport ProductAccessoriesSearchControl, {\r\n ProductRelationType\r\n} from '@/project/product/product-tile/ProductRelationSearchControl.vue';\r\nimport Accordion from '@/core/ui-components/Accordion.vue';\r\nimport IAccordion from '@/core/ui-components/IAccordion';\r\nimport Tabs from '@/core/ui-components/tabs/Tabs.vue';\r\nimport Tab from '@/core/ui-components/tabs/Tab.vue';\r\nimport SpinnerOverlay from '@/project/spinners/SpinnerOverlay.vue';\r\nimport Temporary from '@/core/ui-components/Temporary.vue';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\nimport urlHelper from '@/core/urlHelper.service';\r\n\r\n@Component({\r\n components: { Temporary, Tabs, Tab, SpinnerOverlay, Accordion, CondensedProductList, ProductAccessoriesSearchControl }\r\n})\r\nexport default class ProductTileMenu extends Vue {\r\n @Prop({ required: true }) product!: ProductTileViewObject;\r\n @Prop({ required: true }) bids!: ProductTileViewObject[];\r\n @Prop({ required: true }) accessories!: ProductRelationViewObject[];\r\n @Prop({ required: true }) alternatives!: ProductRelationViewObject[];\r\n @Prop({ required: true, default: false }) show!: boolean;\r\n\r\n public activated: boolean = false; // We have this to make sure we dont fetch everything on page load, but we keep it cached if the user opens the menu\r\n private loaded: boolean = false;\r\n private activeTab: string = '';\r\n\r\n public open() {\r\n this.$refs.accordion.open();\r\n }\r\n\r\n public close() {\r\n this.$refs.accordion.close();\r\n }\r\n\r\n private tabsChanged(tabName: string) {\r\n this.activeTab = tabName;\r\n }\r\n\r\n private tabsInit(tabName) {\r\n this.activeTab = tabName;\r\n }\r\n\r\n get labelAccessoriesText(): string | null {\r\n const bodyTextKey = 'Product.Relations.ProductAccessoriesRecommended.BodyText';\r\n return dictionaryService.exists(bodyTextKey) ? dictionaryService.get(bodyTextKey) : null;\r\n }\r\n\r\n private handleRelationLoaded(relationType: string) {\r\n this.loaded = true;\r\n }\r\n\r\n get ProductRelationType() {\r\n return ProductRelationType;\r\n }\r\n\r\n get contextForTrackingListNameRouteOrSearch(): string {\r\n return ((urlHelper.getTerm()) ? 'search' : this.$route.name) || '';\r\n }\r\n\r\n @Watch('show')\r\n onShowChange(state: boolean) {\r\n if (state && !this.activated) {\r\n this.activated = true;\r\n }\r\n\r\n state ? this.open() : this.close();\r\n }\r\n\r\n public $refs!: Vue['$refs'] & {\r\n accordion: IAccordion\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductTileMenu.vue?vue&type=template&id=4750c252&scoped=true&\"\nimport script from \"./ProductTileMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductTileMenu.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductTileMenu.vue?vue&type=style&index=0&id=4750c252&lang=less&scoped=true&\"\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 \"4750c252\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport {\r\n BidViewObject,\r\n ProductTileViewObject,\r\n StockInformationViewObject\r\n} from '@/types/apiServerContract';\r\nimport simplePriceFetchService, { PriceSimpleDataExtended } from '@/project/product/services/simplePriceFetch.service';\r\nimport stockFetchService from '@/project/product/services/stockFetch.service';\r\nimport productBidsFetchService from '@/project/product/services/productBidsFetch.service';\r\n\r\nimport authService from '@/core/auth/auth.service';\r\n\r\nimport ProductTileCampaign from './ProductTileCampaign.vue';\r\nimport ProductTileImage from './ProductTileImage.vue';\r\nimport ProductTileDetails from './ProductTileDetails.vue';\r\nimport ProductTileFavorite from './ProductTileFavorite.vue';\r\nimport ProductTileCart from './ProductTileCart.vue';\r\nimport ProductTileMenu from './ProductTileMenu.vue';\r\nimport GTMService, { ProductTrackingState, TrackingProduct } from '@/project/tracking/gtm/GTM.service';\r\nimport { TrackingProductAndElement } from '@/project/tracking/gtm/types';\r\nimport ProductTileDiscount from './ProductTileDiscounts.vue';\r\nimport ProductTileCondition from './ProductTileCondition.vue';\r\nimport serverContextService from '@/core/serverContext.service';\r\nimport Api from '@/project/http/Api.service';\r\nimport bus from '@/core/bus';\r\nimport { ProductTrackerProcessBatchKey } from '@/project/tracking/gtm/ProductListTracker.vue';\r\n\r\n@Component({\r\n components: {\r\n ProductTileCampaign,\r\n ProductTileImage,\r\n ProductTileDetails,\r\n ProductTileFavorite,\r\n ProductTileCart,\r\n ProductTileMenu,\r\n ProductTileDiscount,\r\n ProductTileCondition\r\n }\r\n})\r\nexport default class ProductTile extends Vue {\r\n @Prop({ required: true }) product!: ProductTileViewObject;\r\n @Prop({ required: false, default: false, type: Boolean }) nested!: boolean;\r\n @Prop({ required: false, default: false, type: Boolean }) isBid!: boolean;\r\n @Prop({ required: true, type: Function }) productClick!: (product: TrackingProduct) => void;\r\n @Prop({ required: false, type: String, default: '' }) trackingListName!: string;\r\n @Prop({ required: false, type: String, default: 'horizontal' }) mode!: 'vertical' | 'horizontal' | 'horizontal-tiny';\r\n @Prop({ required: false, type: String, default: '' }) tileClass!: string;\r\n @Prop({ required: false }) numberOfStockLabels!: number;\r\n\r\n private get isInVerticalMode() {\r\n return this.mode === 'vertical';\r\n }\r\n\r\n private get isInHorizontalMode() {\r\n return this.mode === 'horizontal' || this.mode === 'horizontal-tiny';\r\n }\r\n\r\n private priceData: PriceSimpleDataExtended | null = null;\r\n private stockData: readonly StockInformationViewObject[] | null = null;\r\n private simpleStockData: readonly StockInformationViewObject[] | null = null;\r\n private bidsData: readonly ProductTileViewObject[] | null = null;\r\n private showTileMenu: boolean = false;\r\n private isERPServiceAvailable = true;\r\n\r\n private pricesLoaded: boolean = false;\r\n private stockLoaded: boolean = false;\r\n private bidsLoaded: boolean = false;\r\n\r\n private cancellationCallbacks: (() => void)[] = [];\r\n\r\n private get bid(): BidViewObject | null | undefined {\r\n return this.isBid ? this.product as any as BidViewObject : this.product.bid;\r\n }\r\n\r\n private get hasBids() {\r\n return this.bidsData && this.bidsData.length > 0;\r\n }\r\n\r\n private get hasAlternatives() {\r\n return !this.isBid && (this.product.hasSimilarAlternatives || this.product.hasExactAlternatives);\r\n }\r\n\r\n private get hasAccessories() {\r\n return !this.isBid && (this.product.hasAccessories);\r\n }\r\n\r\n private isInStock() {\r\n return this.stockData && this.stockData.length > 0;\r\n }\r\n\r\n async toggleMenu() {\r\n this.showTileMenu = !this.showTileMenu;\r\n }\r\n\r\n get isUserLoggedIn(): boolean {\r\n return authService.isLoggedIn();\r\n }\r\n\r\n // Loaded via IFrame\r\n get isExternalProductGuide() {\r\n return serverContextService.isExternalProductGuide;\r\n }\r\n\r\n trackExternalProductGuideClick() {\r\n if (this.isExternalProductGuide && serverContextService.externalProductGuideSettings?.externalId) {\r\n Api.productGuide.trackclick({\r\n externalId: serverContextService.externalProductGuideSettings.externalId,\r\n productId: this.product.productId,\r\n destination: serverContextService.externalProductGuideSettings?.externalProductLink ? 1 : 0\r\n });\r\n }\r\n }\r\n\r\n @Watch('isUserLoggedIn')\r\n onLoginStateChange(now: boolean, before: boolean) {\r\n if (now && !before) {\r\n this.getPriceData();\r\n this.getStockData();\r\n this.getBidsData();\r\n }\r\n }\r\n\r\n async getPriceData() {\r\n if (this.isExternalProductGuide) {\r\n this.pricesLoaded = true;\r\n return;\r\n }\r\n\r\n this.pricesLoaded = false;\r\n\r\n try {\r\n if (!this.isUserLoggedIn) {\r\n return;\r\n }\r\n\r\n const request = simplePriceFetchService.requestData(this.product.itemId);\r\n this.cancellationCallbacks.push(request.cancel);\r\n const result = await request.promise;\r\n this.priceData = Object.freeze(result);\r\n this.isERPServiceAvailable = this.isERPServiceAvailable && result.isServiceAvailable;\r\n } catch {\r\n } finally {\r\n this.pricesLoaded = true;\r\n this.trackImpression();\r\n }\r\n }\r\n\r\n private trackImpression(force = false): void {\r\n if ((!force && (!this.pricesLoaded || !this.stockLoaded)) || this.isExternalProductGuide) return;\r\n\r\n this.$emit('productImpression', {\r\n product: this.constructTrackingProduct(),\r\n el: this.$el\r\n } as TrackingProductAndElement);\r\n }\r\n\r\n async getStockData() {\r\n this.stockLoaded = false;\r\n\r\n try {\r\n const request = stockFetchService.requestData(this.product.itemId);\r\n this.cancellationCallbacks.push(request.cancel);\r\n const result = await request.promise;\r\n this.stockData = Object.freeze(result.stockInformation);\r\n this.simpleStockData = Object.freeze(result.simpleStockInformation);\r\n this.isERPServiceAvailable = this.isERPServiceAvailable && result.isServiceAvailable;\r\n } catch {\r\n } finally {\r\n this.stockLoaded = true;\r\n this.trackImpression();\r\n }\r\n }\r\n\r\n async getBidsData() {\r\n if (this.nested || this.bid || !this.isUserLoggedIn) {\r\n this.bidsLoaded = true;\r\n return;\r\n }\r\n\r\n this.bidsLoaded = false;\r\n\r\n try {\r\n const request = productBidsFetchService.requestData(this.product.wid);\r\n this.cancellationCallbacks.push(request.cancel);\r\n const result = await request.promise;\r\n this.bidsData = Object.freeze(result.productBids);\r\n } catch {\r\n } finally {\r\n this.bidsLoaded = true;\r\n }\r\n }\r\n\r\n private addToBasketChange(deltaQuantity: number, quantity: number) {\r\n bus.emit(ProductTrackerProcessBatchKey);\r\n this.openMenuOnAddToCart(deltaQuantity, quantity);\r\n this.trackAddToBasketChange(deltaQuantity);\r\n }\r\n\r\n private openMenuOnAddToCart(deltaQuantity: number, quantity: number) {\r\n // Open accessories if \"first\" add to cart (from 0 to 1 in quantity) and relation type is accessories\r\n if (!!this.product.accessories.length && quantity === 1 && deltaQuantity > 0) {\r\n this.showTileMenu = true;\r\n }\r\n }\r\n\r\n private trackAddToBasketChange(deltaQuantity: number) {\r\n GTMService.trackProductQuantityChange(\r\n this.constructTrackingProduct(),\r\n deltaQuantity,\r\n this.trackingListName\r\n );\r\n }\r\n\r\n private constructTrackingProduct(): TrackingProduct {\r\n return {\r\n ...this.product,\r\n price: this.priceData?.amount,\r\n stockInfo: this.stockData,\r\n trackingState: this.getTrackingState\r\n };\r\n }\r\n\r\n private get getTrackingState(): ProductTrackingState {\r\n if (!this.isUserLoggedIn) return ProductTrackingState.NotLoggedIn;\r\n if (!this.pricesLoaded || !this.stockLoaded) return ProductTrackingState.NoErpResponseYet;\r\n return this.isERPServiceAvailable ? ProductTrackingState.Complete : ProductTrackingState.ErpNotAvailable;\r\n }\r\n\r\n private rawProductClick() {\r\n this.productClick(this.constructTrackingProduct());\r\n this.trackExternalProductGuideClick();\r\n }\r\n\r\n created() {\r\n this.getPriceData();\r\n this.getStockData();\r\n this.getBidsData();\r\n }\r\n\r\n mounted() {\r\n this.trackImpression(true);\r\n }\r\n\r\n // private cancelOutstandingXHRRequests() {\r\n // this.cancellationCallbacks.forEach(x => x && x());\r\n // }\r\n\r\n // private destroyed() {\r\n // this.cancelOutstandingXHRRequests();\r\n // }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTile.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTile.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductTile.vue?vue&type=template&id=262b48b0&scoped=true&\"\nimport script from \"./ProductTile.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductTile.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductTile.vue?vue&type=style&index=0&id=262b48b0&lang=less&scoped=true&\"\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 \"262b48b0\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\r\nimport ResponsiveIconWrap from '@/project/shared/ResponsiveIconWrap.vue';\r\nimport ModalOverlay from '@/project/modals/ModalOverlay.vue';\r\nimport ProductTile from '@/project/product/product-tile/ProductTile.vue';\r\n\r\n// Global components that we want to use on multiple pages\r\nVue.component('ResponsiveIconWrap', ResponsiveIconWrap);\r\nVue.component('ModalOverlay', ModalOverlay);\r\n\r\n// Due to recursiveness\r\nVue.component('ProductTile', ProductTile);\r\n","import Vue from 'vue';\r\nimport vClickOutside from 'v-click-outside';\r\n\r\nVue.use(vClickOutside);\r\n","import Vue from 'vue';\r\nconst vTooltip = () => import(/* webpackPrefetch: true, webpackChunkName: 'v-tooltip' */ 'v-tooltip');\r\n\r\n(async() => {\r\n const { VTooltip, VPopover, VClosePopover } = await vTooltip();\r\n Vue.directive('tooltip', VTooltip);\r\n Vue.directive('close-popover', VClosePopover);\r\n Vue.component('VPopover', VPopover);\r\n})();\r\n","import Vue from 'vue';\r\nimport lineClamp from 'vue-line-clamp';\r\n\r\nVue.use(lineClamp, {\r\n // plugin options\r\n importCss: true\r\n});\r\n","import 'intersection-observer';\r\nimport { addSize } from '@/core/responsive/image/responsiveImage.service';\r\n\r\naddSize(320);\r\naddSize(640);\r\naddSize(1024);\r\naddSize(1440);\r\n","// Borrowed from https://github.com/posva/vue-reactive-refs\r\n// Supports all browsers, but requires you to manually declare `$reactiveRefs` as a component option:\r\n// @Component({ $reactiveRefs: ['refIWantToBeReactive'] })\r\nimport Vue, { PluginFunction } from 'vue';\r\n\r\ndeclare module 'vue/types/options' {\r\n interface ComponentOptions {\r\n $reactiveRefs?: string[];\r\n }\r\n}\r\n\r\nconst ReactiveRefs: PluginFunction = _Vue => {\r\n _Vue.mixin({\r\n beforeCreate() {\r\n const { $reactiveRefs } = this.$options;\r\n\r\n if (!$reactiveRefs) {\r\n return;\r\n }\r\n\r\n // @ts-ignore\r\n this.$refs = _Vue.observable(\r\n $reactiveRefs.reduce(($refs, key) => {\r\n $refs[key] = undefined;\r\n return $refs;\r\n }, {} as Record)\r\n );\r\n }\r\n });\r\n};\r\n\r\nVue.use(ReactiveRefs);\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('validation-provider',{attrs:{\"rules\":_vm.rules,\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nvar classes = ref.classes;\nreturn [_c('div',{staticClass:\"relative h-40\",class:{ hasValue: !!_vm.value }},[_c('div',{staticClass:\"input-number inline-flex items-center rounded-full h-full bg-gray-400\"},[_c('MinusCancel',{staticClass:\"cursor-pointer minus-cancel\",class:{ 'pointer-events-none': _vm.disabled, 'disabled': _vm.minusDisabled },attrs:{\"mode\":_vm.editMode ? 'cancel' : 'minus',\"tabindex\":\"0\"},on:{\"minus-click\":function($event){return _vm.deltaAdjustQuantity(-1)},\"cancel-click\":_vm.done}}),(!_vm.disabled)?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.internalValue),expression:\"internalValue\"},{name:\"autofocus\",rawName:\"v-autofocus\",value:(_vm.autofocus),expression:\"autofocus\"},{name:\"prohibit-zoom\",rawName:\"v-prohibit-zoom\"},{name:\"whole-numbers-only\",rawName:\"v-whole-numbers-only\"}],ref:\"inputElem\",staticClass:\"input-field flex-grow flex-shrink font-semi-bold text-center min-w-0 rounded-full outline-none bg-gray-400\",class:classes,attrs:{\"id\":_vm.id,\"type\":\"tel\",\"pattern\":\"[0-9]{1,3}\",\"min\":_vm.minValue,\"max\":_vm.maxValue},domProps:{\"value\":(_vm.internalValue)},on:{\"focus\":_vm.inputFocus,\"blur\":_vm.inputBlur,\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.inputEnterEscKeyUp.apply(null, arguments)},\"input\":function($event){if($event.target.composing){ return; }_vm.internalValue=$event.target.value}}}):(_vm.disabled)?_c('div',{staticClass:\"disabled input-field w-40 border border-grey-dark p-5 flex-grow flex-shrink text-center min-w-0\"},[_vm._v(\" \"+_vm._s(_vm.quantity)+\" \")]):_vm._e(),_c('PlusAccept',{staticClass:\"cursor-pointer plus-accept outline-none\",class:{'pointer-events-none disabled': _vm.disabled || _vm.isAtMax || _vm.plusDisabled },attrs:{\"mode\":_vm.editMode ? 'accept' : 'plus',\"tabindex\":\"0\"},on:{\"plus-click\":function($event){return _vm.deltaAdjustQuantity(1)},\"accept-click\":_vm.setQuantity}})],1)]),(_vm.showErrors)?[_c('ol',_vm._l((errors),function(error){return _c('li',{key:error,staticClass:\"text-red-500 text-11 font-medium px-20 pb-5 pt-3\"},[_vm._v(\" \"+_vm._s(error)+\" \")])}),0)]:_vm._e()]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport PlusAccept from '@/project/basket/PlusAccept.vue';\r\nimport MinusCancel from '@/project/basket/MinusCancel.vue';\r\n\r\n@Component({\r\n components: { PlusAccept, MinusCancel }\r\n})\r\nexport default class InputNumber extends Vue {\r\n @Prop({ type: Number, required: true })\r\n private value!: number;\r\n\r\n @Prop({ type: String, required: false, default: '' })\r\n private label!: string;\r\n\r\n @Prop({ type: String, required: true })\r\n private name!: string;\r\n\r\n @Prop({ type: [String, Object], required: false, default: '' })\r\n private rules!: string | object;\r\n\r\n @Prop({ type: Boolean, required: false, default: false })\r\n private autofocus!: boolean;\r\n\r\n @Prop({ type: Boolean, required: false, default: true })\r\n private showErrors!: boolean;\r\n\r\n @Prop({ type: Number, required: false, default: 1 })\r\n private minValue!: number;\r\n\r\n @Prop({ type: Number, required: false, default: Infinity })\r\n private maxValue!: number;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private disabled!: boolean;\r\n\r\n private editMode = false;\r\n private internalValue: number = this.value;\r\n\r\n private get minusDisabled(): boolean {\r\n return this.disabled || (this.value <= this.minValue && !this.editMode);\r\n }\r\n\r\n private get plusDisabled(): boolean {\r\n return this.disabled || (this.value >= this.maxValue && !this.editMode);\r\n }\r\n\r\n private inputFocus() {\r\n this.editMode = true;\r\n this.$refs.inputElem.select();\r\n }\r\n\r\n private inputBlur() {\r\n // Need to delay until a possible click on accept/cancel arrives. This comes after blur from inputfield...\r\n setTimeout(() => {\r\n if (this.editMode) {\r\n // All blur events exept cancel will set quantity\r\n this.setQuantity();\r\n this.done();\r\n }\r\n }, 250);\r\n }\r\n\r\n private inputEnterEscKeyUp(event) {\r\n if (event.key === 'Enter') {\r\n this.setQuantity();\r\n }\r\n this.$refs.inputElem.blur();\r\n this.done();\r\n }\r\n\r\n private done() {\r\n this.editMode = false;\r\n }\r\n\r\n private deltaAdjustQuantity(delta: number) {\r\n this.setQuantity(delta);\r\n }\r\n\r\n private isAllowedValue(val: number): boolean {\r\n return val >= this.minValue && val <= this.maxValue;\r\n }\r\n\r\n private setQuantity(delta: number = 0) {\r\n const inputValue = this.internalValue || this.value || this.minValue;\r\n let value = parseInt(inputValue + '', 10) + delta;\r\n if (!this.isAllowedValue(value)) {\r\n value = value < this.minValue ? this.minValue : value > this.maxValue ? this.maxValue : this.value;\r\n }\r\n this.internalValue = value;\r\n this.$emit('input', value);\r\n this.done();\r\n }\r\n\r\n private get id() {\r\n return this.name + Math.random();\r\n }\r\n\r\n private get hasValue(): boolean {\r\n return this.value != null;\r\n }\r\n\r\n private get isAtMax() {\r\n return this.value === this.maxValue;\r\n }\r\n\r\n public $refs!: {\r\n // Just to have type...\r\n inputElem: HTMLInputElement;\r\n };\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputNumber.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputNumber.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InputNumber.vue?vue&type=template&id=2aafb380&scoped=true&\"\nimport script from \"./InputNumber.vue?vue&type=script&lang=ts&\"\nexport * from \"./InputNumber.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./InputNumber.vue?vue&type=style&index=0&id=2aafb380&lang=less&scoped=true&\"\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 \"2aafb380\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('validation-provider',{attrs:{\"rules\":_vm.rules,\"tag\":\"div\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nvar classes = ref.classes;\nreturn [_c('div',{staticClass:\"relative w-full\",class:{ hasValue: !!_vm.value }},[_c('textarea',_vm._g(_vm._b({directives:[{name:\"autofocus\",rawName:\"v-autofocus\",value:(_vm.autofocus),expression:\"autofocus\"}],staticClass:\"c-input-text__input text-13 h-full w-full px-20 py-15 z-0 leading-none bg-gray-300 text-black outline-none resize-none rounded-lg\",class:classes,attrs:{\"id\":_vm.id,\"rows\":_vm.rows,\"cols\":\"10\"},domProps:{\"value\":_vm.value},on:{\"input\":_vm.changedInput}},'textarea',_vm.$attrs,false),_vm.listeners)),(_vm.labelText)?_c('label',{staticClass:\"c-input-text__label w-full truncate absolute currentColor text-gray-800 text-13 font-medium leading-none\",attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.labelText))]):_vm._e()]),(_vm.showErrors)?[_c('ol',_vm._l((errors),function(error){return _c('li',{key:error,staticClass:\"text-red-500 text-11 font-medium px-20 pb-5 pt-3\"},[_vm._v(\" \"+_vm._s(error)+\" \")])}),0)]:_vm._e()]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class InputTextArea extends Vue {\r\n @Prop({ required: true })\r\n private value!: string | null;\r\n\r\n @Prop({ type: String, required: false, default: '' })\r\n private label!: string;\r\n\r\n @Prop({ type: String, required: true })\r\n private name!: string;\r\n\r\n @Prop({ type: [String, Object], required: false, default: '' })\r\n private rules!: string | object;\r\n\r\n @Prop({ type: Boolean, required: false, default: false })\r\n private autofocus!: boolean;\r\n\r\n @Prop({ type: Boolean, required: false, default: true })\r\n private showErrors!: boolean;\r\n\r\n @Prop({ type: Boolean, required: false, default: false })\r\n private required!: boolean;\r\n\r\n @Prop({ type: Number, required: false, default: 5 })\r\n private rows!: number;\r\n\r\n private get id() {\r\n return this.name + Math.random();\r\n }\r\n\r\n private get listeners() {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { input, ...listeners } = this.$listeners;\r\n return listeners;\r\n }\r\n\r\n private get hasValue(): boolean {\r\n return this.value !== '' && this.value != null;\r\n }\r\n\r\n private get labelText(): string {\r\n return this.required ? `${this.label}*` : this.label;\r\n }\r\n\r\n private changedInput(event) {\r\n this.$emit('input', event.target.value);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputTextArea.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputTextArea.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InputTextArea.vue?vue&type=template&id=9f5c7f46&scoped=true&\"\nimport script from \"./InputTextArea.vue?vue&type=script&lang=ts&\"\nexport * from \"./InputTextArea.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./InputTextArea.vue?vue&type=style&index=0&id=9f5c7f46&lang=less&scoped=true&\"\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 \"9f5c7f46\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"c-radiobutton\"},[_c('input',_vm._g(_vm._b({staticClass:\"c-radiobutton__input sr-only\",attrs:{\"id\":_vm.id,\"type\":\"radio\",\"name\":_vm.name},domProps:{\"value\":_vm.value,\"checked\":_vm.shouldBeChecked},on:{\"change\":_vm.updateValue}},'input',_vm.$attrs,false),_vm.listeners)),_c('label',{staticClass:\"c-radiobutton__label\",class:{ 'c-radiobutton__label--white': _vm.white },attrs:{\"for\":_vm.id}},[_c('span',[_vm._v(_vm._s(_vm.label))]),(_vm.iconName)?_c('c-icon',{staticClass:\"c-radiobutton__icon absolute top-0 bottom-0 mt-auto mb-auto\",attrs:{\"name\":_vm.iconName,\"width\":\"24\",\"height\":\"24\",\"aria-hidden\":\"true\",\"fill\":true,\"original\":true}}):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop, Model } from 'vue-property-decorator';\r\n\r\n/*\r\nInspired by this: https://www.smashingmagazine.com/2017/08/creating-custom-inputs-vue-js/\r\n */\r\n@Component\r\nexport default class InputRadio extends Vue {\r\n @Prop({\r\n type: String,\r\n default: ' '\r\n }) public label!: string;\r\n\r\n @Prop(String) public name!: string;\r\n @Prop(Boolean) private white!: boolean;\r\n\r\n @Prop([String, Number, Boolean, Object]) public value!: string | number | boolean | object;\r\n\r\n @Prop(String)\r\n private icon!: string;\r\n\r\n @Model('change')\r\n readonly modelValue!: string | number | boolean | object;\r\n\r\n get id(): string {\r\n return this.name + Math.random();\r\n }\r\n\r\n private get iconName() {\r\n return this.icon?.toLowerCase();\r\n }\r\n\r\n private updateValue(e) {\r\n this.$emit('change', this.value);\r\n }\r\n\r\n private get shouldBeChecked() {\r\n return this.modelValue === this.value;\r\n }\r\n\r\n private get listeners() {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { change, ...listeners } = this.$listeners;\r\n return listeners;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputRadio.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputRadio.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InputRadio.vue?vue&type=template&id=0cc0b31c&scoped=true&\"\nimport script from \"./InputRadio.vue?vue&type=script&lang=ts&\"\nexport * from \"./InputRadio.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./InputRadio.vue?vue&type=style&index=0&id=0cc0b31c&lang=less&scoped=true&\"\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 \"0cc0b31c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ValidationProvider',{ref:\"provider\",attrs:{\"rules\":_vm.rules,\"tag\":\"div\",\"name\":_vm.name},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nvar classes = ref.classes;\nvar validate = ref.validate;\nreturn [_c('div',{staticClass:\"relative w-full h-40\",class:{ hasValue: _vm.labelText }},[_c('input',_vm._g(_vm._b({directives:[{name:\"prohibit-zoom\",rawName:\"v-prohibit-zoom\"}],staticClass:\"c-input-file__input h-40 w-full px-20 z-0 bg-gray-300 text-black outline-none\",class:[classes, { 'border border-red-500': _vm.invalid }],attrs:{\"id\":_vm.id,\"type\":\"file\",\"placeholder\":_vm.placeholder},on:{\"change\":function($event){_vm.changedInput($event, validate($event))}}},'input',_vm.$attrs,false),_vm.listeners)),_c('input',_vm._g(_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.value),expression:\"value\"},{name:\"autofocus\",rawName:\"v-autofocus\",value:(_vm.autofocus),expression:\"autofocus\"}],staticClass:\"h-0 w-0\",attrs:{\"id\":(_vm.id + \"-hidden\"),\"type\":\"text\"},domProps:{\"value\":(_vm.value)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.value=$event.target.value},_vm.changedFakeInput]}},'input',_vm.$attrs,false),_vm.listenersForFakeField)),(_vm.labelText)?_c('label',{staticClass:\"c-input-file__label w-full truncate y-center absolute left-0 currentColor text-gray-800 text-13 font-medium leading-none\",attrs:{\"for\":_vm.id}},[_vm._v(\" \"+_vm._s(_vm.labelText)+\" \")]):_vm._e(),(_vm.infoLabel)?_c('v-popover',{staticClass:\"info-input-icon\",attrs:{\"popover-wrapper-class\":\"wrapper flex flex-col items-end\",\"popover-inner-class\":\"tooltip-inner whitespace-normal max-w-1/2 p-10 text-center\",\"trigger\":\"click\",\"auto-hide\":\"\",\"offset\":\"5\",\"placement\":\"top\"}},[_c('button',{attrs:{\"type\":\"button\"}},[_c('span',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm._f(\"t\")('Checkout.Address.Info')))]),_c('c-icon',{attrs:{\"name\":\"info\"}})],1),_c('template',{slot:\"popover\"},[_vm._v(\" \"+_vm._s(_vm.infoLabel)+\" \")])],2):_vm._e()],1),(_vm.showErrors)?[_c('ol',_vm._l((errors),function(error){return _c('li',{key:error,staticClass:\"text-red-500 text-11 font-medium px-20 pb-5 pt-3\"},[_vm._v(\" \"+_vm._s(error)+\" \")])}),0)]:_vm._e()]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class InputFile extends Vue {\r\n @Prop({ required: true })\r\n public value!: string;\r\n\r\n @Prop({ type: String, required: false, default: '' })\r\n private label!: string;\r\n\r\n @Prop({ type: String, default: '' })\r\n private infoLabel!: string;\r\n\r\n @Prop({ type: String, required: true })\r\n private name!: string;\r\n\r\n @Prop({ type: [String, Object], required: false, default: '' })\r\n private rules!: string | object;\r\n\r\n @Prop({ type: Boolean, required: false, default: false })\r\n private autofocus!: boolean;\r\n\r\n @Prop({ type: Boolean, required: false, default: true })\r\n private showErrors!: boolean;\r\n\r\n @Prop({ type: String, required: false, default: '' })\r\n private placeholder!: string;\r\n\r\n @Prop({ type: Boolean, required: false, default: false })\r\n private invalid!: boolean;\r\n\r\n $refs!: {\r\n provider: any\r\n }\r\n\r\n private get id() {\r\n return this.name + Math.random();\r\n }\r\n\r\n private get listeners() {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { input, change, ...listeners } = this.$listeners;\r\n return listeners;\r\n }\r\n\r\n private get listenersForFakeField() {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { input, ...listeners } = this.$listeners;\r\n return listeners;\r\n }\r\n\r\n private get labelText(): string {\r\n return this.isRequired ? `${this.label}*` : this.label;\r\n }\r\n\r\n private get isRequired(): boolean {\r\n return 'required' in this.$attrs ||\r\n (typeof this.rules === 'string' && this.rules.includes('required')) ||\r\n (typeof this.rules === 'object' && !!(this.rules as any).required);\r\n }\r\n\r\n async changedInput(event, validationProviderValidate) {\r\n const validationResult = await validationProviderValidate;\r\n console.log('fileInput', event);\r\n if (validationResult.valid) {\r\n const fileList = event.target.files;\r\n const files: unknown[] = [];\r\n Array\r\n .from(Array(fileList.length).keys())\r\n .map(x => {\r\n files.push({ file: fileList[x], fileName: fileList[x].name });\r\n });\r\n this.$emit('change', files);\r\n } else {\r\n console.log('invalid file!', event, validationResult);\r\n }\r\n }\r\n\r\n changedFakeInput(event) {\r\n console.log('fake field input', event.target.value);\r\n this.$emit('input', event.target.value);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputFile.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputFile.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InputFile.vue?vue&type=template&id=26149499&scoped=true&\"\nimport script from \"./InputFile.vue?vue&type=script&lang=ts&\"\nexport * from \"./InputFile.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./InputFile.vue?vue&type=style&index=0&id=26149499&lang=less&scoped=true&\"\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 \"26149499\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\r\nimport InputText from './InputText.vue';\r\nimport InputNumber from './InputNumber.vue';\r\nimport InputTextArea from './InputTextArea.vue';\r\nimport InputSelect from './InputSelect.vue';\r\nimport InputRadio from './InputRadio.vue';\r\nimport InputCheckbox from './InputCheckbox.vue';\r\nimport InputFile from './InputFile.vue';\r\nimport CTA from './CallToAction.vue';\r\n\r\nimport './vee-validate.plugin';\r\nVue.component('CallToAction', CTA);\r\nVue.component('InputText', InputText);\r\nVue.component('InputNumber', InputNumber);\r\nVue.component('InputTextArea', InputTextArea);\r\nVue.component('InputSelect', InputSelect);\r\nVue.component('InputRadio', InputRadio);\r\nVue.component('InputCheckbox', InputCheckbox);\r\nVue.component('InputFile', InputFile);\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('block-list',{attrs:{\"blocks\":_vm.content.blocks,\"disable-container-for-first-block\":\"\"}}),(_vm.isDevMode())?_c('div',{staticClass:\"o-container mt-40\"},[_c('call-to-action',{staticClass:\"block ml-10 mb-10\",attrs:{\"href\":\"/testside\",\"text\":\"Server testside\"}}),_c('call-to-action',{staticClass:\"block ml-10 mb-10\",attrs:{\"href\":\"/lokaltestside\",\"text\":\"Kitchensink\"}}),_c('call-to-action',{staticClass:\"block ml-10 mb-10\",attrs:{\"href\":\"/eet-europarts/om-eet\",\"text\":\"Om EET\"}}),_c('call-to-action',{staticClass:\"block ml-10 mb-10\",attrs:{\"href\":\"/checkout\",\"text\":\"Checkout\"}}),_c('call-to-action',{staticClass:\"block ml-10 mb-10\",attrs:{\"href\":\"/campaigns\",\"text\":\"Campaigns\"}}),_c('call-to-action',{staticClass:\"block ml-10 mb-10\",attrs:{\"href\":\"/xxx\",\"text\":\"404\"}}),_c('call-to-action',{staticClass:\"block ml-10 mb-10\",attrs:{\"href\":\"/departments\",\"text\":\"departments - 404\"}}),_c('call-to-action',{staticClass:\"block ml-10 mb-10\",attrs:{\"href\":\"/da-dk/920-008683-logitech-mk540-combo-pan-nordic-wid-w1246cc38877\",\"text\":\"product - 404\"}}),_c('call-to-action',{staticClass:\"block ml-10 mb-10\",attrs:{\"href\":\"/xxx500\",\"text\":\"triggers 500\"}}),_c('call-to-action',{staticClass:\"block ml-10 mb-10\",attrs:{\"href\":\"jfi\",\"text\":\"jfi test\"}}),_c('call-to-action',{staticClass:\"block ml-10 mb-10\",attrs:{\"href\":\"/da-dk/bliv-kunde-hos-eet2/\",\"text\":\"become a customer umbraco\"}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { FrontpageViewModel } from '@/types/contentServerContract';\r\nimport CallToAction from '@/project/form/CallToAction.vue';\r\nimport { isDevMode } from '@/core/environmentService';\r\nimport appStore from '@/core/app/app.store';\r\n\r\n@Component({\r\n components: { CallToAction }\r\n})\r\nexport default class FrontPage extends Vue {\r\n @Prop() content!: FrontpageViewModel;\r\n\r\n private isDevMode(): boolean {\r\n return isDevMode();\r\n }\r\n\r\n mounted() {\r\n appStore.hideMobileSearch = true;\r\n appStore.isFrontPage = true;\r\n }\r\n\r\n beforeDestroy() {\r\n appStore.hideMobileSearch = false;\r\n appStore.isFrontPage = false;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FrontPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FrontPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FrontPage.vue?vue&type=template&id=6d0b9cc8&\"\nimport script from \"./FrontPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./FrontPage.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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('block-list',{attrs:{\"blocks\":_vm.content.blocks,\"enable-container\":false}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { BaseContentModel } from '@/types/contentServerContract';\r\n\r\n@Component\r\nexport default class ContentPage extends Vue {\r\n @Prop({ required: true, type: Object }) content!: BaseContentModel;\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContentPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContentPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ContentPage.vue?vue&type=template&id=6089e4a6&\"\nimport script from \"./ContentPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./ContentPage.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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',[(_vm.wid)?_c('section',{staticClass:\"mb-20 bg-white p-25\"},[_c('p',{staticClass:\"text-18 font-medium\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.NotFound.Headline',_vm.wid))+\" \")])]):_vm._e(),_c('block-list',{attrs:{\"blocks\":_vm.content.blocks,\"enable-container\":false}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { BaseContentModel } from '@/types/contentServerContract';\r\nimport urlHelperService, { UrlQueryKey } from '@/core/urlHelper.service';\r\n\r\n@Component\r\nexport default class ProductNotFoundPage extends Vue {\r\n @Prop({ required: true, type: Object }) content!: BaseContentModel;\r\n\r\n private wid: string | undefined = urlHelperService.getQueryParam(UrlQueryKey.wid);\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductNotFoundPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductNotFoundPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductNotFoundPage.vue?vue&type=template&id=e43fd144&\"\nimport script from \"./ProductNotFoundPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductNotFoundPage.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 { pageResolver } from '@/core/app/componentResolver.service';\r\nimport FrontPage from './FrontPage.vue';\r\nimport ContentPage from './ContentPage.vue';\r\nimport ProductNotFoundPage from './ProductNotFoundPage.vue';\r\nconst NewsArticlePage = () => import(/* webpackChunkName: 'news' */'./NewsArticlePage.vue');\r\nconst NewsPage = () => import(/* webpackChunkName: 'news' */'./NewsPage.vue');\r\nconst CampaignOverviewPage = () => import('./CampaignOverviewPage.vue');\r\nconst BecomeACustomerPage = () => import('./BecomeACustomerPage.vue');\r\n\r\n// Content pages\r\npageResolver.register('frontpage', FrontPage);\r\npageResolver.register('newsPage', NewsPage, { updateOnQueryChange: true });\r\npageResolver.register('campaigns', CampaignOverviewPage, { updateOnQueryChange: true });\r\npageResolver.register('newsArticlePage', NewsArticlePage);\r\npageResolver.register('contentPage', ContentPage);\r\npageResolver.register('product404Page', ProductNotFoundPage);\r\npageResolver.register('becomeACustomer', BecomeACustomerPage);\r\n\r\n// No fallback - we prefer redirecting to 404\r\n// Except in preview mode, just use contentpage\r\nif (window.servercontext.preview) {\r\n pageResolver.registerFallback(ContentPage);\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.block)?_c(_vm.resolvedBlock(_vm.block.alias),_vm._b({tag:\"component\",attrs:{\"content\":_vm.block.content,\"alias\":_vm.block.alias}},'component',_vm.$attrs,false)):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop } from 'vue-property-decorator';\r\nimport { JsonContent } from '@/types/contentServerContract';\r\nimport { blockResolver, ClientComponentType } from '@/core/app/componentResolver.service';\r\n\r\n@Component\r\nexport default class BlockRender extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object,\r\n validator(value: any): boolean {\r\n return 'alias' in value && 'content' in value;\r\n }\r\n }) block!: JsonContent;\r\n\r\n private resolvedBlock(): ClientComponentType | undefined {\r\n return blockResolver.resolve(this.block.alias)?.component;\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BlockRender.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BlockRender.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BlockRender.vue?vue&type=template&id=78e14f48&\"\nimport script from \"./BlockRender.vue?vue&type=script&lang=ts&\"\nexport * from \"./BlockRender.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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"c-block-list\"},_vm._l((_vm.blocks),function(block,ix){return _c('BlockRender',_vm._b({key:block.key,class:{'o-container' : !(_vm.disableContainerForFirstBlock && ix === 0) && _vm.enableContainer},attrs:{\"id\":_vm._f(\"anchor\")(block.content.anchorLink),\"block\":block,\"is-first-block\":ix === 0}},'BlockRender',_vm.$attrs,false))}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop, Watch } from 'vue-property-decorator';\r\nimport { JsonContent } from '@/types/contentServerContract';\r\n\r\n@Component\r\nexport default class BlockList extends Vue {\r\n @Prop() blocks!: JsonContent[];\r\n\r\n private randomIntFromInterval(min: number, max: number) {\r\n return Math.floor(Math.random() * (max - min + 1) + min);\r\n }\r\n\r\n private blockKey(alias: string, ix: number): string {\r\n return `${alias}-${ix}-${this.randomIntFromInterval(1, 10000)}`;\r\n }\r\n\r\n @Prop({ type: Boolean, default: true })\r\n private enableContainer!: boolean;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private disableContainerForFirstBlock!: boolean;\r\n\r\n @Watch('blocks', {\r\n immediate: true\r\n })\r\n setupBlockKeys() {\r\n if (this.blocks?.length) {\r\n this.blocks.forEach((x, i) => (x as any).key = this.blockKey(x.alias, i));\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BlockList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BlockList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BlockList.vue?vue&type=template&id=4b2adf06&\"\nimport script from \"./BlockList.vue?vue&type=script&lang=ts&\"\nexport * from \"./BlockList.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BlockList.vue?vue&type=style&index=0&lang=less&\"\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 Vue from 'vue';\r\nimport { blockResolver } from '@/core/app/componentResolver.service';\r\n\r\nimport BlockRender from './helpers/BlockRender.vue';\r\nimport BlockList from './helpers/BlockList.vue';\r\n\r\nconst HalfWidthBlocks = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './HalfWidthBlocks.vue');\r\nconst OnePlusTwoBlocks = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './OnePlusTwoBlocks.vue');\r\nconst HeroBannerBlock = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './HeroBannerBlock.vue');\r\nconst AdnuntiusHeroBannerBlock = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './AdnuntiusHeroBannerBlock.vue');\r\nconst UniqueSellingPointBlock = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './UniqueSellingPointBlock.vue');\r\nconst UniqueSellingPointItem = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './UniqueSellingPointItem.vue');\r\nconst BrandsBlock = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './BrandsBlock.vue');\r\nconst TextBlock = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './TextBlock.vue');\r\nconst FullWidthTextBlock = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './FullWidthTextBlock.vue');\r\nconst TextWithImageBlock = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './TextWithImageBlock.vue');\r\nconst ProductRecommendationsBlock = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './ProductRecommendationsBlock.vue');\r\nconst BrandRecommendationsBlock = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './BrandRecommendationsBlock.vue');\r\nconst CategoryRecommendationsBlock = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './CategoryRecommendationsBlock.vue');\r\nconst ProductListBlock = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './ProductListBlock.vue');\r\nconst TabbedContentBlock = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './TabbedContentBlock.vue');\r\nconst QuoteBlock = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './QuoteBlock.vue');\r\nconst LatestNewsBlock = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './LatestNewsBlock.vue');\r\nconst LatestCampaignsBlock = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './LatestCampaignsBlock.vue');\r\nconst CategoryBlock = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './categories/CategoryBlock.vue'); // Used on frontpage\r\n\r\n// Lower priority - not in same chunk\r\nconst EmployeeBlock = () => import('./information/EmployeeBlock.vue');\r\nconst BecomeACustomerBlock = () => import('./information/BecomeACustomerBlock.vue');\r\nconst JotFormBlock = () => import('./JotFormBlock.vue');\r\nconst BecomeAResellerBlock = () => import('./information/BecomeAResellerBlock.vue');\r\nconst CancelNewsletterBlock = () => import('./newsletter/CancelNewsletterBlock.vue');\r\nconst SubscribeNewsletterBlock = () => import('./newsletter/SubscribeNewsletterBlock.vue');\r\nconst ProductGuideBlock = () => import(/* webpackChunkName: 'product-guide' */ './productguide/ProductGuideBlock.vue');\r\nconst ProductGuideConfigurationBlock = () => import(/* webpackChunkName: 'product-guide' */ './productguide/ProductGuideConfigurationBlock.vue');\r\nconst IframeBlock = () => import(/* webpackPrefetch: true */ './IframeBlock.vue');\r\nconst MapBlock = () => import('./google-maps/MapBlock.vue');\r\nconst CableGuideBlock = () => import(/* webpackChunkName: 'product-guide' */ './cableguide/CableGuideBlock.vue');\r\nconst StatisticsBlock = () => import('./statistics/StatisticsBlock.vue');\r\nconst CategoryTileBlock = () => import('./categories/CategoryTileBlock.vue');\r\nconst CodeBlock = () => import(/* webpackChunkName: 'code-block' */ './CodeBlock.vue');\r\nconst HeroBannerUniqueSellingPointsBlock = () => import('./HeroBannerUniqueSellingPointsBlock.vue');\r\n\r\nconst FallbackBlock = () => import('./FallbackBlock.vue');\r\n\r\nexport type BlockName =\r\n 'halfWidthBlocks' |\r\n 'halfWidthBlock' |\r\n 'twoPlusOneBlocks' |\r\n 'heroBanner' |\r\n 'heroBannerWithUsp' |\r\n 'personalizedContent' |\r\n 'uniqueSellingPointBlock' |\r\n 'brandsBlock' |\r\n 'codeBlock' |\r\n 'uniqueSellingPointItem' |\r\n 'textBlock' |\r\n 'fullWidthTextBlock' |\r\n 'categoryBlock' |\r\n 'jotFormBlock' |\r\n 'becomeACustomerBlock' |\r\n 'becomeAResellerBlock' |\r\n 'cancelNewsletterBlock' |\r\n 'subscribeNewsletterBlock' |\r\n 'textWithImageBlock' |\r\n 'productGuideBlock' |\r\n 'productGuideConfigurationBlock' |\r\n 'cableGuideBlock' |\r\n 'iframeBlock' |\r\n 'productRecommendationsBlock' |\r\n 'categoryRecommendationsBlock' |\r\n 'productListBlock' |\r\n 'tabbedContentBlock' |\r\n 'quoteBlock' |\r\n 'map' |\r\n 'latestNewsBlock' |\r\n 'latestCampaignsBlock' |\r\n 'categoryTileBlock' |\r\n 'statisticsBlock' |\r\n 'employeesBlock' |\r\n 'brandRecommendationsBlock';\r\n\r\nblockResolver.register('halfWidthBlocks', HalfWidthBlocks);\r\nblockResolver.register('twoPlusOneBlocks', OnePlusTwoBlocks);\r\nblockResolver.register('heroBanner', HeroBannerBlock);\r\nblockResolver.register('heroBannerWithUsp', HeroBannerUniqueSellingPointsBlock);\r\nblockResolver.register('personalizedContent', AdnuntiusHeroBannerBlock);\r\nblockResolver.register('uniqueSellingPointBlock', UniqueSellingPointBlock);\r\nblockResolver.register('brandsBlock', BrandsBlock);\r\nblockResolver.register('uniqueSellingPointItem', UniqueSellingPointItem);\r\nblockResolver.register('textBlock', TextBlock);\r\nblockResolver.register('codeBlock', CodeBlock);\r\nblockResolver.register('fullWidthTextBlock', FullWidthTextBlock);\r\nblockResolver.register('categoryBlock', CategoryBlock);\r\nblockResolver.register('jotFormBlock', JotFormBlock);\r\nblockResolver.register('becomeACustomerBlock', BecomeACustomerBlock);\r\nblockResolver.register('becomeAResellerBlock', BecomeAResellerBlock);\r\nblockResolver.register('cancelNewsletterBlock', CancelNewsletterBlock);\r\nblockResolver.register('subscribeNewsletterBlock', SubscribeNewsletterBlock);\r\nblockResolver.register('textWithImageBlock', TextWithImageBlock);\r\nblockResolver.register('productGuideBlock', ProductGuideBlock);\r\nblockResolver.register('productGuideConfigurationBlock', ProductGuideConfigurationBlock);\r\nblockResolver.register('cableGuideBlock', CableGuideBlock);\r\nblockResolver.register('iframeBlock', IframeBlock);\r\nblockResolver.register('productRecommendationsBlock', ProductRecommendationsBlock);\r\nblockResolver.register('categoryRecommendationsBlock', CategoryRecommendationsBlock);\r\nblockResolver.register('productListBlock', ProductListBlock);\r\nblockResolver.register('tabbedContentBlock', TabbedContentBlock);\r\nblockResolver.register('quoteBlock', QuoteBlock);\r\nblockResolver.register('map', MapBlock);\r\nblockResolver.register('latestNewsBlock', LatestNewsBlock);\r\nblockResolver.register('latestCampaignsBlock', LatestCampaignsBlock);\r\nblockResolver.register('categoryTileBlock', CategoryTileBlock);\r\nblockResolver.register('statisticsBlock', StatisticsBlock);\r\nblockResolver.register('employeesBlock', EmployeeBlock);\r\nblockResolver.register('brandRecommendationsBlock', BrandRecommendationsBlock);\r\n\r\nblockResolver.registerFallback(FallbackBlock);\r\n\r\nVue.component('BlockRender', BlockRender);\r\nVue.component('BlockList', BlockList);\r\n","import Vue from 'vue';\r\nimport siteService from '@/project/site/site.service';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\n\r\nconst locale = siteService.getCulture();\r\n\r\nconst symbols = [\r\n '',\r\n '', // dictionaryService.get('Generic.Number.Thousand'),\r\n dictionaryService.get('Generic.Number.Million')];\r\n\r\nfunction abbreviateNumber(\r\n num: number,\r\n digit: number = 1,\r\n padding: boolean = false\r\n): string {\r\n // handle negatives\r\n const sign = Math.sign(num) >= 0;\r\n num = Math.abs(num);\r\n const numFormated = locale ? num.toLocaleString(locale) : num.toString();\r\n\r\n // what tier? (determines SI symbol)\r\n const tier = (Math.log10(num) / 3) | 0;\r\n\r\n // if zero, we don't need a suffix\r\n if (tier === 0) return (!sign ? '-' : '') + numFormated;\r\n\r\n // get suffix and determine scale\r\n const suffix = symbols[tier];\r\n if (!suffix) return numFormated;\r\n\r\n const scale = Math.pow(10, tier * 3);\r\n\r\n // scale the number\r\n const scaled = num / scale;\r\n\r\n let rounded = scaled.toFixed(digit);\r\n if (!padding) {\r\n rounded = String(Number(rounded));\r\n }\r\n\r\n // format number and add suffix\r\n return `${(!sign ? '-' : '')} ${rounded} ${suffix}`;\r\n}\r\n\r\nVue.filter('abbreviate', abbreviateNumber);\r\n\r\nexport default abbreviateNumber;\r\n","import Vue from 'vue';\r\n\r\nfunction ensureAnchorId(anchor?: string) {\r\n return anchor ? anchor.startsWith('#') ? anchor.slice(1) : anchor : undefined;\r\n}\r\n\r\nVue.filter('anchor', ensureAnchorId);\r\n\r\nexport default ensureAnchorId;\r\n","import permission from '@/project/auth/permission.service';\r\n\r\nexport default {\r\n install(Vue) {\r\n Vue.prototype.$permission = permission;\r\n }\r\n};\r\n","import Vue from 'vue';\r\nimport gtmService from './GTM.service';\r\n\r\nfunction trackClick(this: HTMLElement, event: UIEvent): any {\r\n const aTag = findParentByTagName(event.target, 'A') as HTMLElement;\r\n if (aTag) {\r\n const href = aTag.getAttribute('data-tracking-name') || (aTag as HTMLAnchorElement).href;\r\n gtmService.trackLinkClick(href);\r\n }\r\n}\r\n\r\nfunction findParentByTagName(element, tagName) {\r\n let parent = element;\r\n\r\n while (parent !== null && parent.tagName !== tagName.toUpperCase()) {\r\n parent = parent.parentNode;\r\n }\r\n return parent;\r\n}\r\n\r\nVue.directive('linkClickTracker', {\r\n inserted(el, binding) {\r\n el.addEventListener('click', trackClick, false);\r\n },\r\n unbind(el) {\r\n el.removeEventListener('click', trackClick);\r\n }\r\n});\r\n","import Vue from 'vue';\r\nimport permissionPlugin from '@/project/plugins/permission.plugin';\r\n\r\n// Plugins\r\nVue.use(permissionPlugin);\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('accordion',{ref:\"accordion\",attrs:{\"header-class\":\"text-12 font-medium w-full\",\"icon\":\"\",\"tag\":\"div\",\"expanded\":_vm.startOpened},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [(_vm.useRouteNavigation)?_c('culture-aware-router-link',{staticClass:\"navigation-link w-full font-medium\",class:{'active' : _vm.isActive || _vm.startOpened, 'first': _vm.index === 0, 'last': _vm.last || _vm.startOpened },attrs:{\"to\":{ path: _vm.menuItem.url, query: _vm.$route.query }}},[_c('category-name-and-count',{attrs:{\"menu-item\":_vm.menuItem}})],1):_c('button',{staticClass:\"navigation-link w-full font-medium\",class:{'active' : _vm.isActive || _vm.startOpened, 'first': _vm.index === 0, 'last': _vm.last || _vm.startOpened },on:{\"click\":function($event){return _vm.selectMenuItem(_vm.menuItem)}}},[_c('category-name-and-count',{attrs:{\"menu-item\":_vm.menuItem}})],1)]},proxy:true}])},[(_vm.menuItem.children.length > 0)?_c('transition-group',{attrs:{\"tag\":\"ul\",\"enter-active-class\":\"animated fadeIn u-anim-dur-250\",\"leave-active-class\":\"animated fadeOut u-anim-dur-150\"}},_vm._l((_vm.menuItem.children),function(child,i){return _c('li',{key:child.id,staticClass:\"navigation-link-container\",class:{ 'active': child.children.length > 0 && _vm.isMenuActive(child) }},[_c('navigation-tree',{attrs:{\"menu-item\":child,\"index\":_vm.index + 1,\"last\":i === _vm.menuItem.children.length - 1,\"selected-menu-item\":_vm.selectedMenuItem,\"use-route-navigation\":_vm.useRouteNavigation},on:{\"menuChanged\":_vm.selectMenuItem}})],1)}),0):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport { MenuItem } from '@/types/apiServerContract';\r\nimport accordion from '@/core/ui-components/Accordion.vue';\r\nimport IAccordion from '@/core/ui-components/IAccordion';\r\nimport CategoryNameAndCount from '@/project/search/navigation/CategoryNameAndCount.vue';\r\nimport { NavigationItem } from '@/types/contentServerContract';\r\n\r\n@Component({\r\n components: { CategoryNameAndCount, accordion }\r\n})\r\nexport default class NavigationTree extends Vue {\r\n @Prop({ required: true, type: Object })\r\n private menuItem!: MenuItem | NavigationItem;\r\n\r\n @Prop({ required: true })\r\n private selectedMenuItem!: MenuItem | NavigationItem | null;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private useRouteNavigation!: boolean;\r\n\r\n @Prop({ required: false, type: Number, default: 0 })\r\n private index!: number;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n private last!: boolean;\r\n\r\n private selectMenuItem(menuItem: MenuItem | NavigationItem) {\r\n this.$emit('menuChanged', menuItem);\r\n }\r\n\r\n private get isActive() {\r\n return this.menuItem.id === this.selectedMenuItem?.id;\r\n }\r\n\r\n private isMenuActive(menuItem: MenuItem) {\r\n return menuItem.id === this.selectedMenuItem?.id || this.isMenuAChildOfMe(menuItem, this.selectedMenuItem?.url);\r\n }\r\n\r\n private startOpened: boolean = false;\r\n\r\n private shouldStartOpened() {\r\n return this.menuItem.children.length > 0 && (this.isActive || this.isMenuAChildOfMe(this.menuItem, this.selectedMenuItem?.url));\r\n }\r\n\r\n private validateReadyState() {\r\n this.startOpened = this.shouldStartOpened();\r\n if (this.startOpened) {\r\n this.$refs.accordion.open();\r\n } else {\r\n this.$refs.accordion.close();\r\n }\r\n }\r\n\r\n mounted() {\r\n this.validateReadyState();\r\n }\r\n\r\n @Watch('selectedMenuItem')\r\n onSelectedMenuChange(selectedMenu: MenuItem | NavigationItem) {\r\n this.validateReadyState();\r\n }\r\n\r\n private isMenuAChildOfMe(menuItem: MenuItem | NavigationItem, url?: string): boolean {\r\n if (!url || menuItem.children.length === 0) return false;\r\n\r\n for (const menu of menuItem.children) {\r\n if (menu.url === url) {\r\n return true;\r\n }\r\n\r\n if (menu.children.length > 0) {\r\n const found = this.isMenuAChildOfMe(menu, url);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n $refs!: Vue['$refs'] & {\r\n accordion: IAccordion\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationTree.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationTree.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NavigationTree.vue?vue&type=template&id=77c1573f&scoped=true&\"\nimport script from \"./NavigationTree.vue?vue&type=script&lang=ts&\"\nexport * from \"./NavigationTree.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NavigationTree.vue?vue&type=style&index=0&id=77c1573f&lang=less&scoped=true&\"\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 \"77c1573f\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\r\n\r\nimport NavigationTree from './NavigationTree.vue';\r\n\r\nVue.component('NavigationTree', NavigationTree);\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"link-click-tracker\",rawName:\"v-link-click-tracker\"}]},[_c('div',{staticClass:\"flex flex-col bg-gray-300\"},[_c('div',{staticClass:\"flex flex-col min-h-screen\"},[_c('PageHeader'),_c('main',{staticClass:\"main w-full min-h-screen\",class:{'tunnel-view': _vm.isTunnelView, 'take-over': _vm.isTakeOverEnabled, 'no-mobilesearch-and-brands': _vm.hideMobileSearchAndBrands }},[_c('div',{staticClass:\"o-chrome-container\"},[_c('BreadCrumb')],1),_c('transition',{attrs:{\"appear\":\"\",\"mode\":\"out-in\",\"enter-active-class\":\"animated fadeIn u-anim-dur-250\",\"leave-active-class\":\"animated fadeOut u-anim-dur-150\"}},[_c('RouterView')],1)],1),_c('PageFooter',{staticClass:\"mt-40\"})],1)]),_c('ErrorToaster'),_c('ModalsContainer'),_c('MyAccountModule'),_c('SitePickerModule'),_c('AuthenticationModule')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.isTunnelView)?_c('Breakpoints',[_c('MobilePageHeader',{attrs:{\"slot\":\"max-sm\"},slot:\"max-sm\"}),_c('DesktopPageHeader',{attrs:{\"slot\":\"min-md\"},slot:\"min-md\"})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{staticClass:\"z-header absolute top-0 inset-x-0\"},[_c('ScrollTrigger',{attrs:{\"options\":_vm.scrollTriggerOptions}},[(_vm.showBrands)?_c('section',{staticClass:\"h-40 relative z-1\"},[_c('BrandHeader')],1):_vm._e(),_c('article',{staticClass:\"fixable-header\"},[_c('div',{staticClass:\"o-chrome-container bg-white\",style:(_vm.topHeaderStyle)},[_c('div',{directives:[{name:\"sync-bodylock-gap\",rawName:\"v-sync-bodylock-gap\"}],staticClass:\"h-60 flex justify-between items-center relative\"},[_c('div',{staticClass:\"absolute inset-0 flex items-center justify-center\"},[_c('CultureAwareRouterLink',{attrs:{\"to\":\"/\",\"title\":_vm._f(\"t\")('FrontPage.Home')}},[_c('c-icon',{class:{ 'text-white': _vm.isInWhiteTheme, 'text-blue-500 oprema:text-black': !_vm.isInWhiteTheme },attrs:{\"name\":\"logo\",\"width\":_vm.logoDimensions.width,\"height\":_vm.logoDimensions.height}})],1)],1),_c('button',{staticClass:\"burger-button z-1 relative\",class:{ 'text-white': _vm.isInWhiteTheme, 'text-blue-500 oprema:text-black': !_vm.isInWhiteTheme },attrs:{\"aria-label\":\"Menu\"},on:{\"click\":_vm.showMobileMenu}},[_c('c-icon',{attrs:{\"name\":\"burger\",\"height\":\"28\",\"width\":\"28\"}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Menu\")])],1),_c('div',{staticClass:\"z-1\",class:{ 'text-white': _vm.isInWhiteTheme, 'text-blue-500 oprema:text-black': !_vm.isInWhiteTheme }},[(_vm.isLoggedIn && _vm.$permission.canPlaceOrder())?_c('MiniBasket',{attrs:{\"is-mobile\":true}}):_c('button',{staticClass:\"flex items-center\",on:{\"click\":_vm.login}},[_c('c-icon',{attrs:{\"name\":\"login\",\"width\":\"20\",\"height\":\"23\"}}),_c('span',{staticClass:\"font-bold text-12 ml-10\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Authentication.Login.LoginBtn'))+\" \")])],1)],1)])]),_c('article',{ref:\"search-bar\",staticClass:\"o-chrome-container h-60 bg-blue-500 oprema:bg-opremayellow-500 flex items-center relative\",class:{'hidden': _vm.hideMobileSearch},style:(_vm.topHeaderStyle)},[_c('SearchCtrl',{directives:[{name:\"sync-bodylock-gap\",rawName:\"v-sync-bodylock-gap\"}],staticClass:\"w-full\",attrs:{\"no-border\":_vm.searchFieldNoBorder,\"anchor-element\":_vm.searchOverlayAnchorElement}})],1)])]),_c('NotificationBanner'),_c('ImpersonationBanner')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{directives:[{name:\"sync-bodylock-gap\",rawName:\"v-sync-bodylock-gap\"}],staticClass:\"brand-header\",style:(_vm.topHeaderStyle)},[_c('div',{staticClass:\"o-chrome-container h-full\"},[_c('div',{staticClass:\"flex justify-between items-center h-full\"},_vm._l((_vm.brandLogos),function(brandLogo,ix){return _c('brand-logo',{key:ix,attrs:{\"content\":brandLogo}})}),1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('AdnuntiusPixels',{staticClass:\"mx-10 first:ml-0 last:mr-0\",attrs:{\"rendered-url\":_vm.content.renderedPixelUrl,\"visible-url\":_vm.content.visiblePixelUrl,\"view-url\":_vm.content.viewPixelUrl,\"click-url\":_vm.content.clickPixelUrl,\"always-visible\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar click = ref.click;\nreturn [_c('CultureAwareRouterLink',{staticClass:\"brand-link\",style:(_vm.brandThemeStyle),attrs:{\"to\":{ name: _vm.brandPageName, params: { brandName: _vm.brandUrl } },\"target\":\"_top\"},nativeOn:{\"click\":function($event){return click.apply(null, arguments)}}},[_c('img',{staticClass:\"brand-logo\",class:_vm.imageCssClass,style:((\"aspect-ratio: \" + (_vm.content.image.width / _vm.content.image.height))),attrs:{\"src\":_vm.content.image.url,\"alt\":_vm.content.name}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm._f(\"t\")('BrandHero.BrandLogo.SeeAllProductsFrom'))+\" \"+_vm._s(_vm.content.name))])])]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Prop, Vue } from 'vue-property-decorator';\r\nimport Component from 'vue-class-component';\r\nimport AdnuntiusPixels from '@/project/tracking/adnuntius/AdnuntiusPixels.vue';\r\nimport { BrandLogoViewModel } from '@/types/apiServerContract';\r\nimport { PageName } from '@/router/routes/constants';\r\nimport themeService from '@/project/app/themes/theme.service';\r\n\r\n@Component({\r\n components: { AdnuntiusPixels }\r\n})\r\nexport default class BrandLogo extends Vue {\r\n @Prop({\r\n type: Object\r\n }) content!: BrandLogoViewModel;\r\n\r\n private get imageCssClass() : string {\r\n const isTall = this.content.image.width < this.content.image.height;\r\n const isSquare = this.content.image.width === this.content.image.height;\r\n\r\n return isTall || isSquare ? 'brand-logo-max-h' : 'brand-logo-max-w';\r\n }\r\n\r\n private get brandUrl() {\r\n return this.content.name?.replace(/ /g, '-');\r\n }\r\n\r\n private get brandPageName() {\r\n return PageName.BRAND;\r\n }\r\n\r\n private get brandThemeStyle(): Partial {\r\n const isInWhiteTheme = themeService.isInWhiteTheme;\r\n\r\n return {\r\n ...(isInWhiteTheme && { filter: 'brightness(0) invert(1)' })\r\n };\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandLogo.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandLogo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BrandLogo.vue?vue&type=template&id=a8345424&scoped=true&\"\nimport script from \"./BrandLogo.vue?vue&type=script&lang=ts&\"\nexport * from \"./BrandLogo.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BrandLogo.vue?vue&type=style&index=0&id=a8345424&lang=less&scoped=true&\"\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 \"a8345424\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop, Watch } from 'vue-property-decorator';\r\nimport { Route } from 'vue-router';\r\nimport { BrandLogoViewModel, RequestBreakpoint } from '@/types/apiServerContract';\r\nimport breakpointsState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\nimport { XS, SM, MD } from '@/core/config/breakpointConfig';\r\nimport BrandLogo from './BrandLogo.vue';\r\nimport Api from '@/project/http/Api.service';\r\nimport adnuntiusService from '@/project/personalization/adnuntius.service';\r\nimport themeService from '@/project/app/themes/theme.service';\r\nimport { hexToRgbValues } from '@/core/color/color.service';\r\n\r\n@Component({\r\n components: { BrandLogo }\r\n})\r\nexport default class BrandHeader extends Vue {\r\n @Prop({\r\n type: Object\r\n }) content!: BrandLogoViewModel | null;\r\n\r\n private brandLogos: BrandLogoViewModel[] = [];\r\n\r\n private created() {\r\n this.getBrandLogos(this.activeBreakpoint);\r\n }\r\n\r\n private async getBrandLogos(breakpoint: RequestBreakpoint) {\r\n this.brandLogos = await Api.personalization.brandLogos(\r\n breakpoint,\r\n this.$route.fullPath,\r\n adnuntiusService.getContactKey(),\r\n adnuntiusService.getCustomerKey());\r\n }\r\n\r\n private get activeBreakpoint() : RequestBreakpoint {\r\n let adBreakpoint;\r\n const breakpoint = breakpointsState.activeBreakpoint;\r\n\r\n if (breakpoint === XS || breakpoint === SM) {\r\n adBreakpoint = RequestBreakpoint.Mobile;\r\n } else if (breakpoint === MD) {\r\n adBreakpoint = RequestBreakpoint.Tablet;\r\n } else {\r\n adBreakpoint = RequestBreakpoint.Desktop;\r\n }\r\n\r\n return adBreakpoint;\r\n }\r\n\r\n @Watch('activeBreakpoint')\r\n private onActiveBreakpointChange(value: RequestBreakpoint) {\r\n this.getBrandLogos(value);\r\n }\r\n\r\n @Watch('$route')\r\n private onRouteChange(newRoute: Route, oldRoute: Route) {\r\n if (newRoute.path !== oldRoute.path) {\r\n this.getBrandLogos(this.activeBreakpoint);\r\n }\r\n }\r\n\r\n private get topHeaderStyle(): Partial {\r\n const rgb = themeService.theme?.topColor && hexToRgbValues(themeService.theme.topColor);\r\n\r\n return {\r\n ...(rgb && { backgroundColor: `rgba(${rgb.red}, ${rgb.green}, ${rgb.blue}, ${themeService.takeOverOpacity})` }),\r\n ...(themeService.theme?.topColor && { borderColor: themeService.theme.topColor })\r\n };\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandHeader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandHeader.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BrandHeader.vue?vue&type=template&id=6bba4424&scoped=true&\"\nimport script from \"./BrandHeader.vue?vue&type=script&lang=ts&\"\nexport * from \"./BrandHeader.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BrandHeader.vue?vue&type=style&index=0&id=6bba4424&lang=less&scoped=true&\"\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 \"6bba4424\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.classes},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop } from 'vue-property-decorator';\r\nimport viewportEvents, { Viewport } from '@/core/responsive/viewport/viewportEvents.service';\r\nimport { range } from 'lodash';\r\n\r\ntype CallbackType = (on: boolean) => void;\r\n\r\ninterface ExtendedScrollPointDefinition {\r\n clazz?: string;\r\n callback?: CallbackType;\r\n}\r\n\r\ntype ScrollPointDefinition = string | CallbackType | ExtendedScrollPointDefinition;\r\ntype ScrollDirection = 'up' | 'down';\r\n\r\nexport interface ScrollTriggerOptions {\r\n scrollingDown?: ScrollPointDefinition,\r\n scrollingUp?: ScrollPointDefinition,\r\n\r\n [key: number]: ScrollPointDefinition\r\n}\r\n\r\nconst MinVelocity = 0.2;\r\nlet customScrollPointIds: string[];\r\nconst finalOptions = new Map();\r\n\r\n@Component\r\nexport default class ScrollTrigger extends Vue {\r\n private classes: string[] = [];\r\n private oldScrollY: number = 0;\r\n private oldTimestamp: number = 0;\r\n private scrollDirection: ScrollDirection | null = null;\r\n\r\n @Prop({\r\n type: Object,\r\n default: {}\r\n })\r\n private options!: ScrollTriggerOptions;\r\n\r\n mounted() {\r\n viewportEvents.setCallback(this.viewportEventHandler);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { scrollingDown, scrollingUp, ...customScrollDefinitions } = this.options;\r\n customScrollPointIds = Object.keys(customScrollDefinitions);\r\n\r\n // Create array with room for all classes\r\n this.classes = range(Object.keys(this.options).length).map(() => '');\r\n\r\n // fixup all scroll-definitions so we can handle them faster runtime\r\n Object.keys(this.options).forEach(spKey => {\r\n finalOptions.set(spKey, createExtendedDefinition(spKey, this.options[spKey]));\r\n });\r\n\r\n function createExtendedDefinition(key: string, scrollPoint: ScrollPointDefinition): ExtendedScrollPointDefinition {\r\n let clazz = `_${key}_`; // Fallback - in order to keep track of whether callback has been fired.\r\n let callback;\r\n if (typeof scrollPoint === 'string') {\r\n clazz = scrollPoint;\r\n } else if (typeof scrollPoint === 'function') {\r\n callback = scrollPoint;\r\n } else {\r\n clazz = scrollPoint.clazz || clazz;\r\n callback = scrollPoint.callback;\r\n }\r\n\r\n return {\r\n clazz,\r\n callback\r\n };\r\n }\r\n }\r\n\r\n destroyed() {\r\n viewportEvents.removeCallback(this.viewportEventHandler);\r\n }\r\n\r\n viewportEventHandler(viewport: Viewport, timestamp: number) {\r\n const scrollY = viewport.scrollY;\r\n if (scrollY === this.oldScrollY) return;\r\n this.handleScroll(scrollY, timestamp);\r\n this.oldScrollY = scrollY;\r\n this.oldTimestamp = timestamp;\r\n }\r\n\r\n handleScroll(scrollY: number, timestamp: number) {\r\n this.handleUpDown(scrollY, timestamp);\r\n this.handleScrollPoints(scrollY);\r\n }\r\n\r\n handleUpDown(scrollY: number, timestamp: number) {\r\n const currentScrollDirection: ScrollDirection = scrollY > this.oldScrollY ? 'down' : 'up';\r\n\r\n if (currentScrollDirection === this.scrollDirection) {\r\n // No changes\r\n return;\r\n }\r\n\r\n if (currentScrollDirection === 'down') {\r\n this.setScrollPoint('scrollingDown', 0);\r\n this.clearScrollPoint('scrollingUp', 1);\r\n this.scrollDirection = 'down';\r\n } else {\r\n // Change to scrolling up only if fast enough\r\n const velocity = Math.abs((scrollY - this.oldScrollY) / (timestamp - this.oldTimestamp));\r\n if (velocity >= MinVelocity) {\r\n this.setScrollPoint('scrollingUp', 1);\r\n this.clearScrollPoint('scrollingDown', 0);\r\n this.scrollDirection = 'up';\r\n }\r\n }\r\n }\r\n\r\n handleScrollPoints(scrollY: number) {\r\n customScrollPointIds.forEach((scrollPosId, ix) => {\r\n if (scrollY >= parseInt(scrollPosId, 10)) {\r\n this.setScrollPoint(scrollPosId, 2 + ix);\r\n } else {\r\n this.clearScrollPoint(scrollPosId, 2 + ix);\r\n }\r\n });\r\n }\r\n\r\n setScrollPoint(scrollPointId: string, position: number) {\r\n const scrollPointDef = finalOptions.get(scrollPointId);\r\n if (!scrollPointDef) return;\r\n\r\n // Already set ?\r\n if (this.classes[position]) return;\r\n\r\n Vue.set(this.classes, position, scrollPointDef.clazz);\r\n const cb = scrollPointDef.callback;\r\n if (cb) {\r\n cb(true);\r\n }\r\n }\r\n\r\n clearScrollPoint(scrollPointId: string, position: number) {\r\n const scrollPointDef = finalOptions.get(scrollPointId);\r\n if (!scrollPointDef) return;\r\n\r\n // Already cleared ?\r\n if (!this.classes[position]) return;\r\n\r\n Vue.set(this.classes, position, '');\r\n\r\n const cb = scrollPointDef.callback;\r\n if (cb) {\r\n cb(false);\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScrollTrigger.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScrollTrigger.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ScrollTrigger.vue?vue&type=template&id=d5201cc6&\"\nimport script from \"./ScrollTrigger.vue?vue&type=script&lang=ts&\"\nexport * from \"./ScrollTrigger.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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('section',{staticClass:\"input-search relative\"},[_c('input',{directives:[{name:\"autofocus\",rawName:\"v-autofocus\"},{name:\"prohibit-zoom\",rawName:\"v-prohibit-zoom\"}],ref:\"inputElem\",staticClass:\"input-field h-full w-full px-20 text-blue-500 oprema:text-black text-12 rounded-full\",class:{'border' : !_vm.noBorder},style:(_vm.searchInputStyle),attrs:{\"maxlength\":\"250\",\"name\":\"search\",\"type\":\"search\",\"placeholder\":_vm._f(\"t\")('Search.SearchFieldPlaceholder')},on:{\"input\":function($event){return _vm.lowlevelInputHandler($event.target.value)}}}),_c('transition',{attrs:{\"mode\":\"out-in\",\"enter-active-class\":\"animated fadeIn u-anim-dur-200\",\"leave-active-class\":\"animated fadeOut u-anim-dur-200\"}},[(_vm.term)?_c('button',{key:\"reset\",staticClass:\"reset-icon\",on:{\"click\":_vm.reset}},[_c('c-icon',{attrs:{\"name\":\"close\",\"color\":_vm.searchInputIconColor}})],1):_c('c-icon',{key:\"search\",staticClass:\"search-icon\",attrs:{\"name\":\"search\",\"color\":_vm.searchInputIconColor}})],1)],1),_c('SearchOverlay',{attrs:{\"show\":_vm.show,\"typing\":_vm.typing,\"anchor-element\":_vm.anchorElement},on:{\"close\":function($event){return _vm.reset()}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"appear\":\"\",\"enter-active-class\":\"animated fadeIn u-anim-dur-300\",\"leave-active-class\":\"animated fadeOut u-anim-dur-200\"}},[(_vm.internalShow)?_c('article',{staticClass:\"search-overlay\"},[_c('section',{ref:\"scrollContainer\",staticClass:\"fixed inset-x-0 bottom-0 bg-gray-300 overflow-y-scroll z-1 pb-20\",style:(_vm.scrollContainerStyle())},[_c('SearchProductControl',{staticClass:\"mt-25\",attrs:{\"scroll-container\":_vm.scrollContainer,\"allow-term\":\"\",\"reactive-categories\":\"\",\"use-flattened-category-tree\":\"\",\"context-key\":\"search\"},scopedSlots:_vm._u([{key:\"navigation\",fn:function(ref){\nvar menuItems = ref.menuItems;\nreturn [(menuItems.length > 0)?_c('CategoryFacets',{attrs:{\"menu-items\":menuItems}}):_vm._e()]}}],null,false,2750687420)})],1)]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","let _scrollPos = 0;\r\n\r\nfunction setScrollPos(scrollPos: number): void {\r\n _scrollPos = scrollPos;\r\n}\r\n\r\nfunction getScrollPos(): number {\r\n return _scrollPos;\r\n}\r\n\r\nexport {\r\n setScrollPos,\r\n getScrollPos\r\n};\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop, Watch } from 'vue-property-decorator';\r\nimport SearchProductControl from './SearchProductControl.vue';\r\nimport CategoryFacets from './facets/CategoryFacets.vue';\r\nimport scrollService from '@/core/scroll/scroll.service';\r\nimport { PageName } from '@/router/routes/constants';\r\nimport escEventService from '@/core/esc-event.service';\r\nimport { getScrollPos, setScrollPos } from './searchScrollPos.service';\r\nimport { Ensure as PageReadyForScrollEnsured } from '@/router/Ensure';\r\nimport bus from '@/core/bus';\r\nimport { HasOutstandingXhrCallsEventKey } from '@/core/http/constants';\r\nimport { Route } from 'vue-router';\r\n\r\nlet hasOutstandingXHRRequests = false;\r\nlet clearOutstandingXHRRequestsTimerHandle = 0;\r\n\r\n@Component({\r\n components: { SearchProductControl, CategoryFacets }\r\n})\r\nexport default class SearchOverlay extends Vue {\r\n private internalShow = false;\r\n private scrollContainer: any = null;\r\n private doRestoreScrollPos = false;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n show!: boolean;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n typing!: boolean;\r\n\r\n @Prop({ type: HTMLElement })\r\n anchorElement!: HTMLElement;\r\n\r\n private created() {\r\n bus.on(HasOutstandingXhrCallsEventKey, this.handleOutstandingXhrChange);\r\n }\r\n\r\n private handleOutstandingXhrChange(hasOutstanding: boolean) {\r\n if (hasOutstanding) {\r\n clearTimeout(clearOutstandingXHRRequestsTimerHandle);\r\n hasOutstandingXHRRequests = true;\r\n } else {\r\n // Allow for rendering of data returned from call\r\n clearOutstandingXHRRequestsTimerHandle = setTimeout(() => hasOutstandingXHRRequests = false, 25);\r\n }\r\n }\r\n\r\n @Watch('$route')\r\n onRouteChange(newRoute: Route, oldRoute: Route) {\r\n // Restore when returning to search-result - e.g. from product-details-page\r\n this.doRestoreScrollPos = oldRoute.name === PageName.PRODUCT_DETAILS;\r\n }\r\n\r\n @Watch('show', {\r\n immediate: true\r\n })\r\n onShowChange(show: boolean) {\r\n if (show) {\r\n // Allow element to become visible\r\n this.internalShow = true;\r\n this.$nextTick(() => {\r\n this.scrollContainer = this.$refs.scrollContainer;\r\n scrollService.disableBodyScroll(this.scrollContainer);\r\n if (this.doRestoreScrollPos) {\r\n this.restoreScrollPos();\r\n }\r\n this.scrollContainer.addEventListener('scroll', this.captureScrollPos);\r\n escEventService.register(this.close);\r\n });\r\n } else if (this.internalShow) {\r\n scrollService.enableBodyScroll(this.scrollContainer);\r\n this.scrollContainer.removeEventListener('scroll', this.captureScrollPos);\r\n this.internalShow = false;\r\n }\r\n }\r\n\r\n scrollContainerStyle(): object {\r\n const top = this.anchorElement?.getBoundingClientRect().bottom ?? 0;\r\n\r\n return ({\r\n top: top + 'px'\r\n });\r\n }\r\n\r\n private close() {\r\n this.$emit('close');\r\n }\r\n\r\n private captureScrollPos(event: Event) {\r\n setScrollPos((event.target as Element).scrollTop);\r\n }\r\n\r\n private async restoreScrollPos() {\r\n if (!this.doRestoreScrollPos) return;\r\n\r\n const savedScrollPos = getScrollPos();\r\n if (savedScrollPos > 0) {\r\n try {\r\n const ensure = new PageReadyForScrollEnsured(\r\n () => (!hasOutstandingXHRRequests && this.scrollContainer.scrollHeight >= savedScrollPos));\r\n\r\n await ensure.start();\r\n scrollService.animateScroll(savedScrollPos, 400, this.scrollContainer);\r\n } catch (e) {\r\n // Probably timed out, we live with it.\r\n }\r\n }\r\n }\r\n\r\n $refs!: Vue['$refs'] & {\r\n scrollContainer: HTMLElement\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchOverlay.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchOverlay.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchOverlay.vue?vue&type=template&id=77846914&\"\nimport script from \"./SearchOverlay.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchOverlay.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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop, Watch } from 'vue-property-decorator';\r\nimport { debounce } from 'lodash';\r\nimport urlHelper from '@/core/urlHelper.service';\r\nimport SearchOverlay from '@/project/search/SearchOverlay.vue';\r\nimport { Route } from 'vue-router';\r\nimport themeService from '@/project/app/themes/theme.service';\r\nimport serverContextService from '@/core/serverContext.service';\r\nimport tailwind from '@/styling/tailwind.config';\r\n\r\nconst minNoOfCharacters = 2;\r\nconst debounceTime = 300;\r\n@Component({\r\n components: { SearchOverlay }\r\n})\r\nexport default class SearchCtrl extends Vue {\r\n private term = '';\r\n private debounceSetTerm = debounce(this.setTerm, debounceTime);\r\n private show = this.shouldShowOverlay(this.term);\r\n private typing = false;\r\n\r\n @Prop({ type: HTMLElement })\r\n anchorElement!: HTMLElement;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n noBorder!: boolean;\r\n\r\n @Watch('$route')\r\n private onRouteChange(route: Route, oldRoute: Route) {\r\n if (!this.show) {\r\n const term = urlHelper.getTerm();\r\n if (!term) {\r\n return;\r\n } else {\r\n this.onTermChanged(term);\r\n }\r\n }\r\n\r\n if (!urlHelper.getTerm()) {\r\n // We came to page without term - reset / close\r\n this.setTerm('', false);\r\n } else {\r\n // Term updated - for instance from translation (alternative) search\r\n this.setSyncedTerm(urlHelper.getTerm()!);\r\n }\r\n }\r\n\r\n @Watch('term')\r\n private onTermChanged(term: string) {\r\n this.typing = true;\r\n\r\n this.debounceSetTerm(term);\r\n }\r\n\r\n private setTerm(term: string, goBack: boolean = true) {\r\n this.setSyncedTerm(term);\r\n const oldShow = this.show;\r\n this.show = this.shouldShowOverlay(term);\r\n\r\n if (this.show) {\r\n const justShown = this.show && !oldShow;\r\n urlHelper.setTerm(term, justShown);\r\n if (!justShown) {\r\n urlHelper.clearFacets();\r\n }\r\n }\r\n\r\n this.typing = false;\r\n }\r\n\r\n private reset() {\r\n this.setTerm('');\r\n urlHelper.setTerm('');\r\n }\r\n\r\n private shouldShowOverlay(term: string): boolean {\r\n return term?.length >= minNoOfCharacters;\r\n }\r\n\r\n private setSyncedTerm(term: string = '') {\r\n this.term = term;\r\n this.$refs.inputElem.value = term;\r\n }\r\n\r\n private lowlevelInputHandler(term: string) {\r\n if (term.length > 0 && term.trim().length === 0) {\r\n this.$refs.inputElem.value = '';\r\n } else {\r\n this.term = term;\r\n }\r\n }\r\n\r\n $refs!: Vue['$refs'] & {\r\n inputElem: HTMLInputElement\r\n }\r\n\r\n private mounted() {\r\n this.setSyncedTerm(urlHelper.getTerm());\r\n }\r\n\r\n private get searchInputIconColor(): string {\r\n return themeService.isInWhiteTheme ? 'white' : this.isOprema ? 'black' : (tailwind.theme.colors.blue['500']);\r\n }\r\n\r\n get isOprema() {\r\n return serverContextService?.isOprema;\r\n }\r\n\r\n private get searchInputStyle(): Partial {\r\n const isInWhiteTheme = themeService.isInWhiteTheme;\r\n\r\n return {\r\n ...(isInWhiteTheme && { color: '#fff' }),\r\n ...(isInWhiteTheme && { backgroundColor: 'transparent' }),\r\n ...(isInWhiteTheme && { borderColor: '#fff' })\r\n };\r\n }\r\n}\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchCtrl.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchCtrl.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchCtrl.vue?vue&type=template&id=68c5b8cd&scoped=true&\"\nimport script from \"./SearchCtrl.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchCtrl.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SearchCtrl.vue?vue&type=style&index=0&id=68c5b8cd&lang=less&scoped=true&\"\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 \"68c5b8cd\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{staticClass:\"relative\"},[_c('culture-aware-router-link',{class:{'is-mobile' : _vm.isMobile },attrs:{\"to\":{ name: _vm.basketPage }}},[_c('div',{staticClass:\"mini-basket rounded-full relative flex items-center justify-center\",class:{ 'mini-basket__heartbeat': _vm.animate,\n 'bg-white text-black': _vm.isInWhiteTheme ,\n 'bg-green-500 oprema:bg-opremablue-300 text-white': !_vm.isInWhiteTheme },on:{\"animationend\":function($event){_vm.animate = false}}},[_c('c-icon',{staticClass:\"mini-basket__basket-icon relative\",attrs:{\"name\":\"basket\"}})],1),(_vm.noOfBasketItems > 0)?_c('div',{staticClass:\"mini-basket__items-count absolute rounded-full flex items-center justify-center\",class:{ 'mini-basket__pulse': _vm.animate,\n 'bg-white text-black': _vm.isInWhiteTheme ,\n 'bg-green-500 oprema:bg-opremablue-100 text-white': !_vm.isInWhiteTheme }},[_c('span',{staticClass:\"inline-block font-bold text-11 md:text-12 leading-none\"},[_vm._v(_vm._s(_vm.noOfBasketItems))]),_c('span',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm._f(\"t\")('Checkout.BasketLink')))])]):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop, Watch } from 'vue-property-decorator';\r\nimport basketService from '@/project/basket/basket.service';\r\nimport { PageName } from '@/router/routes/constants';\r\nimport themeService from '@/project/app/themes/theme.service';\r\n\r\n@Component\r\nexport default class MiniBasket extends Vue {\r\n animate = false;\r\n\r\n @Prop({ type: Boolean, default: false })\r\n isMobile!: boolean\r\n\r\n get noOfBasketItems(): number {\r\n return basketService.noOfBasketItems();\r\n }\r\n\r\n @Watch('noOfBasketItems')\r\n onNoOfLineItemsChange() {\r\n if (basketService.basket) { this.animate = true; }\r\n }\r\n\r\n get basketPage() {\r\n return PageName.BASKET;\r\n }\r\n\r\n get isInWhiteTheme(): boolean {\r\n return themeService.isInWhiteTheme;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MiniBasket.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MiniBasket.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MiniBasket.vue?vue&type=template&id=7b419120&\"\nimport script from \"./MiniBasket.vue?vue&type=script&lang=ts&\"\nexport * from \"./MiniBasket.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MiniBasket.vue?vue&type=style&index=0&lang=less&\"\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 { AbstractModalService } from '@/core/modals/AbstractModalService';\r\n\r\nclass MobileMenuOverlayService extends AbstractModalService {\r\n public show() {\r\n return this.showModal({\r\n component: () => import(\r\n /* webpackPrefetch: true */\r\n '@/project/layout/page-header/mobile/MobileMenu.vue'),\r\n componentAttrs: {\r\n },\r\n options: {\r\n showCloseButton: false,\r\n contentMaxHeight: false,\r\n disableBodyScroll: true,\r\n usePanelWrapper: false,\r\n placement: 'left'\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default new MobileMenuOverlayService();\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport BrandHeader from '@/project/layout/page-header/BrandHeader.vue';\r\nimport ScrollTrigger, { ScrollTriggerOptions } from '@/core/scroll/ScrollTrigger.vue';\r\nimport SearchCtrl from '@/project/search/SearchCtrl.vue';\r\nimport MiniBasket from '@/project/basket/MiniBasket.vue';\r\nimport authService from '@/core/auth/auth.service';\r\nimport NotificationBanner from '@/project/shared/notifications/NotificationBanner.vue';\r\nimport ImpersonationBanner from '@/project/shared/impersonation/ImpersonationBanner.vue';\r\nimport loginFormOverlayService from '@/project/modals/overlays/LoginFormOverlay.service';\r\nimport mobileMenuOverlayService from '@/project/modals/overlays/MobileMenuOverlay.service';\r\nimport themeService from '@/project/app/themes/theme.service';\r\nimport { hexToRgbValues } from '@/core/color/color.service';\r\nimport serverContextService from '@/core/serverContext.service';\r\nimport appStore from '@/core/app/app.store';\r\n\r\n@Component({\r\n components: { MiniBasket, SearchCtrl, ScrollTrigger, BrandHeader, NotificationBanner, ImpersonationBanner }\r\n})\r\nexport default class MobilePageHeader extends Vue {\r\n private searchOverlayAnchorElement: Element | null = null;\r\n\r\n mounted() {\r\n this.searchOverlayAnchorElement = this.$refs['search-bar'] as Element;\r\n }\r\n\r\n private get isLoggedIn() {\r\n return authService.isLoggedIn();\r\n }\r\n\r\n private login() {\r\n loginFormOverlayService.show('login');\r\n }\r\n\r\n private showMobileMenu() {\r\n mobileMenuOverlayService.show();\r\n }\r\n\r\n private get searchFieldNoBorder(): boolean {\r\n return !serverContextService.isOprema && !this.isInWhiteTheme;\r\n }\r\n\r\n private get logoDimensions(): {width: string, height: string } {\r\n return {\r\n height: '60',\r\n width: serverContextService.isOprema ? '120' : '60'\r\n };\r\n }\r\n\r\n private get isInWhiteTheme() {\r\n return themeService.isInWhiteTheme;\r\n }\r\n\r\n private get topHeaderStyle(): Partial {\r\n const rgb = themeService.theme?.topColor && hexToRgbValues(themeService.theme.topColor);\r\n\r\n return {\r\n ...(rgb && { backgroundColor: `rgba(${rgb.red}, ${rgb.green}, ${rgb.blue}, ${themeService.takeOverOpacity})` }),\r\n ...(themeService.theme?.topColor && { borderColor: themeService.theme.topColor })\r\n };\r\n }\r\n\r\n get scrollTriggerOptions(): ScrollTriggerOptions {\r\n return this.showBrands\r\n ? { 40: 'header-fixed' }\r\n : { 1: 'header-fixed' };\r\n }\r\n\r\n get hideMobileSearch(): boolean {\r\n // not logged in and on frontpage: true, else false\r\n if (this.isOnFrontpage && this.isLoggedIn === false) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n get showBrands(): boolean {\r\n // not logged in on frontpage: false, else true\r\n if (this.isOnFrontpage && this.isLoggedIn === false) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n get isOnFrontpage(): boolean {\r\n return appStore.isFrontPage;\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobilePageHeader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobilePageHeader.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MobilePageHeader.vue?vue&type=template&id=ad7dc1a4&scoped=true&\"\nimport script from \"./MobilePageHeader.vue?vue&type=script&lang=ts&\"\nexport * from \"./MobilePageHeader.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MobilePageHeader.vue?vue&type=style&index=0&id=ad7dc1a4&lang=less&scoped=true&\"\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 \"ad7dc1a4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{staticClass:\"z-header absolute top-0 inset-x-0\"},[_c('ScrollTrigger',{attrs:{\"options\":_vm.scrollTriggerOptions}},[(_vm.showBrands)?_c('div',{staticClass:\"brand-header relative z-1\"},[_c('BrandHeader')],1):_vm._e(),_c('div',{staticClass:\"top-header-wrapper\"},[_c('div',{staticClass:\"top-header relative z-1\"},[_c('TopHeader')],1)]),_c('div',{staticClass:\"main-navigation\",class:{ '-main-navigation-fixed' : _vm.mainNavigationFixed,\n '-transition-enabled' : _vm.mainNavigationTransitionEnabled,\n '-mega-menu-shown': _vm.megaMenuShown }},[_c('MainNavigation',{on:{\"megaMenuShown\":_vm.megaMenuShownChange}})],1)]),_c('NotificationBanner'),_c('ImpersonationBanner')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{directives:[{name:\"sync-bodylock-gap\",rawName:\"v-sync-bodylock-gap\"}],staticClass:\"top-header-container\",style:(_vm.topHeaderStyle)},[_c('div',{staticClass:\"top-header o-chrome-container h-full\"},[_c('div',{staticClass:\"flex items-center h-full\"},[_c('CultureAwareRouterLink',{attrs:{\"to\":_vm.frontpageUrl,\"title\":_vm.logoAltText}},[_c('div',{class:{ 'text-white': _vm.isInWhiteTheme, 'text-blue-500 oprema:text-black': !_vm.isInWhiteTheme }},[(_vm.isOprema)?[_c('c-icon',{staticClass:\"block oprema-logo\",attrs:{\"name\":\"oprema-logo\",\"width\":\"100\"}})]:[_c('c-icon',{staticClass:\"block logo-half-top\",attrs:{\"name\":\"logo-half-top\",\"width\":\"63\"}}),_c('c-icon',{staticClass:\"block logo-half-eet\",attrs:{\"name\":\"logo-half-eet\",\"width\":\"52\"}})]],2)]),_c('div',{staticClass:\"search-left-spacer\"}),_c('SearchCtrl',{staticClass:\"search-field mr-auto text-black\",attrs:{\"anchor-element\":_vm.searchOverlayAnchorElement}}),_c('div',{staticClass:\"header-nav-buttons\",class:{ 'text-white': _vm.isInWhiteTheme }},[(_vm.productGuidePage)?_c('div',{staticClass:\"header-nav-button\"},[_c('CultureAwareRouterLink',{staticClass:\"my-account-link\",class:{ 'text-white': _vm.isInWhiteTheme },attrs:{\"to\":_vm.productGuidePage}},[_c('c-icon',{attrs:{\"name\":\"productguide\",\"width\":\"20\",\"height\":\"20\",\"aria-hidden\":\"true\"}}),_c('span',{staticClass:\"whitespace-no-wrap\"},[_vm._v(_vm._s(_vm._f(\"t\")('ProductGuide')))])],1)],1):_vm._e(),(_vm.salesAndSupportPage)?_c('div',{staticClass:\"header-nav-button\"},[_c('CultureAwareRouterLink',{staticClass:\"my-account-link\",class:{ 'text-white': _vm.isInWhiteTheme },attrs:{\"to\":_vm.salesAndSupportPage}},[_c('c-icon',{attrs:{\"name\":\"support\",\"width\":\"20\",\"height\":\"20\",\"aria-hidden\":\"true\"}}),_c('span',{staticClass:\"whitespace-no-wrap\"},[_vm._v(_vm._s(_vm._f(\"t\")('FrontPage.SalesAndSupport')))])],1)],1):_vm._e(),(_vm.isLoggedIn)?[_c('div',{staticClass:\"header-nav-button\"},[_c('CultureAwareRouterLink',{staticClass:\"my-account-link\",class:{ 'text-white': _vm.isInWhiteTheme },attrs:{\"to\":{ name: _vm.favouritesPageName }}},[_c('c-icon',{attrs:{\"name\":\"favorite-outline\",\"width\":\"20\",\"height\":\"20\",\"aria-hidden\":\"true\"}}),_c('span',{staticClass:\"whitespace-no-wrap\"},[_vm._v(_vm._s(_vm._f(\"t\")('MyAccount.Favourites.Title')))])],1)],1),_c('div',{staticClass:\"header-nav-button\"},[_c('CultureAwareRouterLink',{staticClass:\"my-account-link\",class:{ 'text-white': _vm.isInWhiteTheme },attrs:{\"to\":{ name: _vm.myAccountPageName }}},[_c('c-icon',{attrs:{\"name\":\"profile\",\"width\":\"20\",\"height\":\"20\",\"aria-hidden\":\"true\"}}),_c('span',{staticClass:\"whitespace-no-wrap\"},[_vm._v(_vm._s(_vm._f(\"t\")('MyAccount.Header.Link')))])],1)],1)]:_c('button',{staticClass:\"header-nav-button\",on:{\"click\":_vm.login}},[_c('span',{staticClass:\"my-account-link font-bold\"},[_c('c-icon',{attrs:{\"name\":\"login\",\"width\":\"20\",\"height\":\"20\",\"aria-hidden\":\"true\"}}),_c('span',{staticClass:\"whitespace-no-wrap\"},[_vm._v(_vm._s(_vm._f(\"t\")('Authentication.Login.LoginBtn')))])],1)]),(!_vm.isLoggedIn && _vm.becomeACustomerPage)?_c('CultureAwareRouterLink',{staticClass:\"header-nav-button self-start bg-blue-500 oprema:bg-opremablue-300 text-white px-20 py-13 rounded-30\",attrs:{\"data-tracking-name\":\"becomeACustomerPage\",\"to\":_vm.becomeACustomerPage}},[_c('span',{staticClass:\"whitespace-no-wrap font-regular leading-none\"},[_vm._v(_vm._s(_vm._f(\"t\")('Information.BecomeACustomer.HeaderButton')))])]):_vm._e(),(_vm.isLoggedIn && _vm.isDevMode())?_c('button',{staticClass:\"header-nav-button\",on:{\"click\":_vm.logout}},[_c('span',{staticClass:\"my-account-link font-bold\"},[_c('c-icon',{attrs:{\"name\":\"login\",\"width\":\"20\",\"height\":\"20\",\"aria-hidden\":\"true\"}}),_c('span',{staticClass:\"whitespace-no-wrap\"},[_vm._v(_vm._s(_vm._f(\"t\")('MyAccount.Navigation.SignOut')))])],1)]):_vm._e()],2),(_vm.isLoggedIn && _vm.$permission.canPlaceOrder())?_c('mini-basket',{staticClass:\"ml-30\"}):_vm._e()],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport authService from '@/core/auth/auth.service';\r\nimport SearchCtrl from '@/project/search/SearchCtrl.vue';\r\nimport MiniBasket from '@/project/basket/MiniBasket.vue';\r\nimport { PageName } from '@/router/routes/constants';\r\nimport serverContextService from '@/core/serverContext.service';\r\nimport loginFormOverlayService from '@/project/modals/overlays/LoginFormOverlay.service';\r\nimport themeService from '@/project/app/themes/theme.service';\r\nimport { hexToRgbValues } from '@/core/color/color.service';\r\nimport { isDevMode } from '@/core/environmentService';\r\n\r\n@Component({\r\n components: { MiniBasket, SearchCtrl }\r\n})\r\nexport default class TopHeader extends Vue {\r\n private searchTerm = '';\r\n private searchOverlayAnchorElement: Element | null = null;\r\n\r\n mounted() {\r\n this.searchOverlayAnchorElement = this.$el;\r\n }\r\n\r\n login() {\r\n loginFormOverlayService.show('login');\r\n }\r\n\r\n get isLoggedIn(): boolean {\r\n return authService.isLoggedIn();\r\n }\r\n\r\n get myAccountPageName() {\r\n return PageName.MY_ACCOUNT_PROFILE;\r\n }\r\n\r\n get favouritesPageName() {\r\n return PageName.MY_ACCOUNT_FAVOURITES;\r\n }\r\n\r\n get productGuidePage() {\r\n return serverContextService?.settings?.productGuidePage;\r\n }\r\n\r\n get becomeACustomerPage() {\r\n return serverContextService?.settings?.becomeACustomerPage;\r\n }\r\n\r\n get salesAndSupportPage() {\r\n return serverContextService?.settings?.salesAndSupportPage;\r\n }\r\n\r\n get isOprema() {\r\n return serverContextService?.isOprema;\r\n }\r\n\r\n private isDevMode(): boolean {\r\n return isDevMode();\r\n }\r\n\r\n private logout() {\r\n authService.logOff();\r\n }\r\n\r\n private get topHeaderStyle(): Partial {\r\n const rgb = themeService.theme?.topColor && hexToRgbValues(themeService.theme.topColor);\r\n\r\n return {\r\n ...(rgb && { backgroundColor: `rgba(${rgb.red}, ${rgb.green}, ${rgb.blue}, ${themeService.takeOverOpacity})` }),\r\n ...(themeService.theme?.topColor && { borderColor: themeService.theme.topColor })\r\n };\r\n }\r\n\r\n private get isInWhiteTheme() {\r\n return themeService.isInWhiteTheme;\r\n }\r\n\r\n private get logoAltText():string {\r\n return serverContextService.footer?.companyDetails?.companyName || '';\r\n }\r\n\r\n private get frontpageUrl():string {\r\n return serverContextService.siteInfo?.url || '/';\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopHeader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopHeader.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TopHeader.vue?vue&type=template&id=2960b9f2&scoped=true&\"\nimport script from \"./TopHeader.vue?vue&type=script&lang=ts&\"\nexport * from \"./TopHeader.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TopHeader.vue?vue&type=style&index=0&id=2960b9f2&lang=less&scoped=true&\"\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 \"2960b9f2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{staticClass:\"c-navigation relative z-0\"},[_c('div',{directives:[{name:\"syncBodylockGap\",rawName:\"v-syncBodylockGap\"}],ref:\"megaMenuAnchor\",staticClass:\"c-navigation-anchor relative z-1 bg-blue-500 oprema:bg-opremayellow-500 text-white oprema:text-black\",style:(_vm.navigationStyle),on:{\"mouseleave\":function($event){return _vm.toggleMegaMenu(false)},\"mouseenter\":function($event){return _vm.cancelMegaMenuClosing()}}},[_c('div',{staticClass:\"o-chrome-container\"},[_c('section',{staticClass:\"level-1-menu\"},[_c('MainNavigationSlider',{attrs:{\"menus\":_vm.menus,\"active-menu\":_vm.activeMenu,\"mega-menu-shown\":_vm.megaMenuShown},on:{\"activeMenuChanged\":_vm.changeMegaMenuDebounce,\"cancelMegaMenuNavigation\":_vm.cancelMegaMenuNavigation,\"closeMegaMenu\":function($event){return _vm.toggleMegaMenu(false)}}})],1)])]),_c('transition',{attrs:{\"name\":\"mega-menu\"}},[(_vm.megaMenuShown)?_c('div',{ref:\"megaMenuContainer\",staticClass:\"mega-menu bg-white overflow-y-auto relative\",style:(_vm.megaMenuStyle()),on:{\"mouseleave\":function($event){return _vm.toggleMegaMenu(false)},\"mouseenter\":function($event){return _vm.toggleMegaMenu(true)}}},[_c('div',{staticClass:\"o-chrome-container bg-white\"},[_c('section',{staticClass:\"py-20 flex flex-row flex-wrap\"},_vm._l((_vm.activeMenu.children),function(menu,mi){return _c('div',{key:mi,staticClass:\"sm:w-1/4 xl:w-1/5 mb-20 pr-20\"},[_c('culture-aware-router-link',{staticClass:\"sm:text-12 md:text-14 lg:text-16 font-semi-bold mb-10 hover:underline block truncate\",attrs:{\"to\":menu.url},nativeOn:{\"click\":function($event){return _vm.toggleMegaMenu(false)}}},[_c('span',{attrs:{\"title\":menu.name}},[_vm._v(_vm._s(menu.name))]),_c('c-icon',{staticClass:\"ml-2\",attrs:{\"name\":\"icon-arrow-right\",\"width\":\"8\",\"height\":\"8\"}})],1),(menu.children && menu.children.length > 0)?_c('read-more',{key:menu.name,attrs:{\"tag\":\"ul\",\"min-items\":12,\"animation-time-mod\":0,\"button-class\":\"text-gray-900 sm:text-10 md:text-12 lg:text-13 cursor-pointer hover:font-medium pt-6\"}},[_vm._l((menu.children),function(child,ci){return _c('li',{key:ci},[_c('culture-aware-router-link',{staticClass:\"leading-double sm:text-10 md:text-12 lg:text-13 font-regular hover:underline block truncate\",attrs:{\"to\":child.url},nativeOn:{\"click\":function($event){return _vm.toggleMegaMenu(false)}}},[_c('span',{attrs:{\"title\":child.name}},[_vm._v(_vm._s(child.name))])])],1)}),_c('div',{attrs:{\"slot\":\"collapse\"},slot:\"collapse\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Generic.ReadLess'))+\" \")]),_c('div',{attrs:{\"slot\":\"expand\"},slot:\"expand\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Generic.ReadMore'))+\" \")])],2):_vm._e()],1)}),0)]),_c('button',{staticClass:\"overlay__close\",attrs:{\"aria-label\":\"Close\"},on:{\"click\":function($event){return _vm.close()}}},[_c('c-icon',{staticClass:\"close-cross\",attrs:{\"name\":\"close\",\"height\":\"12\",\"width\":\"12\"}})],1)]):_vm._e()]),(_vm.renderMenuStatic)?_c('nav',{staticClass:\"sr-only\"},[_vm._l((_vm.menus),function(firstLevelMenus){return [_vm._l((firstLevelMenus.children),function(secondLevelMenu){return [_c('culture-aware-router-link',{key:firstLevelMenus.name + secondLevelMenu.name,attrs:{\"to\":secondLevelMenu.url}},[_vm._v(\" \"+_vm._s(secondLevelMenu.name)+\" \")]),_vm._l((secondLevelMenu.children),function(thirdLevelMenu){return [_c('culture-aware-router-link',{key:firstLevelMenus.name + secondLevelMenu.name + thirdLevelMenu.name,attrs:{\"to\":thirdLevelMenu.url}},[_vm._v(\" \"+_vm._s(thirdLevelMenu.name)+\" \")]),_vm._l((thirdLevelMenu.children),function(fourthLevelMenu){return [_c('culture-aware-router-link',{key:firstLevelMenus.name + secondLevelMenu.name + thirdLevelMenu.name + fourthLevelMenu.name,attrs:{\"to\":fourthLevelMenu.url}},[_vm._v(\" \"+_vm._s(fourthLevelMenu.name)+\" \")])]})]})]})]})],2):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('simple-slider',{staticClass:\"h-full\",attrs:{\"tag\":\"nav\"},scopedSlots:_vm._u([{key:\"left-arrow\",fn:function(ref){\nvar active = ref.active;\nreturn [(active)?_c('div',{staticClass:\"prev-arrow\"},[_c('c-icon',{attrs:{\"name\":\"arrow-left\",\"width\":\"15\",\"height\":\"15\"}})],1):_vm._e()]}},{key:\"right-arrow\",fn:function(ref){\nvar active = ref.active;\nreturn [(active)?_c('div',{staticClass:\"next-arrow\"},[_c('c-icon',{attrs:{\"name\":\"arrow-right\",\"width\":\"15\",\"height\":\"15\"}})],1):_vm._e()]}}])},[_vm._l((_vm.menus),function(menu,mi){return _c('div',{key:mi,staticClass:\"navigation-item inline-flex items-center h-full relative mr-20 lg:mr-40\",class:{active: _vm.megaMenuShown && _vm.activeMenu === menu},on:{\"mouseenter\":function($event){return _vm.mouseEnter(menu)},\"mouseleave\":function($event){return _vm.mouseLeave(menu)}}},[_c('culture-aware-router-link',{staticClass:\"navigation-item-link\",attrs:{\"to\":menu.url},nativeOn:{\"click\":function($event){return _vm.$emit('closeMegaMenu')}}},[_vm._v(\" \"+_vm._s(menu.name)+\" \")])],1)}),(_vm.campaignLink)?_c('div',{staticClass:\"flex-1 flex justify-end\"},[_c('div',{staticClass:\"navigation-item inline-flex items-center h-full relative\"},[_c('culture-aware-router-link',{staticClass:\"navigation-item-link flex items-center justify-center\",attrs:{\"to\":_vm.campaignLink.url},on:{\"mouseenter\":function($event){return _vm.$emit('closeMegaMenu')}}},[_c('CampaignIcon',{staticClass:\"mr-8\",attrs:{\"campaign-code\":_vm.campaignCode,\"fill\":true,\"original\":false,\"width\":\"15\",\"height\":\"15\"}}),_c('span',[_vm._v(_vm._s(_vm.campaignLink.name))])],1)],1)]):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.tag,{tag:\"component\",staticClass:\"simple-slider\"},[_c('div',{ref:\"container\",staticClass:\"simple-slider-container\"},[_c('div',{ref:\"content\",staticClass:\"simple-slider-content\",style:(_vm.style)},[_vm._t(\"default\")],2)]),_c('div',{staticClass:\"nav-arrows\"},[_c('div',{on:{\"click\":_vm.prev}},[_vm._t(\"left-arrow\",function(){return [(_vm.leftOverflow)?_c('div',{staticClass:\"prev-arrow\"},[_c('c-icon',{attrs:{\"name\":\"arrow-left\",\"width\":\"15\",\"height\":\"15\"}})],1):_vm._e()]},{\"active\":_vm.leftOverflow})],2),_c('div',{on:{\"click\":_vm.next}},[_vm._t(\"right-arrow\",function(){return [(_vm.rightOverflow)?_c('div',{staticClass:\"next-arrow\"},[_c('c-icon',{attrs:{\"name\":\"arrow-right\",\"width\":\"15\",\"height\":\"15\"}})],1):_vm._e()]},{\"active\":_vm.rightOverflow})],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop, Watch } from 'vue-property-decorator';\r\nimport breakpointsState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\n\r\ntype OverflowLocation = 'left' | 'right' | 'both' | 'none';\r\n\r\n@Component\r\nexport default class SimpleSlider extends Vue {\r\n @Prop({ type: String, required: false, default: 'div' }) tag!: string;\r\n @Prop({ type: Number, required: false, default: 0 }) slidesToScroll!: number;\r\n @Prop({ type: Number, required: false, default: 500 }) speed!: number;\r\n @Prop({ type: Boolean, required: false, default: false }) spaceBetween!: boolean;\r\n\r\n private overflowLoc: OverflowLocation = 'none';\r\n private translateX: number = 0;\r\n private isScrolling: boolean = false;\r\n private observer: any = null;\r\n\r\n get style(): Partial {\r\n return {\r\n transition: `transform ${this.speed}ms ease-in-out`,\r\n transform: `translate(${this.translateX}px, 0)`,\r\n ...(this.spaceBetween && { justifyContent: 'space-between' })\r\n };\r\n }\r\n\r\n get leftOverflow(): boolean {\r\n return this.overflowLoc === 'left' || this.overflowLoc === 'both';\r\n }\r\n\r\n get rightOverflow(): boolean {\r\n return this.overflowLoc === 'right' || this.overflowLoc === 'both';\r\n }\r\n\r\n public prev() {\r\n if (this.isScrolling) return;\r\n\r\n this.isScrolling = true;\r\n\r\n const containerMetrics = this.$refs.container.getBoundingClientRect();\r\n const contentMetrics = this.$refs.content.getBoundingClientRect();\r\n\r\n const overflowingElements = this.getOverflowingElements('left');\r\n\r\n let transformX = 0;\r\n\r\n if (this.slidesToScroll > 0) {\r\n const lastElement = overflowingElements[overflowingElements.length - 1];\r\n const lastElementMetrics = lastElement.getBoundingClientRect();\r\n const currentOffSet = containerMetrics.left - contentMetrics.left;\r\n transformX = (containerMetrics.left - currentOffSet) - lastElementMetrics.left;\r\n } else { // Slide till prev page\r\n const containerWidth = containerMetrics.width;\r\n\r\n let lastElement: Element | null = null;\r\n let currentWidth = 0;\r\n\r\n for (const element of overflowingElements) {\r\n if ((currentWidth += element.scrollWidth) > containerWidth) break;\r\n lastElement = element;\r\n }\r\n\r\n if (lastElement) {\r\n const lastElementMetrics = lastElement.getBoundingClientRect();\r\n const currentOffSet = containerMetrics.left - contentMetrics.left;\r\n transformX = (containerMetrics.left - currentOffSet) - lastElementMetrics.left;\r\n }\r\n }\r\n\r\n this.translateX = transformX;\r\n }\r\n\r\n public next() {\r\n if (this.isScrolling) return;\r\n\r\n this.isScrolling = true;\r\n\r\n const containerMetrics = this.$refs.container.getBoundingClientRect();\r\n const contentMetrics = this.$refs.content.getBoundingClientRect();\r\n\r\n const overflowingElements = this.getOverflowingElements('right');\r\n\r\n let transformX = 0;\r\n\r\n if (this.slidesToScroll > 0) {\r\n const lastElement = overflowingElements[overflowingElements.length - 1];\r\n const lastElementMetrics = lastElement.getBoundingClientRect();\r\n const currentOffSet = containerMetrics.left - contentMetrics.left;\r\n transformX = (containerMetrics.right - currentOffSet) - lastElementMetrics.right;\r\n } else { // Slide till next page\r\n const containerWidth = containerMetrics.width;\r\n\r\n let lastElement: Element | null = null;\r\n let currentWidth = 0;\r\n\r\n for (const element of overflowingElements) {\r\n if ((currentWidth += element.scrollWidth) > containerWidth) break;\r\n lastElement = element;\r\n }\r\n\r\n if (lastElement) {\r\n const lastElementMetrics = lastElement.getBoundingClientRect();\r\n const currentOffSet = containerMetrics.left - contentMetrics.left;\r\n transformX = (containerMetrics.right - currentOffSet) - lastElementMetrics.right;\r\n }\r\n }\r\n\r\n this.translateX = transformX;\r\n }\r\n\r\n public getOverflowingElements(direction: OverflowLocation): Element[] {\r\n const overflowingElements: Element[] = [];\r\n const elements = direction === 'right' ? Array.from(this.$refs.content.children) : Array.from(this.$refs.content.children).reverse();\r\n\r\n for (const element of elements) {\r\n if (this.slidesToScroll > 0 && (overflowingElements.length + 1 > this.slidesToScroll)) break;\r\n\r\n const overflowLocation = this.determineOverflow(element, this.$refs.container);\r\n if (overflowLocation === direction) {\r\n overflowingElements.push(element);\r\n }\r\n }\r\n\r\n return overflowingElements;\r\n }\r\n\r\n private determineOverflow(content: Element, container: Element): OverflowLocation {\r\n if (!content || !container) return 'none';\r\n\r\n const containerMetrics = container.getBoundingClientRect();\r\n const containerMetricsRight = Math.floor(containerMetrics.right);\r\n const containerMetricsLeft = Math.floor(containerMetrics.left);\r\n const contentMetrics = content.getBoundingClientRect();\r\n const contentMetricsRight = Math.floor(contentMetrics.right);\r\n const contentMetricsLeft = Math.floor(contentMetrics.left);\r\n if (containerMetricsLeft > contentMetricsLeft && containerMetricsRight < contentMetricsRight) {\r\n return 'both';\r\n } else if (contentMetricsLeft < containerMetricsLeft) {\r\n return 'left';\r\n } else if (contentMetricsRight > containerMetricsRight) {\r\n return 'right';\r\n } else {\r\n return 'none';\r\n }\r\n }\r\n\r\n private setOverflowLoc() {\r\n const lOverflow = this.getOverflowingElements('left').length > 0;\r\n const rOverflow = this.getOverflowingElements('right').length > 0;\r\n this.overflowLoc = lOverflow && rOverflow ? 'both' : lOverflow ? 'left' : rOverflow ? 'right' : 'none';\r\n }\r\n\r\n private transitionEnded() {\r\n this.setOverflowLoc();\r\n this.isScrolling = false;\r\n }\r\n\r\n private get activeBreakpoint() {\r\n return breakpointsState.activeBreakpoint;\r\n }\r\n\r\n @Watch('activeBreakpoint')\r\n onBreakpointChange() {\r\n this.setOverflowLoc();\r\n }\r\n\r\n mounted() {\r\n this.$refs.content.addEventListener('transitionend', this.transitionEnded);\r\n\r\n this.observer = new MutationObserver(() => {\r\n this.setOverflowLoc();\r\n });\r\n\r\n // Setup the observer\r\n this.observer.observe(\r\n this.$refs.content,\r\n { childList: true, subtree: true }\r\n );\r\n\r\n this.$nextTick(() => {\r\n this.setOverflowLoc();\r\n });\r\n }\r\n\r\n beforeDestroy() {\r\n this.$refs.content.removeEventListener('transitionend', this.transitionEnded);\r\n\r\n if (this.observer) {\r\n this.observer.disconnect();\r\n this.observer = null;\r\n }\r\n }\r\n\r\n $refs!: Vue['$refs'] & {\r\n container: HTMLElement,\r\n content: HTMLElement\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SimpleSlider.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SimpleSlider.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SimpleSlider.vue?vue&type=template&id=6ba72ffa&scoped=true&\"\nimport script from \"./SimpleSlider.vue?vue&type=script&lang=ts&\"\nexport * from \"./SimpleSlider.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SimpleSlider.vue?vue&type=style&index=0&id=6ba72ffa&lang=less&scoped=true&\"\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 \"6ba72ffa\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { MenuItem } from '@/types/apiServerContract';\r\nimport SimpleSlider from '@/core/ui-components/SimpleSlider.vue';\r\nimport serverContextService from '@/core/serverContext.service';\r\nimport CampaignIcon from '@/project/product/campaigns/CampaignIcon.vue';\r\n\r\n@Component({\r\n components: { SimpleSlider, CampaignIcon }\r\n})\r\nexport default class MainNavigationSlider extends Vue {\r\n @Prop({ type: Array, required: true })\r\n private menus!: MenuItem[];\r\n\r\n @Prop({ type: Boolean, required: true })\r\n private megaMenuShown!: boolean;\r\n\r\n @Prop({ type: Object, required: false })\r\n private activeMenu!: MenuItem;\r\n\r\n private mouseEnter(menu: MenuItem) {\r\n this.$emit('activeMenuChanged', menu);\r\n }\r\n\r\n private mouseLeave(menu: MenuItem) {\r\n this.$emit('cancelMegaMenuNavigation', menu);\r\n }\r\n\r\n private get campaignCode() {\r\n return this.campaignLink?.url.split('/').pop();\r\n }\r\n\r\n private get campaignLink() {\r\n return serverContextService.settings?.menuCampaignLink;\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainNavigationSlider.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainNavigationSlider.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MainNavigationSlider.vue?vue&type=template&id=16f90f47&scoped=true&\"\nimport script from \"./MainNavigationSlider.vue?vue&type=script&lang=ts&\"\nexport * from \"./MainNavigationSlider.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MainNavigationSlider.vue?vue&type=style&index=0&id=16f90f47&lang=less&scoped=true&\"\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 \"16f90f47\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component } from 'vue-property-decorator';\r\nimport megaMenuService from '@/project/shared/megaMenu.service';\r\nimport { MenuItem } from '@/types/apiServerContract';\r\nimport MainNavigationSlider from './MainNavigationSlider.vue';\r\nimport ReadMore from '@/core/ui-components/ReadMore.vue';\r\nimport scrollService from '@/core/scroll/scroll.service';\r\nimport escEventService from '@/core/esc-event.service';\r\nimport { debounce } from 'lodash';\r\nimport botService from '@/project/site/bot.service';\r\nimport themeService from '@/project/app/themes/theme.service';\r\n\r\n// Delay in ms controlling megamenu, so it won't be triggered too eager\r\nconst SHOW_DELAY = 50;\r\nconst CLOSE_DELAY = 100;\r\nconst CHANGE_DELAY = 350;\r\n\r\n@Component({\r\n components: {\r\n MainNavigationSlider,\r\n ReadMore\r\n }\r\n})\r\nexport default class MainNavigation extends Vue {\r\n private megaMenuShown = false;\r\n private menus: readonly MenuItem[] | null = [];\r\n private activeMenu: MenuItem | null = null;\r\n private renderMenuStatic: boolean = botService.uaIsBot();\r\n\r\n private openMegaMenuDebounce = debounce(this.open, SHOW_DELAY);\r\n private closeMegaMenuDebounce = debounce(this.close, CLOSE_DELAY);\r\n private changeMegaMenuDebounce = debounce(this.changeMegaMenu, CHANGE_DELAY);\r\n\r\n private changeMegaMenu(menu: MenuItem) {\r\n this.activeMenu = menu;\r\n\r\n // If mega menu is hidden, no reason to debounce, show it instantly\r\n if (!this.megaMenuShown) {\r\n this.open();\r\n }\r\n }\r\n\r\n private cancelMegaMenuNavigation() {\r\n this.changeMegaMenuDebounce.cancel();\r\n }\r\n\r\n private cancelMegaMenuClosing() {\r\n this.closeMegaMenuDebounce.cancel();\r\n }\r\n\r\n private toggleMegaMenu(show: boolean): void {\r\n if (show) {\r\n this.closeMegaMenuDebounce.cancel();\r\n this.openMegaMenuDebounce();\r\n } else {\r\n this.openMegaMenuDebounce.cancel();\r\n this.closeMegaMenuDebounce();\r\n }\r\n }\r\n\r\n private open() {\r\n if (this.megaMenuShown) return;\r\n\r\n this.megaMenuShown = true;\r\n this.$emit('megaMenuShown', true);\r\n\r\n // megaMenuContainer needs to be in DOM first\r\n this.$nextTick(() => scrollService.disableBodyScroll(this.$refs.megaMenuContainer));\r\n\r\n escEventService.register(this.close);\r\n }\r\n\r\n private close() {\r\n if (!this.megaMenuShown) return;\r\n\r\n scrollService.enableBodyScroll(this.$refs.megaMenuContainer);\r\n\r\n this.megaMenuShown = false;\r\n this.$emit('megaMenuShown', false);\r\n\r\n escEventService.unregister(this.close);\r\n }\r\n\r\n private async getMegaMenuData() {\r\n this.menus = await megaMenuService.getMegaMenu();\r\n }\r\n\r\n private megaMenuStyle(): object {\r\n const top = this.$refs.megaMenuAnchor.getBoundingClientRect().bottom;\r\n return ({\r\n maxHeight: `calc(100vh - ${top}px)`\r\n });\r\n }\r\n\r\n private created() {\r\n this.getMegaMenuData();\r\n }\r\n\r\n public $refs!: {\r\n megaMenuContainer: HTMLElement;\r\n megaMenuAnchor: HTMLElement;\r\n };\r\n\r\n private get navigationStyle(): Partial {\r\n return {\r\n ...(themeService.theme?.menuColor && { backgroundColor: themeService.theme.menuColor }),\r\n ...(themeService.theme?.menuColor && { color: themeService.getColor(themeService.theme.menuColor) })\r\n };\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainNavigation.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainNavigation.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MainNavigation.vue?vue&type=template&id=1bc3f33a&scoped=true&\"\nimport script from \"./MainNavigation.vue?vue&type=script&lang=ts&\"\nexport * from \"./MainNavigation.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MainNavigation.vue?vue&type=style&index=0&id=1bc3f33a&lang=less&scoped=true&\"\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 \"1bc3f33a\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport ScrollTrigger, { ScrollTriggerOptions } from '@/core/scroll/ScrollTrigger.vue';\r\nimport BrandHeader from '@/project/layout/page-header/BrandHeader.vue';\r\nimport TopHeader from './TopHeader.vue';\r\nimport MainNavigation from './MainNavigation.vue';\r\nimport NotificationBanner from '@/project/shared/notifications/NotificationBanner.vue';\r\nimport ImpersonationBanner from '@/project/shared/impersonation/ImpersonationBanner.vue';\r\nimport themeService from '@/project/app/themes/theme.service';\r\nimport authService from '@/core/auth/auth.service';\r\nimport appStore from '@/core/app/app.store';\r\n\r\n@Component({\r\n components: { MainNavigation, TopHeader, BrandHeader, ScrollTrigger, NotificationBanner, ImpersonationBanner }\r\n})\r\nexport default class DesktopPageHeader extends Vue {\r\n private mainNavigationFixed = false;\r\n private mainNavigationTransitionEnabled = false;\r\n private megaMenuShown = false;\r\n\r\n scrollingUp(on: boolean) {\r\n on ? themeService.restoreBackgroundOpacity() : themeService.disableBackgroundOpacity();\r\n }\r\n\r\n topHeaderFixed(on: boolean) {\r\n if (!on) {\r\n this.mainNavigationFixed = false;\r\n this.mainNavigationTransitionEnabled = false;\r\n } else {\r\n themeService.disableBackgroundOpacity();\r\n }\r\n }\r\n\r\n private megaMenuShownChange(shown: boolean): void {\r\n this.megaMenuShown = shown;\r\n }\r\n\r\n mainNavigationHidden(on: boolean) {\r\n if (on) {\r\n this.mainNavigationFixed = true;\r\n // Avoid immediate transition when we go to fixed.\r\n setTimeout(() => this.mainNavigationTransitionEnabled = true, 25);\r\n }\r\n }\r\n\r\n get scrollTriggerOptions(): ScrollTriggerOptions {\r\n return this.showBrands\r\n ? {\r\n scrollingUp: { clazz: 'scrolling-up', callback: this.scrollingUp },\r\n 60: { clazz: 'top-header-fixed', callback: this.topHeaderFixed },\r\n 120: this.mainNavigationHidden\r\n }\r\n : {\r\n scrollingUp: { clazz: 'scrolling-up', callback: this.scrollingUp },\r\n 1: { clazz: 'top-header-fixed', callback: this.topHeaderFixed },\r\n 120: this.mainNavigationHidden\r\n };\r\n }\r\n\r\n get showBrands(): boolean {\r\n // not logged in on frontpage: false, else true\r\n if (this.isOnFrontpage && this.isLoggedIn === false) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n get isLoggedIn(): boolean {\r\n return authService.isLoggedIn();\r\n }\r\n\r\n get isOnFrontpage(): boolean {\r\n return appStore.isFrontPage;\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DesktopPageHeader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DesktopPageHeader.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DesktopPageHeader.vue?vue&type=template&id=c0f65268&scoped=true&\"\nimport script from \"./DesktopPageHeader.vue?vue&type=script&lang=ts&\"\nexport * from \"./DesktopPageHeader.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DesktopPageHeader.vue?vue&type=style&index=0&id=c0f65268&lang=less&scoped=true&\"\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 \"c0f65268\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport MobilePageHeader from '@/project/layout/page-header/mobile/MobilePageHeader.vue';\r\nimport DesktopPageHeader from '@/project/layout/page-header/desktop/DesktopPageHeader.vue';\r\nimport appStore from '@/core/app/app.store';\r\n\r\n@Component({\r\n components: { DesktopPageHeader, MobilePageHeader }\r\n})\r\nexport default class PageHeader extends Vue {\r\n get isTunnelView(): boolean {\r\n return appStore.isTunnelView;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageHeader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageHeader.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PageHeader.vue?vue&type=template&id=61b1ca1a&\"\nimport script from \"./PageHeader.vue?vue&type=script&lang=ts&\"\nexport * from \"./PageHeader.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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.shouldRender)?_c('footer',[_c('section',{staticClass:\"bg-white text-black\"},[_c('div',{staticClass:\"o-chrome-container\"},[_c('div',{staticClass:\"pt-30 md:pt-40 pb-20 md:pb-30 o-grid\"},[_vm._l((_vm.firstLinkColumns),function(column,ix){return _c('section',{key:ix,staticClass:\"o-grid--item mb-20 lg:mb-0 w-1/2 md:w-1/4 lg:w-2/12\"},[_c('header',{staticClass:\"text-13 md:text-15 font-bold lg:text-18 mb-10\"},[_vm._v(\" \"+_vm._s(column.title)+\" \")]),_vm._l((column.links),function(link){return _c('culture-aware-router-link',{key:link.url,staticClass:\"block text-12 md:text-13 lg:text-15 py-5 hover:text-gray-800\",attrs:{\"to\":link.url}},[(link.name === 'Brands')?[[_vm._v(_vm._s(_vm._f(\"t\")('Breadcrumbs.Brands')))]]:(link.name === 'Departments')?[[_vm._v(_vm._s(_vm._f(\"t\")('Breadcrumbs.Departments')))]]:[_vm._v(\" \"+_vm._s(link.name)+\" \")]],2)}),_vm._l((column.socialMediaLinks),function(soMeLink){return _c('a',{key:soMeLink.url,staticClass:\"social-media-link flex flex-row items-center text-12 md:text-13 lg:text-15 py-5 hover:text-gray-800\",attrs:{\"href\":soMeLink.url,\"to\":soMeLink.url,\"target\":soMeLink.target}},[(soMeLink.icon)?_c('img',{staticClass:\"mr-8\",attrs:{\"src\":soMeLink.icon,\"alt\":soMeLink.name}}):_vm._e(),_c('span',[_vm._v(\" \"+_vm._s(soMeLink.name)+\" \")])])})],2)}),(_vm.salesRep || _vm.companyDetails)?_c('div',{staticClass:\"o-grid--item w-full md:w-1/2 lg:w-3/12 lg:ml-auto\"},[(!_vm.salesRep)?_c('header',{staticClass:\"text-13 md:text-15 font-bold lg:text-18 mb-10\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Footer.ContactTitle'))+\" \")]):_vm._e(),_c('EmployeeBlockItem',{staticClass:\"mb-10 w-full\",attrs:{\"content\":_vm.salesRepAsEmployeeViewObject,\"show-image-placeholder-if-empty\":false,\"name-line-class\":'text-13 md:text-15 font-bold lg:text-18 mb-3',\"title-line-class\":'mb-22 text-12 md:text-13 lg:text-15',\"text-line-class\":'my-10 text-12 md:text-13 lg:text-15'}}),(_vm.companyDetails)?[_c('div',[_c('div',{staticClass:\"mb-10 font-semi-bold text-12 md:text-13 lg:text-15\"},[_vm._v(\" \"+_vm._s(_vm.companyDetails.companyName)+\" \")]),(_vm.companyDetails.phoneNumber)?_c('div',{staticClass:\"text-12 md:text-13 lg:text-15 py-5\"},[_c('a',{attrs:{\"href\":(\"tel:\" + (_vm.companyDetails.phoneNumber))}},[_vm._v(\" \"+_vm._s(_vm.companyDetails.phoneNumber)+\" \")])]):_vm._e(),(_vm.companyDetails.email)?_c('div',{staticClass:\"text-12 md:text-13 lg:text-15 py-5\"},[_c('a',{staticClass:\"underline\",attrs:{\"href\":'mailto:' + _vm.companyDetails.email,\"target\":\"_blank\"}},[_vm._v(\" \"+_vm._s(_vm.companyDetails.email)+\" \")])]):_vm._e()]),_c('div',{staticClass:\"mt-20 mb-10 font-semi-bold text-12 md:text-13 lg:text-15\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Footer.OpeningHoursTitle'))+\": \")]),_c('p',{staticClass:\"text-12 md:text-13 lg:text-15\"},[_vm._v(\" \"+_vm._s(_vm.companyDetails.openingHours)+\" \")])]:_vm._e()],2):_vm._e()],2)])]),_c('section',{staticClass:\"address-n-business-unit h-150 md:h-80 py-20 bg-blue-500 oprema:bg-opremayellow-500 text-white oprema:text-black\"},[_c('div',{staticClass:\"o-chrome-container h-full flex flex-col md:flex-row md:items-center justify-between text-12 md:text-13\"},[(_vm.companyDetails)?_c('section',{staticClass:\"company-info\"},[_c('span',{staticClass:\"font-bold\"},[_vm._v(_vm._s(_vm.companyDetails.companyName))]),_c('span',[_vm._v(_vm._s(_vm.companyDetails.addressInformation))]),_c('span',[_vm._v(_vm._s(_vm.companyDetails.postalCode)+\" \"+_vm._s(_vm.companyDetails.city))]),_c('span',[_vm._v(_vm._s(_vm._f(\"t\")('Footer.VatNo'))+\" \"+_vm._s(_vm.companyDetails.vatNumber))])]):_vm._e(),(_vm.showLanguageInformation)?_c('section',{staticClass:\"whitespace-no-wrap\",on:{\"click\":_vm.activateSitePicker}},[_c('span',{staticClass:\"text-13 font-bold mr-15\"},[_vm._v(_vm._s(_vm.CountryAndLanguageLabel))]),_c('call-to-action',{staticClass:\"cta--small cta--white\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Footer.ChangeCountryAndLanguage'))+\" \")])],1):_vm._e()])]),(_vm.siteSchemaJson)?_c('script',{attrs:{\"type\":\"application/ld+json\"},domProps:{\"innerHTML\":_vm._s(_vm.siteSchemaJson)}}):_vm._e(),(_vm.companyDetailsSchemaJson)?_c('script',{attrs:{\"type\":\"application/ld+json\"},domProps:{\"innerHTML\":_vm._s(_vm.companyDetailsSchemaJson)}}):_vm._e(),(_vm.breadcrumbsSchemaJson)?_c('script',{attrs:{\"type\":\"application/ld+json\"},domProps:{\"innerHTML\":_vm._s(_vm.breadcrumbsSchemaJson)}}):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { AbstractModalService } from '@/core/modals/AbstractModalService';\r\nimport { ModalOptions } from '@/core/modals/ModalState';\r\n\r\nexport const SHOW_SITE_PICKER = 'Show_Site_Picker';\r\n\r\nclass SitePickerOverlayService extends AbstractModalService {\r\n public show(options?: Partial) {\r\n return this.showModal({\r\n component: () => import(\r\n /* webpackPrefetch: true */\r\n '@/project/site/SitePickerOverlay.vue'),\r\n componentAttrs: {\r\n },\r\n options: options\r\n });\r\n }\r\n}\r\n\r\nexport default new SitePickerOverlayService();\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Watch } from 'vue-property-decorator';\r\nimport { BreadcrumbItem, FooterCompanyDetails, FooterSitemapColumnViewModel } from '@/types/contentServerContract';\r\nimport authService from '@/core/auth/auth.service';\r\nimport siteService from '@/project/site/site.service';\r\nimport {\r\n CountryOptionsViewModel,\r\n EmployeeViewObject,\r\n SalesRepViewObject\r\n} from '@/types/apiServerContract';\r\nimport Api from '@/project/http/Api.service';\r\nimport translateFilter from '@/core/translation/translate.filter';\r\nimport appStore from '@/core/app/app.store';\r\nimport { SHOW_SITE_PICKER } from '@/project/modals/overlays/SitePickerOverlay.service';\r\nimport bus from '@/core/bus';\r\nimport { PageRenderedEventKey } from '@/router';\r\nimport EmployeeBlockItem from '@/project/app/blocks/information/EmployeeBlockItem.vue';\r\nimport serverContextService from '@/core/serverContext.service';\r\n@Component({\r\n components: { EmployeeBlockItem }\r\n})\r\nexport default class PageFooter extends Vue {\r\n private salesRep: SalesRepViewObject | null = null;\r\n private pageIsRendered = false;\r\n\r\n async created() {\r\n bus.once(PageRenderedEventKey, () => setTimeout(() => this.pageIsRendered = true, 75));\r\n }\r\n\r\n get companyDetails(): FooterCompanyDetails | null {\r\n return serverContextService.footer?.companyDetails || null;\r\n }\r\n\r\n get firstLinkColumns(): FooterSitemapColumnViewModel[] {\r\n return serverContextService?.footer?.sitemapColumns ?? [];\r\n }\r\n\r\n activateSitePicker() {\r\n bus.emit(SHOW_SITE_PICKER);\r\n }\r\n\r\n get isLoggedIn() {\r\n return authService.isLoggedIn();\r\n }\r\n\r\n @Watch('isLoggedIn', {\r\n immediate: true\r\n })\r\n onIsLoggedInChange(isLoggedIn: boolean) {\r\n if (isLoggedIn) {\r\n this.getSalesRep();\r\n } else {\r\n this.salesRep = null;\r\n }\r\n }\r\n\r\n get countryCode(): string | null {\r\n return siteService.getCountryCode();\r\n }\r\n\r\n get siteOptions(): CountryOptionsViewModel | null {\r\n return siteService.getCountryOptions();\r\n }\r\n\r\n get showLanguageInformation(): boolean {\r\n if (this.siteOptions && (this.siteOptions.countries.length > 1 || this.siteOptions.countries[0].sites.length > 1)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n @Watch('countryCode')\r\n onCountryCodeChange() {\r\n if (this.isLoggedIn) {\r\n this.getSalesRep();\r\n } else {\r\n this.salesRep = null;\r\n }\r\n }\r\n\r\n get CountryAndLanguageLabel(): string {\r\n return `${translateFilter(siteCountryLabel())} / ${translateFilter(siteLanguageLabel())}`;\r\n\r\n function siteLanguageLabel(): string {\r\n const lang = siteService.getLanguageCode();\r\n if (!lang) return '';\r\n return siteService.languageLabel(lang);\r\n }\r\n\r\n function siteCountryLabel(): string {\r\n const countryCode = siteService.getCountryCode();\r\n if (!countryCode) return '';\r\n return siteService.countryLabel(countryCode);\r\n }\r\n }\r\n\r\n async getSalesRep(): Promise {\r\n const response = await Api.user.salesRep();\r\n const salesRepIsValid = this.checkIfSalesrepContainsData(response.salesRep);\r\n this.salesRep = salesRepIsValid ? response.salesRep! : null;\r\n }\r\n\r\n private checkIfSalesrepContainsData(rep?: SalesRepViewObject) {\r\n return !!rep && Object.values(rep).some(x => !!x);\r\n }\r\n\r\n private get salesRepAsEmployeeViewObject(): EmployeeViewObject | null {\r\n if (!this.salesRep) return null;\r\n return {\r\n photoUrl: this.salesRep.picture,\r\n mobilePhone: this.salesRep.mobilePhoneNo,\r\n directPhone: this.salesRep.directPhoneNo || '',\r\n displayName: this.salesRep.name || '',\r\n title: this.salesRep.title || '',\r\n email: this.salesRep.email || '',\r\n initials: '',\r\n id: ''\r\n };\r\n }\r\n\r\n get shouldRender(): boolean {\r\n // Wait until first page is loaded to avoid CLS (Web Vitals) penalty when footer is pushed down\r\n return !appStore.isTunnelView && this.pageIsRendered;\r\n }\r\n\r\n get isOprema() {\r\n return serverContextService?.isOprema;\r\n }\r\n\r\n private get siteSchemaJson() {\r\n const schema: any = {\r\n '@context': 'https://schema.org',\r\n '@type': 'WebSite',\r\n name: window.servercontext.businessEntityName,\r\n url: `${document.location.origin}${window.servercontext.url}`,\r\n potentialAction: {\r\n '@type': 'SearchAction',\r\n target: {\r\n '@type': 'EntryPoint',\r\n urlTemplate: `${document.location.origin}${window.servercontext.url}/?term={search_term_string}`\r\n },\r\n 'query-input': 'required name=search_term_string'\r\n }\r\n };\r\n return JSON.stringify(schema);\r\n }\r\n\r\n private get companyDetailsSchemaJson() {\r\n const socialMediaLinks = this.firstLinkColumns.filter(c => c.socialMediaLinks?.length).map(some => some.socialMediaLinks.map(link => link.url));\r\n const schema: any = {\r\n '@context': 'https://schema.org',\r\n '@type': 'Organization',\r\n url: `${document.location.origin}${window.servercontext.url}`,\r\n logo: `${window.servercontext.siteAssetsUrl}/favicon.svg`,\r\n foundingDate: this.isOprema ? '2010' : '1986',\r\n name: this.companyDetails?.companyName\r\n };\r\n if (this.companyDetails?.email) {\r\n schema.email = this.companyDetails?.email;\r\n }\r\n if (this.companyDetails?.phoneNumber) {\r\n schema.telephone = this.companyDetails?.phoneNumber;\r\n }\r\n if (this.companyDetails?.phoneNumber || this.companyDetails?.email) {\r\n schema.contactPoint = {\r\n '@type': 'ContactPoint',\r\n telephone: this.companyDetails?.phoneNumber,\r\n email: this.companyDetails?.email\r\n };\r\n }\r\n if (this.companyDetails?.city && this.companyDetails.addressInformation && this.companyDetails.postalCode) {\r\n schema.address = {\r\n '@type': 'PostalAddress',\r\n addressLocality: this.companyDetails?.city,\r\n streetAddress: this.companyDetails?.addressInformation,\r\n postalCode: this.companyDetails?.postalCode\r\n };\r\n }\r\n if (socialMediaLinks.length) {\r\n schema.sameAs = socialMediaLinks.flat(1) || [];\r\n }\r\n return JSON.stringify(schema);\r\n }\r\n\r\n private get breadcrumbsSchemaJson() {\r\n const jsonldobj:any = {\r\n '@context': 'https://schema.org',\r\n '@type': 'BreadcrumbList',\r\n itemListElement: []\r\n };\r\n // Parent pages\r\n appStore.breadcrumbPrettified.map((item: BreadcrumbItem, index) => {\r\n jsonldobj.itemListElement.push({\r\n '@type': 'ListItem',\r\n position: (index + 1),\r\n name: item.name,\r\n item: item.url ? `${document.location.origin}${window.servercontext.url}${item.url}` : window.location.href\r\n } as any);\r\n });\r\n return JSON.stringify(jsonldobj);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageFooter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageFooter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PageFooter.vue?vue&type=template&id=0466bb24&scoped=true&\"\nimport script from \"./PageFooter.vue?vue&type=script&lang=ts&\"\nexport * from \"./PageFooter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PageFooter.vue?vue&type=style&index=0&id=0466bb24&lang=less&scoped=true&\"\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 \"0466bb24\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showBreadcrumb)?_c('div',{staticClass:\"w-full\"},[_c('transition-group',{ref:\"breadcrumbsContainer\",staticClass:\"w-full flex flex-row overflow-y-hidden overflow-x-auto md:overflow-auto md:flex-wrap h-60 items-center\",attrs:{\"name\":\"list-fade\",\"tag\":\"ul\",\"itemscope\":\"\",\"itemtype\":\"https://schema.org/BreadcrumbList\"}},_vm._l((_vm.breadcrumbs),function(crumb,index){return _c('li',{key:crumb.name + index,staticClass:\"flex items-center -no-wrap\",attrs:{\"itemprop\":\"itemListElement\",\"itemscope\":\"\",\"itemtype\":\"https://schema.org/ListItem\"}},[(index < _vm.breadcrumbs.length - 1)?[_c('culture-aware-router-link',{staticClass:\"text-gray-900 text-11 hover:bg-gray-500\",attrs:{\"to\":{ path: crumb.url, name: crumb.page },\"itemprop\":\"item\"}},[_c('span',{attrs:{\"itemprop\":\"name\"}},[_vm._v(_vm._s(crumb.name))]),_c('meta',{attrs:{\"itemprop\":\"position\",\"content\":index+1}})]),_c('c-icon',{staticClass:\"mx-6\",attrs:{\"name\":\"arrow-right\",\"width\":\"6\",\"height\":\"6\"}})]:_c('span',{staticClass:\"text-11 text-gray-800\"},[_c('span',{attrs:{\"itemprop\":\"name\"}},[_vm._v(_vm._s(crumb.name))]),_c('meta',{attrs:{\"itemprop\":\"position\",\"content\":index+1}})])],2)}),0)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Watch } from 'vue-property-decorator';\r\nimport appStore from '@/core/app/app.store';\r\nimport { BreadcrumbItem } from '@/types/contentServerContract';\r\nimport breakpointsState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\n\r\n@Component\r\nexport default class Breadcrumb extends Vue {\r\n $refs!: Vue['$refs'] & {\r\n breadcrumbsContainer: Vue\r\n };\r\n\r\n get inPhoneViewport(): boolean {\r\n return breakpointsState.isBreakpointActive('max-sm');\r\n }\r\n\r\n get breadcrumbs(): BreadcrumbItem[] {\r\n const crumbs = appStore?.breadcrumbPrettified ? [...appStore.breadcrumbPrettified] : [];\r\n return crumbs;\r\n }\r\n\r\n get showBreadcrumb(): boolean {\r\n // Hide in tunnelview\r\n if (this.hideBreadcrumb) return false;\r\n\r\n // Hide when frontpage\r\n return this.$route.path !== '/';\r\n }\r\n\r\n get hideBreadcrumb(): boolean {\r\n return appStore.hideBreadcrumb;\r\n }\r\n\r\n mounted(): void {\r\n this.scrollBreadcrumbsOnDemand();\r\n }\r\n\r\n @Watch('breadcrumbs')\r\n private breadcrumbsChanged(): void {\r\n this.scrollBreadcrumbsOnDemand();\r\n }\r\n\r\n @Watch('inPhoneViewport')\r\n private scrollBreadcrumbsOnDemand(): void {\r\n if (this.inPhoneViewport && this.$refs.breadcrumbsContainer) {\r\n this.$nextTick(() => {\r\n const $ul = this.$refs.breadcrumbsContainer.$el;\r\n\r\n if ($ul) {\r\n $ul.scrollTo($ul.scrollWidth, 0);\r\n }\r\n });\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Breadcrumb.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Breadcrumb.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Breadcrumb.vue?vue&type=template&id=4440e73b&scoped=true&\"\nimport script from \"./Breadcrumb.vue?vue&type=script&lang=ts&\"\nexport * from \"./Breadcrumb.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Breadcrumb.vue?vue&type=style&index=0&id=4440e73b&lang=less&scoped=true&\"\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 \"4440e73b\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"appear\":\"\",\"enter-active-class\":\"animated fadeIn u-anim-dur-500\",\"leave-active-class\":\"animated fadeOut u-anim-dur-500\"}},[(_vm.messages.length)?_c('article',{staticClass:\"fixed top-0 w-full z-errorToaster\"},_vm._l((_vm.messages),function(message){return _c('div',{key:message.id,staticClass:\"text-white p-30 font-medium text-16 flex w-full items-center justify-between border border-white\",class:_vm.getBgColor(message.messageType)},[_c('p',[_vm._v(\" \"+_vm._s(_vm.getMessage(message.message))+\" \"),(message.errorId)?[_vm._v(\" [\"+_vm._s(message.errorId)+\"] \")]:_vm._e()],2),_c('button',{staticClass:\"pl-30\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.clearMessage(message)}}},[_c('c-icon',{staticClass:\"text-white\",attrs:{\"name\":\"close\",\"height\":\"18\",\"width\":\"18\"}})],1)])}),0):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue } from 'vue-property-decorator';\r\nimport Component from 'vue-class-component';\r\nimport { ClientMessage, ClientMessageType, ClientMessageWithError, GeneralErrorEventKey } from '@/core/messages/types';\r\nimport bus from '@/core/bus';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\n\r\nconst AUTO_KILL_TIME = 10000; // ms.\r\n\r\n@Component\r\nexport default class ErrorToaster extends Vue {\r\n private messages: ClientMessage[] = [];\r\n\r\n public created() {\r\n bus.on(GeneralErrorEventKey, this.addMessages);\r\n }\r\n\r\n private getBgColor(messageType: ClientMessageType): string {\r\n switch (messageType) {\r\n case ClientMessageType.Info:\r\n return 'bg-green-500';\r\n case ClientMessageType.Warning:\r\n return 'bg-yellow-500';\r\n case ClientMessageType.Error:\r\n default:\r\n return 'bg-red-500';\r\n }\r\n }\r\n\r\n private getMessage(msgOrLabel: string): string {\r\n if (dictionaryService.exists(msgOrLabel)) {\r\n return dictionaryService.get(msgOrLabel);\r\n }\r\n return msgOrLabel;\r\n }\r\n\r\n public addMessages(clientMessages: ClientMessageWithError): void {\r\n clientMessages.messages.forEach(msg => {\r\n msg.errorId = clientMessages.errorId;\r\n setTimeout(() => this.clearMessage(msg), AUTO_KILL_TIME);\r\n });\r\n\r\n this.messages = this.messages.concat(clientMessages.messages);\r\n }\r\n\r\n public clearMessage(msg: ClientMessage): void {\r\n this.messages = this.messages.filter(m => m !== msg);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorToaster.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorToaster.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ErrorToaster.vue?vue&type=template&id=3a915a4e&\"\nimport script from \"./ErrorToaster.vue?vue&type=script&lang=ts&\"\nexport * from \"./ErrorToaster.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","\r\nimport { Vue, Component } from 'vue-property-decorator';\r\nimport myAccountStore from './my-account.store';\r\nimport authService from '@/core/auth/auth.service';\r\n\r\n@Component\r\nexport default class MyAccountModule extends Vue {\r\n private async inititalizeAccountStore() {\r\n if (authService.isLoggedIn()) {\r\n await myAccountStore.init();\r\n }\r\n }\r\n\r\n private async setup() {\r\n this.inititalizeAccountStore();\r\n }\r\n\r\n render() {\r\n return undefined;\r\n }\r\n\r\n created() {\r\n this.setup();\r\n }\r\n}\r\n","var render, staticRenderFns\nimport script from \"./MyAccountModule.vue?vue&type=script&lang=ts&\"\nexport * from \"./MyAccountModule.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/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MyAccountModule.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MyAccountModule.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"modals-container\"}},_vm._l((_vm.modals),function(modal){return _c('modal-overlay',{key:modal.id,attrs:{\"modal\":modal}},[_c(modal.component,_vm._g(_vm._b({tag:\"component\",attrs:{\"modal\":modal}},'component',modal.componentAttrs,false),modal.modalListeners))],1)}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component } from 'vue-property-decorator';\r\nimport { ModalState } from '@/core/modals/ModalState';\r\nimport ModalOverlay from './ModalOverlay.vue';\r\n\r\n@Component({\r\n components: { ModalOverlay }\r\n})\r\nexport default class ModalsContainer extends Vue {\r\n private get modals() {\r\n return ModalState.modals;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalsContainer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalsContainer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ModalsContainer.vue?vue&type=template&id=51cde7e0&scoped=true&\"\nimport script from \"./ModalsContainer.vue?vue&type=script&lang=ts&\"\nexport * from \"./ModalsContainer.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ModalsContainer.vue?vue&type=style&index=0&id=51cde7e0&lang=less&scoped=true&\"\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 \"51cde7e0\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Vue, Component, Watch } from 'vue-property-decorator';\r\nimport authService from '@/core/auth/auth.service';\r\nimport sitePickerOverlayService, { SHOW_SITE_PICKER } from '@/project/modals/overlays/SitePickerOverlay.service';\r\nimport siteService from './site.service';\r\nimport botService from './bot.service';\r\nimport Api from '@/project/http/Api.service';\r\nimport { SwitchSiteResponseViewModel } from '@/types/apiServerContract';\r\nimport bus from '@/core/bus';\r\nimport { ModalState } from '@/core/modals/ModalState';\r\nimport { isDevMode } from '@/core/environmentService';\r\n\r\n@Component\r\nexport default class SitePickerModule extends Vue {\r\n updatingServer: boolean = false;\r\n cookieInformationRetryCounter: number = 0;\r\n private validateSite() {\r\n const isLoggedIn = authService.isLoggedIn();\r\n const isBot = (botService.uaIsPrerender() || botService.uaIsBot());\r\n const isOnFrontpage = document.location.pathname === window.servercontext.url;\r\n const isModalActive = this.modals.length > 0;\r\n if (!isLoggedIn && !isBot && !siteService.hasBeenPickedByUser() && !isModalActive && isOnFrontpage) {\r\n // Don't show sitePicker if there is also a cookieinformation.com banner shown\r\n if (this.hasUserGivenCookieConsent() || this.isDevelopment()) {\r\n setTimeout(this.showSitePicker, 1000);\r\n return;\r\n }\r\n if (window.CookieInformation || this.cookieInformationRetryCounter++ < 5) {\r\n // window.CookieInformation: true when script is loaded and user is reading cookie banner\r\n // this.cookieInformationRetryCounter: retry counter if cookieinformation script fails to load\r\n setTimeout(this.validateSite, 1000);\r\n } else if (!window.CookieInformation) {\r\n this.showSitePicker();\r\n }\r\n }\r\n }\r\n\r\n private isDevelopment(): boolean {\r\n return isDevMode();\r\n }\r\n\r\n private get modals() {\r\n return ModalState.modals;\r\n }\r\n\r\n private hasUserGivenCookieConsent(): boolean {\r\n return window.CookieInformation?.getConsentGivenFor('cookie_cat_functional') !== undefined;\r\n }\r\n\r\n private async showSitePicker() {\r\n const currentSiteId = window.servercontext.siteId;\r\n const selectedSite: any = await sitePickerOverlayService.show();\r\n const selectedSiteId = selectedSite?.siteId;\r\n if (selectedSite && currentSiteId !== selectedSiteId) {\r\n await this.submit(selectedSiteId);\r\n }\r\n }\r\n\r\n async submit(siteId) {\r\n if (this.updatingServer) { return; }\r\n\r\n try {\r\n this.updatingServer = true;\r\n const result: SwitchSiteResponseViewModel = await Api.sites.switchSite({ siteId }, 'switch-site');\r\n\r\n if (result.token) {\r\n authService.setToken(result.token);\r\n }\r\n siteService.update(result);\r\n } catch (err) {\r\n // Ok, validation-messages will be shown\r\n } finally {\r\n this.updatingServer = false;\r\n }\r\n }\r\n\r\n get isLoggedIn() {\r\n return authService.isLoggedIn();\r\n }\r\n\r\n @Watch('isLoggedIn')\r\n async loadSiteOptions() {\r\n const siteOptions = await Api.sites.siteOptions();\r\n siteService.setCountryOptions(siteOptions);\r\n\r\n const siteHasMultipleSiteOptions = (siteOptions?.countries.length > 1 || siteOptions.countries[0].sites.length > 1);\r\n if (siteHasMultipleSiteOptions) {\r\n this.validateSite();\r\n }\r\n }\r\n\r\n render() {\r\n return undefined;\r\n }\r\n\r\n created() {\r\n this.loadSiteOptions();\r\n bus.on(SHOW_SITE_PICKER, this.showSitePicker);\r\n }\r\n\r\n private destroyed() {\r\n bus.off(SHOW_SITE_PICKER, this.showSitePicker);\r\n }\r\n}\r\n","var render, staticRenderFns\nimport script from \"./SitePickerModule.vue?vue&type=script&lang=ts&\"\nexport * from \"./SitePickerModule.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/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SitePickerModule.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SitePickerModule.vue?vue&type=script&lang=ts&\"","\r\nimport { Vue, Component } from 'vue-property-decorator';\r\nimport loginFormOverlayService from '@/project/modals/overlays/LoginFormOverlay.service';\r\n\r\n@Component\r\nexport default class AuthenticationModule extends Vue {\r\n private checkForPasswordReset() {\r\n if (location.search.includes('resetpassword')) {\r\n loginFormOverlayService.show('reset-pw', undefined, {\r\n singleton: true,\r\n closeOnBreakpointChange: false,\r\n closeOnRouteChange: false,\r\n disableUserClose: true\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n return undefined;\r\n }\r\n\r\n created() {\r\n this.checkForPasswordReset();\r\n }\r\n}\r\n","var render, staticRenderFns\nimport script from \"./AuthenticationModule.vue?vue&type=script&lang=ts&\"\nexport * from \"./AuthenticationModule.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/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthenticationModule.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthenticationModule.vue?vue&type=script&lang=ts&\"","import { AbstractModalService } from '@/core/modals/AbstractModalService';\r\nimport { ModalOptions } from '@/core/modals/ModalState';\r\n\r\nclass MaintenancePageOverlayService extends AbstractModalService {\r\n public show(options?: Partial) {\r\n return this.showModal({\r\n component: () => import('@/project/app/content-pages/MaintenancePage.vue'),\r\n componentAttrs: {\r\n },\r\n options: {\r\n wide: true,\r\n disableBodyScroll: true,\r\n closeOnBreakpointChange: false,\r\n disableUserClose: true,\r\n placement: 'top',\r\n ...options\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default new MaintenancePageOverlayService();\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Watch } from 'vue-property-decorator';\r\nimport PageHeader from '@/project/layout/page-header/PageHeader.vue';\r\nimport PageFooter from '@/project/layout/page-footer/PageFooter.vue';\r\nimport BreadCrumb from '@/project/layout/breadcrumb/Breadcrumb.vue';\r\nimport appStore from '@/core/app/app.store';\r\nimport ErrorToaster from '@/core/messages/ErrorToaster.vue';\r\nimport MyAccountModule from '@/project/app/client-pages/my-account/MyAccountModule.vue';\r\nimport ModalsContainer from '@/project/modals/ModalsContainer.vue';\r\nimport SitePickerModule from '@/project/site/SitePickerModule.vue';\r\nimport AuthenticationModule from '@/project/auth/AuthenticationModule.vue';\r\nimport themeService from '@/project/app/themes/theme.service';\r\nimport authService from '@/core/auth/auth.service';\r\nimport maintenancePageOverlayService from '@/project/modals/overlays/MaintenancePageOverlay.service';\r\n\r\n@Component({\r\n components: {\r\n ErrorToaster,\r\n PageHeader,\r\n PageFooter,\r\n BreadCrumb,\r\n ModalsContainer,\r\n SitePickerModule,\r\n AuthenticationModule,\r\n MyAccountModule\r\n }\r\n})\r\nexport default class App extends Vue {\r\n get isTunnelView(): boolean {\r\n return appStore.isTunnelView;\r\n }\r\n\r\n public get isTakeOverEnabled() {\r\n return themeService.isTakeOverEnabledAndLoaded;\r\n }\r\n\r\n get hideMobileSearchAndBrands(): boolean {\r\n // not logged in and on frontpage: true, else false\r\n if (this.isOnFrontpage && this.isLoggedIn === false) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n get isLoggedIn(): boolean {\r\n return authService.isLoggedIn();\r\n }\r\n\r\n get isOnFrontpage(): boolean {\r\n return appStore.isFrontPage;\r\n }\r\n\r\n get isInMaintenanceMode(): boolean {\r\n return appStore.isMaintenanceMode;\r\n }\r\n\r\n @Watch('isInMaintenanceMode', { immediate: true })\r\n isInMaintenanceModeChange(isInMaintenanceMode: boolean) {\r\n if (isInMaintenanceMode) {\r\n maintenancePageOverlayService.show();\r\n }\r\n }\r\n}\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--15-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--15-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--15-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--15-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=0ab45f3e&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=0ab45f3e&lang=less&scoped=true&\"\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 \"0ab45f3e\",\n null\n \n)\n\nexport default component.exports","import './public-path';\r\nimport './styling/main.less';\r\nimport Vue from 'vue';\r\n\r\nimport './core/config';\r\nimport { router } from './router';\r\nimport './project';\r\nimport App from './App.vue';\r\n\r\nVue.config.productionTip = false;\r\n\r\nconst vueDebugEnabled = location.search.includes('$enable-vue-devtools$=true');\r\nif (vueDebugEnabled) {\r\n Vue.config.devtools = true;\r\n}\r\n\r\n// Vue.config.performance = true;\r\n\r\n/* eslint-disable no-new */\r\nnew Vue({\r\n el: '#app',\r\n router,\r\n render: h => h(App)\r\n});\r\n\r\n// Add custom class for IE 11\r\n// @ts-ignore\r\nconst isIE11 = !!window.MSInputMethodContext && !!document.documentMode;\r\nif (isIE11) {\r\n document.body.className = document.body.className + ' browser-ie11';\r\n}\r\n","import { RouteConfig } from 'vue-router';\r\nimport { PageName } from '@/router/routes/constants';\r\nimport { RouterMetaData } from '@/core/app/clientPageHandler';\r\nimport { Permission } from '@/project/auth/permission.service';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\n\r\nexport const MyAccountRoutes: RouteConfig =\r\n{\r\n path: '/my-account',\r\n name: PageName.MY_ACCOUNT,\r\n redirect: { name: PageName.MY_ACCOUNT_PROFILE },\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/MyAccountPage.vue'),\r\n meta: {\r\n isPublic: false\r\n } as RouterMetaData,\r\n children: [\r\n {\r\n path: 'profile',\r\n name: PageName.MY_ACCOUNT_PROFILE,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/profile/MyAccountProfile.vue'),\r\n meta: {\r\n isPublic: false,\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Profile'),\r\n page: PageName.MY_ACCOUNT_PROFILE\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: 'product-backlog',\r\n name: PageName.MY_ACCOUNT_PRODUCT_BACKLOG,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/product-backlog/ProductBacklog.vue'),\r\n meta: {\r\n permission: Permission.VIEW_ORDER_STATUS,\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.ProductBacklog'),\r\n page: PageName.MY_ACCOUNT_PRODUCT_BACKLOG\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: 'order-history',\r\n name: PageName.MY_ACCOUNT_ORDER_HISTORY,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/order/OrderHistory.vue'),\r\n meta: {\r\n permission: Permission.VIEW_ORDER_STATUS,\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.OrderHistory'),\r\n page: PageName.MY_ACCOUNT_ORDER_HISTORY\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: 'order-history/detail/:orderId',\r\n name: PageName.MY_ACCOUNT_ORDER_HISTORY_DETAIL,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/order/OrderHistoryDetail.vue'),\r\n props: true,\r\n meta: {\r\n permission: Permission.VIEW_ORDER_STATUS,\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.OrderHistory'),\r\n page: PageName.MY_ACCOUNT_ORDER_HISTORY\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.OrderDetail'),\r\n page: PageName.MY_ACCOUNT_ORDER_HISTORY_DETAIL\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: 'quotes',\r\n name: PageName.MY_ACCOUNT_QUOTES,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/quote/Quotes.vue'),\r\n meta: {\r\n permission: Permission.VIEW_QUOTE_STATUS,\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Quotes'),\r\n page: PageName.MY_ACCOUNT_QUOTES\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: 'quotes/detail/:quoteId',\r\n name: PageName.MY_ACCOUNT_QUOTES_DETAIL,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/quote/QuotesDetail.vue'),\r\n props: true,\r\n meta: {\r\n permission: Permission.VIEW_QUOTE_STATUS,\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Quotes'),\r\n page: PageName.MY_ACCOUNT_QUOTES\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.QuotesDetail'),\r\n page: PageName.MY_ACCOUNT_QUOTES_DETAIL\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: 'bids',\r\n name: PageName.MY_ACCOUNT_BIDS,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/bids/Bids.vue'),\r\n meta: {\r\n permission: Permission.VIEW_BID_STATUS,\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Bids'),\r\n page: PageName.MY_ACCOUNT_BIDS\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: 'blanket-orders',\r\n name: PageName.MY_ACCOUNT_BLANKET_ORDERS,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/blanket/Blankets.vue'),\r\n meta: {\r\n permission: Permission.VIEW_QUOTE_STATUS,\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.BlanketOrders'),\r\n page: PageName.MY_ACCOUNT_BLANKET_ORDERS\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: 'blanket-orders/detail/:orderId',\r\n name: PageName.MY_ACCOUNT_BLANKET_DETAIL,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/blanket/BlanketsDetail.vue'),\r\n props: (route) => ({\r\n orderId: route.params.orderId\r\n }),\r\n meta: {\r\n permission: Permission.VIEW_QUOTE_STATUS,\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.BlanketOrders'),\r\n page: PageName.MY_ACCOUNT_BLANKET_ORDERS\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.BlanketOrdersDetail'),\r\n page: PageName.MY_ACCOUNT_BLANKET_DETAIL\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: 'rma-returns',\r\n name: PageName.MY_ACCOUNT_RMA_RETURN,\r\n redirect: {\r\n name: PageName.MY_ACCOUNT_RMA_RETURN_HISTORY\r\n },\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/rma-returns/RmaReturns.vue'),\r\n meta: {\r\n permission: Permission.VIEW_RMA_STATUS\r\n } as RouterMetaData,\r\n children: [\r\n {\r\n path: 'history',\r\n name: PageName.MY_ACCOUNT_RMA_RETURN_HISTORY,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/rma-returns/RmaReturnsList.vue'),\r\n meta: {\r\n permission: Permission.VIEW_RMA_STATUS,\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.RMAReturns'),\r\n page: PageName.MY_ACCOUNT_RMA_RETURN\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.RmaReturns.History'),\r\n page: PageName.MY_ACCOUNT_RMA_RETURN_HISTORY\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: 'create',\r\n name: PageName.MY_ACCOUNT_RMA_RETURN_CREATE,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/rma-returns/RmaReturnsCreate.vue'),\r\n meta: {\r\n permission: Permission.CREATE_RMA,\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.RMAReturns'),\r\n page: PageName.MY_ACCOUNT_RMA_RETURN\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.RmaReturns.CreateRma'),\r\n page: PageName.MY_ACCOUNT_RMA_RETURN_CREATE\r\n }\r\n ]\r\n } as RouterMetaData\r\n }\r\n ]\r\n },\r\n {\r\n path: 'ledger',\r\n name: PageName.MY_ACCOUNT_LEDGER,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/ledger/Ledger.vue'),\r\n meta: {\r\n permission: Permission.VIEW_STATEMENT_OF_ACCOUNT,\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Ledger'),\r\n page: PageName.MY_ACCOUNT_LEDGER\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: 'favourites',\r\n name: PageName.MY_ACCOUNT_FAVOURITES,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/favourites/Favourites.vue'),\r\n meta: {\r\n permission: Permission.SEE_PRODUCTS_AND_PRICES,\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Favourites'),\r\n page: PageName.MY_ACCOUNT_FAVOURITES\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: 'favourites/detail/:listId',\r\n name: PageName.MY_ACCOUNT_FAVOURITES_DETAIL,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/favourites/FavouritesDetail.vue'),\r\n props: (route) => ({\r\n listId: route.params.listId\r\n }),\r\n meta: {\r\n permission: Permission.SEE_PRODUCTS_AND_PRICES,\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Favourites'),\r\n page: PageName.MY_ACCOUNT_FAVOURITES\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.FavouritesDetail'),\r\n page: PageName.MY_ACCOUNT_FAVOURITES_DETAIL\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: 'settings',\r\n name: PageName.MY_ACCOUNT_ACCOUNT_SETTINGS,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/settings/AccountSettings.vue'),\r\n meta: {\r\n isPublic: false,\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.AccountSettings'),\r\n page: PageName.MY_ACCOUNT_ACCOUNT_SETTINGS\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: 'address-book',\r\n name: PageName.MY_ACCOUNT_ADDRESS_BOOK,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/address-book/AddressBook.vue'),\r\n meta: {\r\n permission: Permission.VIEW_ADDRESSBOOK,\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.AddressBook'),\r\n page: PageName.MY_ACCOUNT_ADDRESS_BOOK\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: 'administration',\r\n name: PageName.MY_ACCOUNT_USER_ADMINISTRATION,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/administration/UserAdministration.vue'),\r\n meta: {\r\n permission: Permission.CREATE_OR_DELETE_USERS,\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.UserAdministration'),\r\n page: PageName.MY_ACCOUNT_USER_ADMINISTRATION\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: 'impersonation',\r\n name: PageName.MY_ACCOUNT_IMPERSONATION,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/impersonation/Impersonate.vue'),\r\n meta: {\r\n permission: Permission.IMPERSONATE,\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Impersonation'),\r\n page: PageName.MY_ACCOUNT_IMPERSONATION\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: 'productguideconfiguration',\r\n name: PageName.MY_ACCOUNT_PRODUCT_GUIDE_CONFIGURATION,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/product-guide-configuration/ProductGuideConfigurationOverview.vue'),\r\n meta: {\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.ProductGuideConfiguration'),\r\n page: PageName.MY_ACCOUNT_PRODUCT_GUIDE_CONFIGURATION\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: 'productguideconfiguration/edit',\r\n name: PageName.MY_ACCOUNT_PRODUCT_GUIDE_CONFIGURATION_NEW,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/product-guide-configuration/ProductGuideConfigurationEdit.vue'),\r\n meta: {\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.ProductGuideConfiguration'),\r\n page: PageName.MY_ACCOUNT_PRODUCT_GUIDE_CONFIGURATION\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.ProductGuideConfiguration.Edit'),\r\n page: PageName.MY_ACCOUNT_PRODUCT_GUIDE_CONFIGURATION_NEW\r\n }\r\n ]\r\n } as RouterMetaData\r\n },\r\n {\r\n path: 'productguideconfiguration/edit/:externalId',\r\n name: PageName.MY_ACCOUNT_PRODUCT_GUIDE_CONFIGURATION_EDIT,\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/product-guide-configuration/ProductGuideConfigurationEdit.vue'),\r\n props: (route) => ({\r\n externalId: route.params.externalId\r\n }),\r\n meta: {\r\n breadcrumb: [\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.Title'),\r\n page: PageName.MY_ACCOUNT\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.ProductGuideConfiguration'),\r\n page: PageName.MY_ACCOUNT_PRODUCT_GUIDE_CONFIGURATION\r\n },\r\n {\r\n name: dictionaryService.get('MyAccount.Navigation.ProductGuideConfiguration.Edit'),\r\n page: PageName.MY_ACCOUNT_PRODUCT_GUIDE_CONFIGURATION_EDIT\r\n }\r\n ]\r\n } as RouterMetaData\r\n }\r\n ]\r\n};\r\n\r\nexport function permissionForRoute(name: string): Permission | undefined {\r\n const route = MyAccountRoutes.name === name ? MyAccountRoutes : MyAccountRoutes.children!.find(r => r.name === name);\r\n return route ? (route.meta as RouterMetaData).permission : undefined;\r\n}\r\n","export enum DownloadContentType {\r\n Excel = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n JSON = 'application/json',\r\n Image = 'image/jpeg'\r\n}\r\n\r\nclass CoreDownloadService {\r\n public downloadFileCore(file: Blob | string | object, fileName: string, contentType: DownloadContentType) {\r\n if (!(file instanceof Blob) && typeof file === 'object') {\r\n file = JSON.stringify(file, null, ' ');\r\n }\r\n\r\n const downloadLink = window.document.createElement('a');\r\n downloadLink.href = window.URL.createObjectURL(new Blob([file], { type: contentType }));\r\n downloadLink.download = fileName;\r\n document.body.appendChild(downloadLink);\r\n downloadLink.click();\r\n window.URL.revokeObjectURL(downloadLink.href);\r\n document.body.removeChild(downloadLink);\r\n }\r\n\r\n public downloadImageCore(fileUrl: string, fileName: string) {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open('GET', fileUrl, true);\r\n xhr.responseType = 'blob';\r\n xhr.onload = function() {\r\n if (window.navigator.msSaveOrOpenBlob) { // IE11\r\n const blob = new Blob([this.response], {\r\n type: DownloadContentType.Image\r\n });\r\n\r\n window.navigator.msSaveOrOpenBlob(blob, fileName);\r\n } else {\r\n const urlCreator = window.URL || window.webkitURL;\r\n const imageUrl = urlCreator.createObjectURL(this.response);\r\n const tag = document.createElement('a');\r\n tag.href = imageUrl;\r\n tag.download = fileName;\r\n document.body.appendChild(tag);\r\n tag.click();\r\n document.body.removeChild(tag);\r\n }\r\n };\r\n xhr.send();\r\n }\r\n}\r\n\r\nexport default new CoreDownloadService();\r\n","import coreDownloadService, { DownloadContentType } from '@/core/download/coreDownload.service';\r\nimport gtmService from '@/project/tracking/gtm/GTM.service';\r\n\r\nclass DownloadService {\r\n downloadFile(file: Blob | string | object, fileName: string, contentType: DownloadContentType) {\r\n coreDownloadService.downloadFileCore(file, fileName, contentType);\r\n gtmService.trackLinkClick(fileName);\r\n }\r\n\r\n downloadImage(fileUrl: string, fileName: string) {\r\n coreDownloadService.downloadImageCore(fileUrl, fileName);\r\n gtmService.trackLinkClick(fileName);\r\n }\r\n}\r\n\r\nexport {\r\n DownloadContentType\r\n};\r\n\r\nexport default new DownloadService();\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"input-search relative\"},[_c('input',_vm._g(_vm._b({directives:[{name:\"autofocus\",rawName:\"v-autofocus\",value:(_vm.autofocus),expression:\"autofocus\"},{name:\"prohibit-zoom\",rawName:\"v-prohibit-zoom\"}],staticClass:\"input-field h-full w-full px-20 leading-none text-black text-12 rounded-full\",class:{ 'border': !_vm.noBorder, 'bg-white': !_vm.gray, 'bg-gray-300': _vm.gray },attrs:{\"id\":_vm.id,\"type\":\"search\",\"placeholder\":_vm.placeholder},domProps:{\"value\":_vm.value},on:{\"input\":_vm.changedInput}},'input',_vm.$attrs,false),_vm.listeners)),_c('transition',{attrs:{\"mode\":\"out-in\",\"enter-active-class\":\"animated fadeIn u-anim-dur-200\",\"leave-active-class\":\"animated fadeOut u-anim-dur-200\"}},[(_vm.hasValue)?_c('button',{key:\"reset\",staticClass:\"reset-icon\",on:{\"click\":_vm.reset}},[_c('c-icon',{attrs:{\"name\":\"close\"}})],1):_c('c-icon',{key:\"search\",staticClass:\"search-icon\",attrs:{\"name\":\"search\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class InputSearch extends Vue {\r\n @Prop({ type: String, required: false, default: '' })\r\n private value!: string;\r\n\r\n @Prop({ type: String, required: false, default: '' })\r\n private placeholder!: string;\r\n\r\n @Prop({ type: Boolean, required: false, default: false })\r\n private noBorder!: boolean;\r\n\r\n @Prop({ type: Boolean, required: false, default: false })\r\n private gray!: boolean;\r\n\r\n @Prop({ type: Boolean, required: false, default: false })\r\n private autofocus!: boolean;\r\n\r\n private get id() {\r\n return 'search-' + Math.random();\r\n }\r\n\r\n private reset() {\r\n this.$emit('input', '');\r\n }\r\n\r\n private get hasValue(): boolean {\r\n return this.value !== '' && this.value != null;\r\n }\r\n\r\n private get listeners() {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { input, ...listeners } = this.$listeners;\r\n return listeners;\r\n }\r\n\r\n private changedInput(event) {\r\n this.$emit('input', event.target.value);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputSearch.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputSearch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InputSearch.vue?vue&type=template&id=35f59e54&scoped=true&\"\nimport script from \"./InputSearch.vue?vue&type=script&lang=ts&\"\nexport * from \"./InputSearch.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./InputSearch.vue?vue&type=style&index=0&id=35f59e54&lang=less&scoped=true&\"\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 \"35f59e54\",\n null\n \n)\n\nexport default component.exports","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'visa': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 291.8 91',\r\n data: ''\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SimpleSlider.vue?vue&type=style&index=0&id=6ba72ffa&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SimpleSlider.vue?vue&type=style&index=0&id=6ba72ffa&lang=less&scoped=true&\"","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'impersonate': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 32 22',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'becomeacustomer/become-a-customer-success-step3': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 83.27 44.3',\r\n data: ''\r\n }\r\n})\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex flex-row md:flex-col h-full\",class:{ 'md:bg-gray-400': _vm.isInHorizontalMode && !_vm.isBidOnPdp, 'pb-15 pt-10': _vm.isInVerticalMode }},[(_vm.isExternalProductGuide)?_c('div',{staticClass:\"w-full h-full flex justify-end md:justify-center md:items-center px-20 md:px-10 lg:px-15 mb-15 md:mb-0\"},[_c('CallToAction',{staticClass:\"add-to-basket--button\",class:_vm.externalTheme,attrs:{\"href\":_vm.productLink,\"target\":_vm.externalProductLinkTarget},nativeOn:{\"click\":function($event){return _vm.productClick()}}},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.productLinkText)}})])],1):(!_vm.loaded)?_c('div',{staticClass:\"relative w-full h-full\",class:{ 'only-xs:hidden block': _vm.isInHorizontalMode }},[_c('SpinnerOverlay',{staticClass:\"bg-transparent\",attrs:{\"show\":\"\"}})],1):(!_vm.isLoggedIn)?_c('div',{staticClass:\"flex flex-col w-full h-full mt-20\"},[_c('div',{staticClass:\"w-full h-full flex justify-end md:justify-center md:items-center px-20 md:px-10 lg:px-15 mb-15 md:mb-0\"},[_c('CallToAction',{staticClass:\"cta--green add-to-basket--button\",on:{\"click\":_vm.showLoginOverlay}},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Price.NotLoggedIn'))+\" \")])],1)]):(!_vm.isServiceAvailable && !_vm.isPriceAvailable)?_c('div',{staticClass:\"flex md:flex-col justify-between md:justify-center items-center px-20 md:px-10 lg:px-15 mb-15 md:mb-0 w-full md:h-full\",class:[_vm.isInVerticalMode ? 'flex-col mt-10' : 'flex-row']},[_c('div',{staticClass:\"leading-large text-gray-900 text-12 md:text-11 lg:text-12 font-medium mb-5\",class:{'mb-10' : _vm.isInVerticalMode}},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Cart.PriceUnavailable'))+\" \"),_c('v-popover',{staticClass:\"inline-block align-bottom\",attrs:{\"trigger\":\"hover focus\",\"auto-hide\":\"\",\"offset\":\"10\",\"placement\":\"top\"}},[_c('span',{staticClass:\"underline cursor-pointer\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Cart.PriceUnavailable.Info'))+\" \")]),_c('template',{slot:\"popover\"},[_c('div',{staticClass:\"font-semi-bold text-12 pb-5\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Cart.PriceUnavailable.Popup.Title'))+\" \")]),_c('div',{staticClass:\"text-12 max-w-150 leading-large\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Cart.PriceUnavailable.Popup.Content'))+\" \")])])],2)],1),(_vm.$permission.canPlaceOrder())?_c('AddToBasket',{staticClass:\"md:flex md:justify-end md:w-full\",attrs:{\"style-mode\":\"tile\",\"product-wid\":_vm.product.wid,\"bid-id\":_vm.bidId,\"allow-delete\":\"\"},on:{\"change-quantity\":_vm.addToBasketChange}}):_vm._e()],1):(_vm.isServiceAvailable && !_vm.isPriceAvailable)?_c('p',{staticClass:\"w-full h-full text-16 font-medium flex justify-end md:justify-center items-center px-20 md:px-10 lg:px-15 mb-15 md:mb-0\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Cart.ServiceUnavailable'))+\" \")]):_c('div',{staticClass:\"flex flex-col w-full h-full\",class:{'pb-10' : _vm.suggestedRetailPrice && _vm.isInHorizontalMode}},[(_vm.isInHorizontalMode)?_c('div',[(_vm.hasQuantityDiscounts)?_c('ProductTileDiscount',{staticClass:\"flex justify-start md:justify-end px-20 md:px-0\",attrs:{\"item-id\":_vm.product.itemId,\"price\":_vm.price.data}}):_vm._e()],1):_vm._e(),_c('div',{staticClass:\"flex flex-row md:flex-col items-center w-full\",class:{ 'flex-row md:flex-col px-20 md:px-10 lg:px-15 mb-15 md:mb-0 md:h-full justify-between md:justify-center': _vm.isInHorizontalMode,\n 'flex-col justify-end h-full px-15': _vm.isInVerticalMode,\n 'no-padding': _vm.isBidOnPdp }},[(_vm.hasAvailableBid)?_c('div',{staticClass:\"flex w-full\",class:{\n 'md:mb-5 justify-start md:flex-col lg:flex-row md:items-end md:justify-end': _vm.isInHorizontalMode && !_vm.isBidOnPdp,\n 'mb-5 justify-between': _vm.isInVerticalMode,\n 'mb-5 flex-col -ml-10 md:ml-0 md:items-end justify-between': _vm.isBidOnPdp\n }},[(_vm.price)?_c('s',{staticClass:\"text-gray-900 text-13\",class:{ 'lg:mr-5': !_vm.isBidOnPdp, 'md:text-right': _vm.isBidOnPdp }},[_vm._v(\" \"+_vm._s(_vm._f(\"op\")(_vm.price,\"data\", \"amount\", \"cultureFormatted\"))+\" \")]):_vm._e(),(!_vm.isBidOnPdp)?[_c('p',{staticClass:\"ml-5 md:ml-0 text-black font-bold text-14 uppercase\",class:{ 'text-right flex-1': _vm.isInVerticalMode && !_vm.price }},[_vm._v(\" \"+_vm._s(_vm.bid.price.cultureFormatted)+\" \")])]:[_c('p',{staticClass:\"text-black md:text-right text-14 my-5\"},[_c('span',{staticClass:\"pr-10\"},[_vm._v(_vm._s(_vm._f(\"t\")('Product.Details.Bids.Now'))+\":\")]),_c('span',{staticClass:\"font-bold lg:text-16 uppercase\"},[_vm._v(_vm._s(_vm.bid.price.cultureFormatted))])])]],2):_c('div',{staticClass:\"flex flex-col w-full\",class:{ 'md:mb-5': _vm.isInHorizontalMode, 'mb-10': _vm.isInVerticalMode }},[(_vm.suggestedRetailPrice)?_c('div',{staticClass:\"w-full\",class:{ 'md:text-right': _vm.isInHorizontalMode, 'text-right': _vm.isInVerticalMode}},[_c('p',{staticClass:\"text-11 md:text-11\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Cart.SuggestedRetailPrice'))+\" \"),_c('span',{staticClass:\"whitespace-no-wrap\"},[_vm._v(_vm._s(_vm.suggestedRetailPrice.cultureFormatted))])])]):_vm._e(),_c('div',{staticClass:\"flex w-full\",class:{ 'justify-start md:flex-col md:items-end md:justify-end lg:flex-row': _vm.isInHorizontalMode,\n 'justify-between': _vm.isInVerticalMode }},[(_vm.previousPrice)?_c('s',{staticClass:\"text-gray-900 text-12 mr-10 md:mr-0 lg:mr-10\",class:{'mt-1': _vm.isInVerticalMode}},[_vm._v(\" \"+_vm._s(_vm.previousPrice.cultureFormatted)+\" \")]):_vm._e(),_c('p',{staticClass:\"text-black font-bold text-14 uppercase\",class:{ 'text-right': _vm.isInVerticalMode, 'w-full': _vm.isInVerticalMode && !_vm.previousPrice }},[_vm._v(\" \"+_vm._s(_vm._f(\"op\")(_vm.price,\"data\", \"amount\", \"cultureFormatted\"))+\" \")])])]),(_vm.$permission.canPlaceOrder())?_c('AddToBasket',{staticClass:\"w-full\",attrs:{\"style-mode\":_vm.basketStyle,\"product-wid\":_vm.product.wid,\"bid-id\":_vm.bidId,\"max-value\":_vm.maxQuantity,\"allow-delete\":\"\"},on:{\"change-quantity\":_vm.addToBasketChange}}):_vm._e()],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Prop, Component } from 'vue-property-decorator';\r\nimport { ProductTileViewObject, BidViewObject } from '@/types/apiServerContract';\r\nimport { PriceSimpleDataExtended } from '@/project/product/services/simplePriceFetch.service';\r\nimport SpinnerOverlay from '@/project/spinners/SpinnerOverlay.vue';\r\n\r\nimport AddToBasket from '@/project/basket/AddToBasket.vue';\r\nimport ProductTileDiscount from './ProductTileDiscounts.vue';\r\nimport loginFormOverlayService from '@/project/modals/overlays/LoginFormOverlay.service';\r\nimport serverContextService from '@/core/serverContext.service';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\nimport gtmService from '@/project/tracking/gtm/GTM.service';\r\nimport urlHelperService, { UrlQueryKey } from '@/core/urlHelper.service';\r\n\r\n@Component({\r\n components: { AddToBasket, ProductTileDiscount, SpinnerOverlay }\r\n})\r\nexport default class ProductTileCart extends Vue {\r\n @Prop({ required: true }) product!: ProductTileViewObject;\r\n @Prop({ required: true }) bid!: BidViewObject | null;\r\n @Prop({ required: true }) price!: { loaded: boolean, data: PriceSimpleDataExtended };\r\n @Prop({ required: false, default: false }) isLoggedIn!: boolean;\r\n @Prop({ required: false, type: String, default: 'vertical' }) mode!: 'vertical' | 'horizontal' | 'horizontal-tiny';\r\n @Prop({ required: false, default: false, type: Boolean }) isBidOnPdp!: boolean;\r\n @Prop({ required: true, type: Function }) productClick!: () => void;\r\n\r\n private get isInVerticalMode() {\r\n return this.mode === 'vertical';\r\n }\r\n\r\n private get isInHorizontalMode() {\r\n return this.mode === 'horizontal' || this.mode === 'horizontal-tiny';\r\n }\r\n\r\n private get basketStyle() {\r\n return this.isInVerticalMode ? 'tile-condensed' : 'tile';\r\n }\r\n\r\n get loaded(): boolean {\r\n return this.price?.loaded;\r\n }\r\n\r\n get isServiceAvailable(): boolean {\r\n return this.price.data?.isServiceAvailable ?? false;\r\n }\r\n\r\n get isPriceAvailable(): boolean {\r\n return (this.price.data !== null && this.price.data.amount.cultureFormatted !== null) || this.hasAvailableBid;\r\n }\r\n\r\n get hasAvailableBid() {\r\n return this.bid !== null && this.bid.price !== null;\r\n }\r\n\r\n get previousPrice() {\r\n return this.price.data?.previousPrice.cultureFormatted && this.price.data?.previousPrice;\r\n }\r\n\r\n get suggestedRetailPrice() {\r\n return this.price.data?.suggestedRetailPrice.cultureFormatted && this.price.data?.suggestedRetailPrice;\r\n }\r\n\r\n get hasQuantityDiscounts() {\r\n return this.price?.data?.hasQuantityDiscounts ?? false;\r\n }\r\n\r\n get maxQuantity() {\r\n return this.bid?.remQty ?? 99999;\r\n }\r\n\r\n showLoginOverlay() {\r\n gtmService.trackLogInToViewPricesClick();\r\n loginFormOverlayService.show('login');\r\n }\r\n\r\n get bidId(): number | null {\r\n return this.bid?.id ?? null;\r\n }\r\n\r\n // Loaded via IFrame\r\n get isExternalProductGuide() {\r\n return serverContextService.isExternalProductGuide;\r\n }\r\n\r\n get productLink() {\r\n return serverContextService.productUrl(this.product);\r\n }\r\n\r\n get productLinkText() {\r\n return serverContextService.externalProductLinkText\r\n ? serverContextService.externalProductLinkText\r\n : dictionaryService.get('Product.ExternalLink.DefaultText');\r\n }\r\n\r\n get externalProductLinkTarget() {\r\n return serverContextService.externalProductLinkTarget;\r\n }\r\n\r\n get externalTheme() {\r\n const externalTheme = serverContextService.externalProductGuideSettings?.theme;\r\n const theme: string = externalTheme || (urlHelperService.getQueryParam(UrlQueryKey.theme) || 'green').replace('invert-', '');\r\n return `cta--${theme}`;\r\n }\r\n\r\n private addToBasketChange(deltaQuantity, quantity) {\r\n this.$emit('add-to-basket-change', deltaQuantity, quantity);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileCart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileCart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductTileCart.vue?vue&type=template&id=37584789&scoped=true&\"\nimport script from \"./ProductTileCart.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductTileCart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductTileCart.vue?vue&type=style&index=0&id=37584789&lang=less&scoped=true&\"\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 \"37584789\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DesktopPageHeader.vue?vue&type=style&index=0&id=c0f65268&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DesktopPageHeader.vue?vue&type=style&index=0&id=c0f65268&lang=less&scoped=true&\"","import { ProductConditionCode } from '@/types/apiServerContract';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\n\r\ntype ProductClassificationCodeDictionary = {\r\n title: string;\r\n details: string;\r\n}\r\n\r\nconst ProductClassifications = new Map(\r\n [\r\n [ProductConditionCode.Exchange, { title: 'Product.Condition.Exchange', details: 'Product.Condition.Exchange.Details' }],\r\n [ProductConditionCode.SpecialOr, { title: 'Product.Condition.SpecialOr', details: 'Product.Condition.SpecialOr.Details' }],\r\n [ProductConditionCode.C1, { title: 'Product.Condition.C1', details: 'Product.Condition.C1.Details' }],\r\n [ProductConditionCode.C2, { title: 'Product.Condition.C2', details: 'Product.Condition.C2.Details' }],\r\n [ProductConditionCode.C3, { title: 'Product.Condition.C3', details: 'Product.Condition.C3.Details' }],\r\n [ProductConditionCode.Refurb, { title: 'Product.Condition.Refurb', details: 'Product.Condition.Refurb.Details' }]\r\n ]\r\n);\r\n\r\nclass ProductConditionService {\r\n public getProductClassificationCodeDictionary(code: ProductConditionCode | null | undefined, details: boolean = false): string | null {\r\n if (!code) return null;\r\n\r\n const productClassification = ProductClassifications.get(code);\r\n if (!productClassification) { throw new Error(`Unknown classification code ${code}!`); }\r\n\r\n return details ? dictionaryService.get(productClassification.details) : dictionaryService.get(productClassification.title);\r\n }\r\n}\r\n\r\nexport default new ProductConditionService();\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CampaignIcon.vue?vue&type=style&index=0&id=75fb7d24&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CampaignIcon.vue?vue&type=style&index=0&id=75fb7d24&lang=less&scoped=true&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainNavigationSlider.vue?vue&type=style&index=0&id=16f90f47&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainNavigationSlider.vue?vue&type=style&index=0&id=16f90f47&lang=less&scoped=true&\"","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'profile': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 32 32',\r\n data: ''\r\n }\r\n})\r\n","import urlHelper, { UrlFacets } from '@/core/urlHelper.service';\r\nimport { FacetsViewModel } from '@/types/apiServerContract';\r\n\r\nfunction createUrlFacets(existingFacets: FacetsViewModel | null = null): UrlFacets {\r\n const facets: UrlFacets = { ...urlHelper.getFacets() };\r\n\r\n // If we have a previous result, preserve the position of the selected facets\r\n if (existingFacets) {\r\n const keys = Object.keys(facets);\r\n for (const key of keys) {\r\n let facetId = key;\r\n if (key.startsWith('from_')) {\r\n facetId = key.slice('from_'.length);\r\n }\r\n\r\n const facet = existingFacets.facets.find(x => x.facetId === facetId);\r\n if (facet) {\r\n const newKey = key + ':' + facet.position;\r\n delete Object.assign(facets, { [newKey]: facets[key] })[key];\r\n }\r\n }\r\n }\r\n\r\n return facets;\r\n}\r\nexport default {\r\n createUrlFacets\r\n};\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('transition',{attrs:{\"mode\":\"out-in\",\"enter-active-class\":_vm.animationEnterClass,\"leave-active-class\":_vm.animationLeaveClass},on:{\"after-leave\":_vm.leaveHandler}},[(_vm.active)?_c('div',{key:\"active\"},[_vm._t(\"default\")],2):(!_vm.active && _vm.hasTrigger)?_c('div',{key:\"trigger\"},[_vm._t(\"trigger\",null,{\"trigger\":_vm.trigger})],2):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class Temporary extends Vue {\r\n @Prop({ type: String, default: 'center', validator: value => ['left', 'right', 'top', 'center', 'fade'].includes(value as string) })\r\n private mode!: string;\r\n\r\n @Prop({ required: false, type: Number, default: 200 })\r\n private delay!: number;\r\n\r\n @Prop({ required: false, type: Number, default: 1500 })\r\n private duration!: number;\r\n\r\n @Prop({ type: Boolean, required: false, default: false })\r\n private hasTrigger!: boolean;\r\n\r\n @Prop({\r\n type: Function,\r\n required: false,\r\n default: () => {}\r\n }) leaveHandler!: () => void;\r\n\r\n private active: boolean = false;\r\n\r\n public trigger() {\r\n setTimeout(() => {\r\n this.active = true;\r\n\r\n if (this.duration > 0) {\r\n setTimeout(() => {\r\n this.active = false;\r\n }, this.duration);\r\n }\r\n }, this.delay);\r\n }\r\n\r\n private get animationEnterClass() {\r\n const animTypes = {\r\n left: 'slideInLeft',\r\n right: 'slideInRight',\r\n top: 'slideInDown',\r\n center: 'zoomIn',\r\n fade: 'fadeIn'\r\n };\r\n return this.animationClass(animTypes) + ' u-anim-delay-100 u-anim-dur-300 u-anim-ease-out';\r\n }\r\n\r\n private get animationLeaveClass() {\r\n const animTypes = {\r\n left: 'slideOutLeft',\r\n right: 'slideOutRight',\r\n top: 'slideOutDown',\r\n center: 'fadeOut',\r\n fade: 'fadeOut'\r\n };\r\n return this.animationClass(animTypes) + ' u-anim-dur-200 u-anim-ease-in';\r\n }\r\n\r\n private animationClass(animTypes: { [mode: string]: string }) {\r\n return `animated ${animTypes[this.mode]}`;\r\n }\r\n\r\n mounted() {\r\n if (this.hasTrigger) return;\r\n\r\n this.trigger();\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Temporary.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Temporary.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Temporary.vue?vue&type=template&id=6bcd80c3&\"\nimport script from \"./Temporary.vue?vue&type=script&lang=ts&\"\nexport * from \"./Temporary.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/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileImage.vue?vue&type=style&index=0&id=7c3a7f78&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileImage.vue?vue&type=style&index=0&id=7c3a7f78&lang=less&scoped=true&\"","export const REMOVE_PRODUCT_TILE = 'REMOVE_PRODUCT_TILE';\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.show || _vm.doShow)?_c('div',{staticClass:\"overlay absolute inset-0 z-spinner select-none\"},[_c('transition',{attrs:{\"appear\":\"\",\"enter-active-class\":\"animated fadeIn u-anim-dur-200\",\"leave-active-class\":\"animated fadeOut u-anim-dur-200\"}},[(_vm.doShow)?_c('div',{staticClass:\"overlay h-full flex items-center justify-center\"},[_c('spinner-element')],1):_vm._e()])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"ball-pulse pulse-lyn\"},[_c('div',{staticClass:\"spin_lyn1\",attrs:{\"aria-hidden\":\"true\"}},[_c('c-icon',{attrs:{\"name\":\"lyn1\",\"height\":\"22\",\"width\":\"32\",\"alt\":\"\",\"original\":true}})],1),_c('div',{staticClass:\"spin_lyn2\",attrs:{\"aria-hidden\":\"true\"}},[_c('c-icon',{attrs:{\"name\":\"lyn2\",\"height\":\"22\",\"width\":\"32\",\"alt\":\"\",\"original\":true}})],1),_c('div',{staticClass:\"spin_lyn3\",attrs:{\"aria-hidden\":\"true\"}},[_c('c-icon',{attrs:{\"name\":\"lyn3\",\"height\":\"22\",\"width\":\"32\",\"alt\":\"\",\"original\":true}})],1),_c('p',{staticClass:\"sr-only\"},[_vm._v(\" Loading... \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\n\r\n@Component({\r\n name: 'SpinnerElement'\r\n})\r\nexport default class SpinnerElement extends Vue {\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpinnerElement.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpinnerElement.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpinnerElement.vue?vue&type=template&id=5fe35779&scoped=true&\"\nimport script from \"./SpinnerElement.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpinnerElement.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SpinnerElement.vue?vue&type=style&index=0&id=5fe35779&lang=less&scoped=true&\"\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 \"5fe35779\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop, Watch } from 'vue-property-decorator';\r\nimport SpinnerElement from '@/project/spinners/SpinnerElement.vue';\r\n\r\n@Component({\r\n components: { SpinnerElement }\r\n})\r\nexport default class Spinner extends Vue {\r\n @Prop({\r\n required: false,\r\n type: Boolean\r\n })\r\n show!: boolean;\r\n\r\n @Prop({\r\n required: false,\r\n type: Number,\r\n default: 250\r\n })\r\n delay!: number;\r\n\r\n @Prop({\r\n required: false,\r\n type: Number,\r\n default: 0\r\n })\r\n minDuration!: number;\r\n\r\n doShow = false;\r\n startTime = 0;\r\n\r\n @Watch('show', {\r\n immediate: true\r\n })\r\n onShowChange(value: boolean) {\r\n this.change(value);\r\n }\r\n\r\n change(value: boolean) {\r\n // Only show after delay, and if shown, show for at least minDuration.\r\n if (value) {\r\n setTimeout(() => {\r\n if (this.show) {\r\n this.doShow = true;\r\n this.startTime = performance.now();\r\n }\r\n }, this.delay);\r\n } else {\r\n const timeShown = performance.now() - this.startTime;\r\n const restTime = Math.max(0, this.minDuration - timeShown);\r\n setTimeout(() => {\r\n if (!this.show) {\r\n this.doShow = false;\r\n }\r\n }, restTime);\r\n }\r\n }\r\n}\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpinnerOverlay.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpinnerOverlay.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpinnerOverlay.vue?vue&type=template&id=3aa49e76&\"\nimport script from \"./SpinnerOverlay.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpinnerOverlay.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","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'splash-campaign': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 36 36',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'tilbud': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 32 32',\r\n data: ''\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchAdminOptions.vue?vue&type=style&index=0&id=b649e750&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchAdminOptions.vue?vue&type=style&index=0&id=b649e750&lang=less&scoped=true&\"","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'arrow-thin-right': {\r\n width: 18,\r\n height: 32,\r\n viewBox: '0 0 18 32',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'favorite-remove': {\r\n width: 38,\r\n height: 30,\r\n viewBox: '0 0 38 30',\r\n data: ''\r\n }\r\n})\r\n","module.exports = __webpack_public_path__ + \"img/oprema-fallback.47abf989.svg\";","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'oprema-logo': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 107.8 21.6',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'oprema-lyn1': {\r\n width: 18,\r\n height: 18,\r\n viewBox: '0 0 14 15',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'funnel': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 32 33',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'close': {\r\n width: 20,\r\n height: 20,\r\n viewBox: '0 0 20 20',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'limited-supply': {\r\n width: 32,\r\n height: 32,\r\n viewBox: '0 0 32 32',\r\n data: ''\r\n }\r\n})\r\n","const ImageSizePlaceholder = '_size_';\r\n\r\nfunction formatImageUrl(imageUrl: string, size: string): string {\r\n return imageUrl.replace(ImageSizePlaceholder, size);\r\n}\r\n\r\nfunction defaultImageUrl(imageUrl: string): string {\r\n // '700' is one of the sizes PIM has provided (see complete list in ResponsiveProductImage.vue)\r\n return formatImageUrl(imageUrl, '700');\r\n}\r\n\r\nexport default {\r\n formatImageUrl,\r\n defaultImageUrl\r\n};\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetQuickView.vue?vue&type=style&index=0&id=27d133c0&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetQuickView.vue?vue&type=style&index=0&id=27d133c0&lang=less&scoped=true&\"","import { AbstractModalService } from '@/core/modals/AbstractModalService';\r\nimport { FavoriteViewObject } from '@/types/apiServerContract';\r\n\r\nclass FavoriteListCrudOverlayService extends AbstractModalService {\r\n public show(details: FavoriteViewObject | null, canDelete: boolean, mode: 'edit' | 'create') {\r\n return this.showModal({\r\n component: () => import(\r\n /* webpackChunkName: 'myaccount' */\r\n '@/project/app/client-pages/my-account/favourites/FavouritesCrudListOverlay.vue'),\r\n componentAttrs: {\r\n details,\r\n canDelete,\r\n mode\r\n },\r\n options: {\r\n wide: true\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default new FavoriteListCrudOverlayService();\r\n","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=0ab45f3e&lang=less&scoped=true&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=0ab45f3e&lang=less&scoped=true&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BlockList.vue?vue&type=style&index=0&lang=less&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BlockList.vue?vue&type=style&index=0&lang=less&\"","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'map-marker-turquoise': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 18 24',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'burger': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 32 24',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'basket-cancel': {\r\n width: 9,\r\n height: 9,\r\n viewBox: '0 0 9 9',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'filters': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 33 32',\r\n data: ''\r\n }\r\n})\r\n","class DomMutationService {\r\n public MutationObserver;\r\n public eventListenerSupported;\r\n constructor() {\r\n this.MutationObserver = (window as any).MutationObserver || (window as any).WebKitMutationObserver;\r\n this.eventListenerSupported = window.addEventListener;\r\n }\r\n\r\n public observe(obj, callback) {\r\n if (this.MutationObserver) {\r\n const obs = new this.MutationObserver((mutations, observer) => {\r\n if (mutations[0].addedNodes.length || mutations[0].removedNodes.length) {\r\n callback();\r\n }\r\n });\r\n obs.observe(obj, { childList: true, subtree: true });\r\n } else if (this.eventListenerSupported) {\r\n obj.addEventListener('DOMNodeInserted', callback, false);\r\n obj.addEventListener('DOMNodeRemoved', callback, false);\r\n }\r\n }\r\n}\r\n\r\nexport default new DomMutationService();\r\n","import domMutation from './domMutation.service';\r\nimport $ from 'cash-dom';\r\n\r\nexport interface Viewport {\r\n width: number;\r\n height: number;\r\n scrollX: number;\r\n scrollY: number;\r\n scrollChange: boolean,\r\n sizeChange: boolean\r\n}\r\n\r\nclass ViewportEventsService {\r\n private ticking = false;\r\n private tickCallbacks: Array<(viewport: Viewport, timestamp: number) => void> = [];\r\n public viewport: Viewport = {\r\n width: this.getWindowWidth(),\r\n height: window.innerHeight,\r\n scrollX: this.getPageOffset('x'),\r\n scrollY: this.getPageOffset('y'),\r\n scrollChange: true,\r\n sizeChange: true\r\n };\r\n\r\n constructor() {\r\n $(window)\r\n .on('scroll', this.scrollHandler.bind(this))\r\n .on('resize', this.resizeHandler.bind(this))\r\n .on('orientationchange', this.resizeHandler.bind(this));\r\n\r\n domMutation.observe(document, this.requestTick.bind(this));\r\n this.requestTick();\r\n }\r\n\r\n public setCallback(callback: (viewport: Viewport, timestamp: number) => void) {\r\n this.tickCallbacks.push(callback);\r\n return callback;\r\n }\r\n\r\n public removeCallback(callback: (viewport: Viewport, timestamp: number) => void) {\r\n const index = this.tickCallbacks.indexOf(callback);\r\n this.tickCallbacks.splice(index, 1);\r\n }\r\n\r\n public getPageOffset(axis) {\r\n return axis === 'y'\r\n ? window.pageYOffset || document.documentElement!.scrollTop\r\n : window.pageXOffset || document.documentElement!.scrollLeft;\r\n }\r\n\r\n private tick(timestamp: number) {\r\n this.ticking = false;\r\n this.tickCallbacks.forEach(callback => callback && callback.call(callback, this.viewport, timestamp));\r\n }\r\n\r\n private requestTick() {\r\n if (!this.ticking) {\r\n requestAnimationFrame(this.tick.bind(this));\r\n }\r\n this.ticking = true;\r\n }\r\n\r\n private scrollHandler() {\r\n this.viewport.scrollX = this.getPageOffset('x');\r\n this.viewport.scrollY = this.getPageOffset('y');\r\n this.viewport.scrollChange = true;\r\n this.viewport.sizeChange = false;\r\n this.requestTick();\r\n }\r\n\r\n private resizeHandler() {\r\n this.viewport.width = this.getWindowWidth();\r\n this.viewport.height = window.innerHeight;\r\n this.viewport.scrollChange = false;\r\n this.viewport.sizeChange = true;\r\n this.requestTick();\r\n }\r\n\r\n private getWindowWidth() {\r\n return Math.max(window.innerWidth, window.document.documentElement!.clientWidth);\r\n }\r\n}\r\n\r\nexport default new ViewportEventsService();\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('validation-provider',{attrs:{\"rules\":_vm.rules,\"tag\":\"div\",\"name\":_vm.name},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nvar classes = ref.classes;\nreturn [_c('div',{staticClass:\"relative w-full h-40\",class:{ hasValue: _vm.hasValue && _vm.labelText }},[_c('input',_vm._g(_vm._b({directives:[{name:\"autofocus\",rawName:\"v-autofocus\",value:(_vm.autofocus),expression:\"autofocus\"},{name:\"prohibit-zoom\",rawName:\"v-prohibit-zoom\"}],staticClass:\"c-input-text__input h-40 w-full px-20 z-0 leading-40 bg-gray-300 text-black outline-none\",class:[classes, { 'border border-red-500': _vm.invalid }],attrs:{\"id\":_vm.id,\"type\":_vm.internalType,\"placeholder\":_vm.placeholder},domProps:{\"value\":_vm.value},on:{\"input\":_vm.changedInput}},'input',_vm.$attrs,false),_vm.listeners)),(_vm.labelText)?_c('label',{staticClass:\"c-input-text__label w-full truncate y-center absolute left-0 currentColor text-gray-800 text-13 font-medium leading-none\",attrs:{\"for\":_vm.id}},[_vm._v(\" \"+_vm._s(_vm.labelText)+\" \")]):_vm._e(),(_vm.infoLabel && !_vm.isPassword)?_c('v-popover',{staticClass:\"info-input-icon\",attrs:{\"popover-wrapper-class\":\"wrapper max-w-250 md:max-w-350\",\"popover-inner-class\":\"tooltip-inner whitespace-normal p-10 text-center\",\"trigger\":\"click\",\"auto-hide\":\"\",\"offset\":\"5\",\"placement\":\"top\"}},[_c('button',{attrs:{\"type\":\"button\"}},[_c('span',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm._f(\"t\")('Checkout.Address.Info')))]),_c('c-icon',{attrs:{\"name\":\"info\"}})],1),_c('template',{slot:\"popover\"},[_vm._v(\" \"+_vm._s(_vm.infoLabel)+\" \")])],2):_vm._e(),(_vm.isPassword)?_c('div',{staticClass:\"password-input-icon\",on:{\"click\":_vm.togglePasswordVisibility}},[(_vm.isPasswordVisible)?_c('c-icon',{attrs:{\"name\":\"impersonate-off\",\"width\":\"16\",\"height\":\"16\"}}):_c('c-icon',{attrs:{\"name\":\"impersonate\",\"width\":\"16\",\"height\":\"16\"}})],1):_vm._e()],1),(_vm.showErrors)?[_c('ol',_vm._l((errors),function(error){return _c('li',{key:error,staticClass:\"text-red-500 text-11 font-medium px-20 pb-5 pt-3\"},[_vm._v(\" \"+_vm._s(error)+\" \")])}),0)]:_vm._e()]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class InputText extends Vue {\r\n @Prop({ required: true })\r\n public value!: string;\r\n\r\n @Prop({ type: String, required: false, default: '' })\r\n private label!: string;\r\n\r\n @Prop({ type: String, default: '' })\r\n private infoLabel!: string;\r\n\r\n @Prop({ type: String, required: true })\r\n private name!: string;\r\n\r\n @Prop({ type: String, default: 'text' })\r\n private type!: string;\r\n\r\n @Prop({ type: [String, Object], required: false, default: '' })\r\n private rules!: string | object;\r\n\r\n @Prop({ type: Boolean, required: false, default: false })\r\n private autofocus!: boolean;\r\n\r\n @Prop({ type: Boolean, required: false, default: true })\r\n private showErrors!: boolean;\r\n\r\n @Prop({ type: String, required: false, default: '' })\r\n private placeholder!: string;\r\n\r\n @Prop({ type: Boolean, required: false, default: false })\r\n private invalid!: boolean;\r\n\r\n private get id() {\r\n return this.name + Math.random();\r\n }\r\n\r\n private internalType: string = this.type;\r\n\r\n private get isPasswordVisible() {\r\n return this.internalType === 'text';\r\n }\r\n\r\n private togglePasswordVisibility() {\r\n this.internalType = this.isPasswordVisible ? 'password' : 'text';\r\n }\r\n\r\n private get isPassword() {\r\n return this.type === 'password';\r\n }\r\n\r\n private get listeners() {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { input, ...listeners } = this.$listeners;\r\n return listeners;\r\n }\r\n\r\n private get hasValue(): boolean {\r\n return this.value !== '' && this.value != null;\r\n }\r\n\r\n private get labelText(): string {\r\n return this.isRequired ? `${this.label}*` : this.label;\r\n }\r\n\r\n private get isRequired(): boolean {\r\n return 'required' in this.$attrs ||\r\n (typeof this.rules === 'string' && this.rules.includes('required')) ||\r\n (typeof this.rules === 'object' && !!(this.rules as any).required);\r\n }\r\n\r\n private changedInput(event) {\r\n this.$emit('input', event.target.value);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputText.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputText.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InputText.vue?vue&type=template&id=6be86a63&scoped=true&\"\nimport script from \"./InputText.vue?vue&type=script&lang=ts&\"\nexport * from \"./InputText.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./InputText.vue?vue&type=style&index=0&id=6be86a63&lang=less&scoped=true&\"\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 \"6be86a63\",\n null\n \n)\n\nexport default component.exports","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'info': {\r\n width: 32,\r\n height: 32,\r\n viewBox: '0 0 32 32',\r\n data: ''\r\n }\r\n})\r\n","import Deferred from '@/core/async/Deferred';\r\nimport UUID from '@/core/uuid.service';\r\nimport { ComponentType, ModalOptions, ModalState } from './ModalState';\r\n\r\nconst baseOptions: ModalOptions = {\r\n disableBodyScroll: true,\r\n contentAutoScroll: true,\r\n contentMaxHeight: true,\r\n showCloseButton: true,\r\n disableUserClose: false,\r\n placement: 'center',\r\n singleton: true,\r\n usePanelWrapper: true,\r\n wide: false,\r\n closeOnRouteChange: true,\r\n closeOnBreakpointChange: true,\r\n closeButtonPosition: null\r\n};\r\n\r\nexport abstract class AbstractModalService {\r\n public abstract show(...aggs: any[]);\r\n\r\n protected async showModal({ component, componentAttrs, modalListeners, options }:\r\n { component: ComponentType; componentAttrs: any; modalListeners?: any; options?: Partial }): Promise {\r\n const deferred = new Deferred();\r\n\r\n const modalOptions = this.getOptions(options);\r\n\r\n if (modalOptions?.singleton) {\r\n await ModalState.hideModals();\r\n }\r\n\r\n ModalState.setActiveModal({\r\n id: UUID(),\r\n component: component,\r\n componentAttrs: componentAttrs,\r\n modalListeners: modalListeners,\r\n deferred: deferred,\r\n state: 'entering',\r\n ...modalOptions\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n private getOptions(options?: Partial) : ModalOptions {\r\n options = {\r\n ...baseOptions,\r\n ...options\r\n };\r\n return options as ModalOptions;\r\n }\r\n}\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'productguide': {\r\n width: 32,\r\n height: 32,\r\n viewBox: '0 0 32 32',\r\n data: ''\r\n }\r\n})\r\n","import Api from '@/project/http/Api.service';\r\nimport AbstractBulkFetch from '@/core/bulk-fetch/AbstractBulkFetch';\r\nimport { ProductBidViewObject } from '@/types/apiServerContract';\r\nimport { keyBy } from 'lodash';\r\n\r\nclass ProductBidsFetchService extends AbstractBulkFetch {\r\n async apiCall(itemIds: string[], cancelKey: string): Promise<{ [key: string]: ProductBidViewObject }> {\r\n const result = await Api.product.bids(itemIds, cancelKey);\r\n return keyBy(result.bids, 'productWid');\r\n }\r\n}\r\n\r\nexport default new ProductBidsFetchService('Product.Bids', 100, true);\r\n","import Deferred from '@/core/async/Deferred';\r\n\r\nexport class Ensure {\r\n private cancelled = false;\r\n private timedOut = false;\r\n private deferred = new Deferred();\r\n private done = false;\r\n\r\n constructor(private expr: () => boolean, private timeout = 5000) {}\r\n\r\n private checkExpression() {\r\n if (this.done) return;\r\n if (this.cancelled) {\r\n this.deferred.reject(new Error('cancelled'));\r\n this.done = true;\r\n return;\r\n }\r\n if (this.timedOut) {\r\n this.deferred.reject(new Error('timed out'));\r\n this.done = true;\r\n return;\r\n }\r\n const fulfilled = this.expr();\r\n if (fulfilled) {\r\n this.deferred.resolve();\r\n this.done = true;\r\n return;\r\n }\r\n setTimeout(() => this.checkExpression(), 100);\r\n }\r\n\r\n public async start(): Promise {\r\n if (this.timeout > 0) {\r\n setTimeout(() => this.timedOut = true, this.timeout);\r\n }\r\n this.checkExpression();\r\n return this.deferred.promise;\r\n }\r\n\r\n public cancel() {\r\n this.cancelled = true;\r\n }\r\n}\r\n","const sizes: Array = [];\r\nlet _baseUrl: string = '';\r\n\r\nexport function addSize(width: number) {\r\n sizes.push(width);\r\n}\r\n\r\nexport function setBaseUrl(baseUrl: string) {\r\n _baseUrl = baseUrl;\r\n}\r\n\r\nfunction getBaseUrl() {\r\n return _baseUrl;\r\n}\r\n\r\nfunction getSizes() {\r\n return sizes.length ? sizes : [320, 640, 1024, 1600];\r\n}\r\n\r\nexport default {\r\n getSizes,\r\n getBaseUrl\r\n};\r\n","import GTMBasics, { DataLayerEntry } from './GTM.basics';\r\nimport {\r\n FacetValueViewObject,\r\n FacetViewObject,\r\n LineItemViewObject,\r\n MoneyViewObject,\r\n ReceiptViewModel,\r\n StockInformationViewObject,\r\n StockLocationTypeViewObject\r\n} from '@/types/apiServerContract';\r\nimport { Route } from 'vue-router';\r\nimport { RouterMetaData } from '@/core/app/clientPageHandler';\r\nimport { router } from 'spaRouter';\r\nimport Vue from 'vue';\r\nimport {\r\n generateProductGuideTrackingData,\r\n ProductGuideTrackingInformation\r\n} from '@/project/app/blocks/productguide/ProductGuide.service';\r\nimport {\r\n CableGuideTrackingInformation,\r\n generateCableGuideTrackingData\r\n} from '@/project/app/blocks/cableguide/CableGuide.service';\r\n\r\nexport enum ProductTrackingState {\r\n Complete,\r\n NotLoggedIn,\r\n ErpNotAvailable,\r\n NoErpResponseYet\r\n}\r\n\r\nexport interface TrackingLineItem extends LineItemViewObject {\r\n stockInfo: readonly StockInformationViewObject[] | null;\r\n trackingState: ProductTrackingState;\r\n}\r\n\r\nexport interface TrackingProduct {\r\n wid: string,\r\n itemId: string,\r\n displayName?: string,\r\n brand?: string,\r\n categoryId?: string,\r\n price: MoneyViewObject | undefined,\r\n stockInfo: readonly StockInformationViewObject[] | null,\r\n listName?: string\r\n position?: number,\r\n trackingState: ProductTrackingState\r\n}\r\n\r\ninterface InternalTrackingProduct {\r\n id: string,\r\n name: string,\r\n brand: string,\r\n category: string,\r\n price?: string,\r\n metric1?: string,\r\n dimension16?: boolean,\r\n dimension20?: boolean,\r\n dimension19?: string,\r\n quantity?: number\r\n list?: string,\r\n position?: number\r\n}\r\n\r\nclass GTMService {\r\n currentPagePath: string = '';\r\n\r\n constructor() {\r\n this.setupPageViewTracking();\r\n }\r\n\r\n public trackBasketPage(lineItems: TrackingLineItem[] | null, initial = true) {\r\n if (!lineItems || lineItems.length === 0) return;\r\n\r\n const trackingObject: DataLayerEntry = initial ? {\r\n event: 'pageview',\r\n pageType: 'checkout',\r\n pageUrl: this.pageViewUrl\r\n } : {\r\n event: 'ecom.checkout'\r\n };\r\n\r\n const currencyCode = this.currencyCodeFromLineItems(lineItems);\r\n trackingObject.ecommerce = {\r\n currencyCode: currencyCode,\r\n checkout: {\r\n actionField: {\r\n step: 1\r\n },\r\n products: lineItems.map(this.trackingLineItemToInternal, this)\r\n }\r\n };\r\n\r\n GTMBasics.pushToDataLayer(trackingObject);\r\n }\r\n\r\n public trackCheckoutPage(rawLineItems: LineItemViewObject[]) {\r\n const lineItems = rawLineItems.map(rli => ({\r\n ...rli,\r\n stockInfo: null,\r\n trackingState: ProductTrackingState.Complete\r\n } as TrackingLineItem));\r\n\r\n const trackingObject: DataLayerEntry = {\r\n event: 'pageview',\r\n pageType: 'checkout',\r\n pageUrl: this.pageViewUrl,\r\n ecommerce: {\r\n currencyCode: this.currencyCodeFromLineItems(lineItems),\r\n checkout: {\r\n actionField: {\r\n step: 2\r\n },\r\n products: lineItems.map(this.trackingLineItemToInternal, this)\r\n }\r\n }\r\n };\r\n\r\n GTMBasics.pushToDataLayer(trackingObject);\r\n }\r\n\r\n public trackConfirmationPage(orderId: string, receiptViewModel: ReceiptViewModel) {\r\n const lineItems = receiptViewModel.lineItems.map(rli => ({\r\n ...rli,\r\n stockInfo: null,\r\n trackingState: ProductTrackingState.Complete\r\n } as TrackingLineItem));\r\n\r\n const trackingObject: DataLayerEntry = {\r\n event: 'pageview',\r\n pageType: 'confirmation',\r\n pageUrl: this.pageViewUrl,\r\n ecommerce: {\r\n currencyCode: this.currencyCodeFromLineItems(lineItems),\r\n purchase: {\r\n actionField: {\r\n id: orderId,\r\n revenue: receiptViewModel.subTotal.invariantCultureFormatted,\r\n tax: receiptViewModel.totalVat.invariantCultureFormatted,\r\n shipping: receiptViewModel.deliveryPrice.price.invariantCultureFormatted\r\n },\r\n products: lineItems.map(this.trackingLineItemToInternal, this)\r\n }\r\n }\r\n };\r\n\r\n GTMBasics.pushToDataLayer(trackingObject);\r\n }\r\n\r\n public trackProductDetailsPage(product: TrackingProduct) {\r\n const trackingObject: DataLayerEntry = {\r\n event: 'pageview',\r\n pageType: 'productdetails',\r\n pageUrl: this.pageViewUrl,\r\n ecommerce: {\r\n currencyCode: this.currencyCodeFromProducts([product]),\r\n detail: {\r\n products: [this.toInternal(product)]\r\n }\r\n }\r\n };\r\n\r\n GTMBasics.pushToDataLayer(trackingObject);\r\n }\r\n\r\n public trackProductDetailsTabChange(tabTarget: string): void {\r\n GTMBasics.pushToDataLayer({\r\n event: 'tabClick.pdp',\r\n tabTarget\r\n });\r\n }\r\n\r\n public trackCheckoutOptions(...options: any[]) {\r\n const trackingObject: DataLayerEntry = {\r\n event: 'ecom.checkoutOption',\r\n ecommerce: {\r\n checkout_option: {\r\n actionField: {\r\n step: 2,\r\n option: options.join('|')\r\n }\r\n }\r\n }\r\n };\r\n\r\n GTMBasics.pushToDataLayer(trackingObject);\r\n }\r\n\r\n public trackLineItemQuantityChange(lineItem: TrackingLineItem, deltaQuantity: number) {\r\n this.trackProductTile(this.trackingLineItemToInternal(lineItem), deltaQuantity, this.currencyCodeFromLineItems([lineItem]));\r\n }\r\n\r\n public trackProductQuantityChange(product: TrackingProduct, deltaQuantity: number, listName?: string) {\r\n this.trackProductTile(this.toInternal(product, deltaQuantity), deltaQuantity, this.currencyCodeFromProducts([product]), listName);\r\n }\r\n\r\n public trackLineItemsDeleted(lineItems: TrackingLineItem[]) {\r\n const trackingObject: DataLayerEntry = {\r\n event: 'ecom.remove',\r\n ecommerce: {\r\n currencyCode: this.currencyCodeFromLineItems(lineItems),\r\n remove: {\r\n products: lineItems.map(this.trackingLineItemToInternal, this)\r\n }\r\n }\r\n };\r\n\r\n GTMBasics.pushToDataLayer(trackingObject);\r\n }\r\n\r\n public trackImpressions(products: TrackingProduct[]) {\r\n const trackingObject: DataLayerEntry = {\r\n event: 'ecom.impressions',\r\n ecommerce: {\r\n currencyCode: this.currencyCodeFromProducts(products),\r\n impressions: products\r\n .map(p => this.toInternal(p), this)\r\n }\r\n };\r\n\r\n GTMBasics.pushToDataLayer(trackingObject);\r\n }\r\n\r\n public lineItemClick(lineItem: TrackingLineItem, listName: string) {\r\n this.doProductClick(this.trackingLineItemToInternal(lineItem), listName, this.currencyCodeFromLineItems([lineItem]));\r\n }\r\n\r\n public productClick(product: TrackingProduct, listName: string) {\r\n this.doProductClick(this.toInternal(product), listName, this.currencyCodeFromProducts([product]));\r\n }\r\n\r\n public trackSearch(searchQuery: string, searchResults: number) {\r\n const trackingObject: DataLayerEntry = {\r\n event: 'pageview',\r\n pageType: this.currentPagePath,\r\n pageUrl: this.pageViewUrl,\r\n searchQuery,\r\n searchResults: searchResults + ''\r\n };\r\n\r\n GTMBasics.pushToDataLayer(trackingObject);\r\n }\r\n\r\n public trackFacet(facet: FacetViewObject, value: FacetValueViewObject) {\r\n const trackingObject: DataLayerEntry = {\r\n event: 'facets.search',\r\n facetName: facet.facetId + '|' + facet.facetDisplayName,\r\n facetValue: value.displayName\r\n };\r\n\r\n GTMBasics.pushToDataLayer(trackingObject);\r\n }\r\n\r\n public trackCreativeView(promos: {name: string, id: string, creative?: string}[]) {\r\n const trackingObject: DataLayerEntry = {\r\n event: 'ecom.promoView',\r\n ecommerce: {\r\n promoView: {\r\n promotions: promos\r\n }\r\n }\r\n };\r\n\r\n GTMBasics.pushToDataLayer(trackingObject);\r\n }\r\n\r\n public trackCreativeClick(name: string, id: string, creative?: string) {\r\n const trackingObject: DataLayerEntry = {\r\n event: 'ecom.promoClick',\r\n ecommerce: {\r\n promoClick: {\r\n promotions: [{\r\n name,\r\n id,\r\n creative\r\n }]\r\n }\r\n }\r\n };\r\n\r\n GTMBasics.pushToDataLayer(trackingObject);\r\n }\r\n\r\n public trackLinkClick(url: string) {\r\n const trackingObject: DataLayerEntry = {\r\n event: 'click.link',\r\n url: url\r\n };\r\n\r\n GTMBasics.pushToDataLayer(trackingObject);\r\n }\r\n\r\n public trackLogInToViewPricesClick(): void {\r\n GTMBasics.pushToDataLayer({\r\n event: 'button.click',\r\n buttonTarget: 'logInToViewPrices'\r\n });\r\n }\r\n\r\n public trackCreateUserClick(): void {\r\n GTMBasics.pushToDataLayer({\r\n event: 'account.addUser'\r\n });\r\n }\r\n\r\n public trackCreateUserSuccess(): void {\r\n GTMBasics.pushToDataLayer({\r\n event: 'account.userAdded'\r\n });\r\n }\r\n\r\n public trackPageRendered({ pageId, pageType }: { pageId?: number | string, pageType?: string | null}): void {\r\n if (!pageId && !pageType) return;\r\n if (pageType === 'content' && !pageId) return;\r\n\r\n GTMBasics.pushToDataLayer({\r\n event: 'optimize.activate',\r\n pageId,\r\n pageType\r\n });\r\n }\r\n\r\n public trackPageDestroyed({ pageId, pageType }: { pageId?: number | string, pageType?: string | null}): void {\r\n if (!pageId && !pageType) return;\r\n if (pageType === 'content' && !pageId) return;\r\n\r\n GTMBasics.pushToDataLayer({\r\n event: 'optimize.deactivate',\r\n pageId,\r\n pageType\r\n });\r\n }\r\n\r\n public trackGenericPageView(pageType: string, pageId?: string | number) {\r\n if (pageType === 'content' && !pageId) return;\r\n\r\n const trackingObject: DataLayerEntry = {\r\n event: 'pageview',\r\n pageUrl: this.pageViewUrl,\r\n pageType: pageType.toLowerCase(),\r\n pageId: pageId\r\n };\r\n\r\n GTMBasics.pushToDataLayer(trackingObject);\r\n }\r\n\r\n private setupPageViewTracking() {\r\n const runOptimizeEvents = (to: Route, from: Route) => {\r\n this.trackPageDestroyed({ pageType: from.name });\r\n Vue.nextTick().then(() => {\r\n this.trackPageRendered({ pageType: to.name });\r\n });\r\n };\r\n\r\n router.afterEach((to: Route, from: Route) => {\r\n const newPagePath = to.path.toLowerCase();\r\n if (newPagePath === this.currentPagePath) return;\r\n\r\n runOptimizeEvents(to, from);\r\n\r\n this.currentPagePath = newPagePath;\r\n\r\n if (!(to.meta as RouterMetaData).skipAutoPageTracking) {\r\n // Delay a bit so window.location is up-to-date\r\n setTimeout(() => this.trackGenericPageView(to.name!));\r\n }\r\n });\r\n }\r\n\r\n private doProductClick(product: InternalTrackingProduct, listName: string, currencyCode: string) {\r\n const trackingObject: DataLayerEntry = {\r\n event: 'ecom.productClick',\r\n ecommerce: {\r\n currencyCode,\r\n click: {\r\n actionField: {\r\n list: listName.replaceAll(' ', '_')\r\n },\r\n products: [product]\r\n }\r\n }\r\n };\r\n\r\n GTMBasics.pushToDataLayer(trackingObject);\r\n }\r\n\r\n private trackProductTile(trackingProduct: InternalTrackingProduct, deltaQuantity: number, currencyCode: string, listName?: string) {\r\n const trackingObject: DataLayerEntry = {\r\n event: deltaQuantity > 0 ? 'ecom.add' : 'ecom.remove',\r\n ecommerce: {\r\n currencyCode: currencyCode,\r\n [deltaQuantity > 0 ? 'add' : 'remove']: {\r\n products: [{ ...trackingProduct, quantity: Math.abs(deltaQuantity) }]\r\n }\r\n }\r\n };\r\n if (listName) {\r\n trackingObject.ecommerce[deltaQuantity > 0 ? 'add' : 'remove'].actionField = { list: listName.replaceAll(' ', '_') };\r\n }\r\n\r\n GTMBasics.pushToDataLayer(trackingObject);\r\n }\r\n\r\n private trackingLineItemToInternal(lineItem: TrackingLineItem): InternalTrackingProduct {\r\n return this.toInternal({\r\n ...lineItem,\r\n price: lineItem.unitPrice\r\n }, lineItem.quantity);\r\n }\r\n\r\n private toInternal(product: TrackingProduct, quantity: number | undefined = undefined): InternalTrackingProduct {\r\n const stockLocationType = getStockLocationType(product.stockInfo);\r\n const result = {\r\n id: product.itemId,\r\n name: product.displayName,\r\n brand: product.brand,\r\n category: product.categoryId\r\n } as InternalTrackingProduct;\r\n if (quantity) {\r\n result.quantity = quantity;\r\n }\r\n if (product.listName) {\r\n result.list = product.listName.replaceAll(' ', '_');\r\n }\r\n if (product.position) {\r\n result.position = product.position;\r\n }\r\n switch (product.trackingState) {\r\n case ProductTrackingState.Complete:\r\n result.price = product.price?.invariantCultureFormatted ?? '';\r\n result.metric1 = result.price;\r\n if (stockLocationType != null) {\r\n result.dimension16 = (stockLocationType === StockLocationTypeViewObject.Local);\r\n result.dimension20 = (stockLocationType === StockLocationTypeViewObject.Remote || stockLocationType === StockLocationTypeViewObject.InComing);\r\n }\r\n break;\r\n\r\n case ProductTrackingState.ErpNotAvailable:\r\n result.dimension19 = 'erpResponseMissing';\r\n break;\r\n\r\n case ProductTrackingState.NotLoggedIn:\r\n result.dimension19 = 'noLoginNoPrice';\r\n break;\r\n\r\n case ProductTrackingState.NoErpResponseYet:\r\n result.dimension19 = 'erpResponseNotYetReceived';\r\n break;\r\n }\r\n return result;\r\n\r\n function getStockLocationType(stockInfo: readonly StockInformationViewObject[] | null): StockLocationTypeViewObject | null {\r\n if (!stockInfo) return null;\r\n if (stockInfo.length === 0) return null;\r\n // Has been sorted BE wise so always take the first\r\n return stockInfo[0].locationType;\r\n }\r\n }\r\n\r\n private currencyCodeFromLineItems(lineItems: TrackingLineItem[]): string {\r\n return lineItems[0].unitPrice.currency;\r\n }\r\n\r\n private currencyCodeFromProducts(products: TrackingProduct[]): string {\r\n return products[0]?.price?.currency ?? '';\r\n }\r\n\r\n private get pageViewUrl(): string {\r\n return location.origin + location.pathname + location.search;\r\n }\r\n\r\n public trackProductGuide(model: ProductGuideTrackingInformation): void {\r\n const trackingData = generateProductGuideTrackingData(model);\r\n\r\n if (!trackingData) return;\r\n GTMBasics.pushToDataLayer(trackingData);\r\n }\r\n\r\n public trackCableGuide(model: CableGuideTrackingInformation): void {\r\n const trackingData = generateCableGuideTrackingData(model);\r\n\r\n if (!trackingData) return;\r\n GTMBasics.pushToDataLayer(trackingData);\r\n }\r\n\r\n public trackNotifyOnStockReplenish(): void {\r\n GTMBasics.pushToDataLayer({\r\n event: 'button.click',\r\n buttonTarget: 'notify me'\r\n });\r\n }\r\n}\r\n\r\nexport default new GTMService();\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'requirement-ok': {\r\n width: 26,\r\n height: 26,\r\n viewBox: '0 0 26 26',\r\n data: ''\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputNumber.vue?vue&type=style&index=0&id=2aafb380&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputNumber.vue?vue&type=style&index=0&id=2aafb380&lang=less&scoped=true&\"","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'impersonate-off': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 32 22',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'styling': {\r\n width: 32,\r\n height: 32,\r\n viewBox: '0 0 32 32',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'basket': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 32 31',\r\n data: ''\r\n }\r\n})\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"mode\":\"out-in\",\"enter-active-class\":\"animated fadeIn u-anim-dur-200\",\"leave-active-class\":\"animated fadeOut u-anim-dur-400\"}},[_c('span',{key:_vm.value},[_vm._v(\" \"+_vm._s(_vm.value)+\" \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class AnimateValue extends Vue {\r\n @Prop()\r\n value!: any\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AnimateValue.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AnimateValue.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AnimateValue.vue?vue&type=template&id=6adf84b2&\"\nimport script from \"./AnimateValue.vue?vue&type=script&lang=ts&\"\nexport * from \"./AnimateValue.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 { PageData } from '@/types/contentServerContract';\r\nimport httpService from '@/core/http/http.service';\r\nimport serverContext from '@/core/serverContext.service';\r\n\r\nclass ContentApiService {\r\n // Can throw a HttpCancelError Error if a new call is initiated while not done\r\n async getPage(relativeUrl: string): Promise {\r\n return httpService.getPage(this.ensureCulture(relativeUrl));\r\n }\r\n\r\n // Can NOT throw a HttpCancelError Error if a new call is initiated while not done\r\n async getPageParallel(relativeUrl: string): Promise {\r\n return httpService.getPageParallel(this.ensureCulture(relativeUrl));\r\n }\r\n\r\n // Can NOT throw a HttpCancelError Error if a new call is initiated while not done\r\n async getContent(relativeUrl: string): Promise {\r\n const result = await httpService.getPageParallel(this.ensureCulture(relativeUrl));\r\n return result.jsonContent.content as T;\r\n }\r\n\r\n ensureCulture(relativeUrl: string): string {\r\n if (serverContext.isPreview) {\r\n return `${serverContext.contentHost}${relativeUrl}&getcontent=true`;\r\n } else if (relativeUrl.includes(serverContext.siteInfo.url!)) {\r\n return `${serverContext.contentHost}${relativeUrl}`;\r\n } else {\r\n return `${serverContext.contentHost}${serverContext.siteInfo.url}${relativeUrl}`;\r\n }\r\n }\r\n}\r\n\r\nexport default new ContentApiService();\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MinusCancel.vue?vue&type=style&index=0&lang=less&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MinusCancel.vue?vue&type=style&index=0&lang=less&\"","import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';\r\nimport authService from './auth.service';\r\nimport HttpStatus from 'http-status-codes';\r\n\r\nenum CustomResponseHeaders {\r\n Token = 'x-eet-token',\r\n TokenInvalid = 'x-eet-token-invalid'\r\n}\r\n\r\nconst responseHandler = async(response: AxiosResponse) => {\r\n const isTokenInvalid = response?.headers[CustomResponseHeaders.TokenInvalid] as unknown;\r\n if (isTokenInvalid) {\r\n authService.logOff();\r\n return response;\r\n }\r\n\r\n const token = response?.headers[CustomResponseHeaders.Token] as string;\r\n if (token) {\r\n authService.setToken(token);\r\n }\r\n\r\n if (response.status === HttpStatus.UNAUTHORIZED && token) {\r\n // We got a 401 but a new token has been provided, retry the rejected request\r\n const retryResponse = await axios.request(response.config);\r\n return retryResponse;\r\n }\r\n\r\n return response;\r\n};\r\n\r\nconst requestHandler = (config: AxiosRequestConfig): AxiosRequestConfig => {\r\n if (authService.getToken()) {\r\n config.headers = config.headers || {};\r\n config.headers.authorization = 'Bearer ' + authService.getToken();\r\n }\r\n return config;\r\n};\r\n\r\nexport {\r\n requestHandler,\r\n responseHandler\r\n};\r\n","import { hardRedirect, hardReload, softRedirect } from '@/core/redirect.service';\r\nimport { RedirectError } from '@/core/http/RedirectError';\r\n\r\nexport default response => {\r\n const shouldRedirect = (response.data && response.headers.clientredirect === 'True') || response.headers.authredirect;\r\n if (shouldRedirect) {\r\n const redirectUrl = response.data.clientRedirectUrl || response.headers.authredirect;\r\n if (response.headers.authredirect) {\r\n // TODO: set cookie / localstorage with login attempt. Then when app reloads, log if user is logged in or not (login success or login failed)\r\n }\r\n if (redirectUrl) {\r\n response.headers.authredirect || response.data.reloadFromServer ? hardRedirect(redirectUrl) : softRedirect(redirectUrl);\r\n } else if (response.data.reloadCurrentPage) {\r\n hardReload();\r\n }\r\n // Payload should not be used. This will be treated special\r\n throw new RedirectError();\r\n }\r\n return response;\r\n};\r\n","import { AxiosResponse } from 'axios';\r\nimport bus from '@/core/bus';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\nimport HttpStatus from 'http-status-codes';\r\nimport {\r\n ClientMessage,\r\n ClientMessageType,\r\n ClientMessageWithError,\r\n GeneralErrorEventKey,\r\n ValidationErrorEvent,\r\n ValidationErrorEventKey\r\n} from '@/core/messages/types';\r\n\r\nexport default (response: AxiosResponse) => {\r\n const errorId = response.data?.correlationId as string;\r\n const messages = response.data?.validationMessages as ClientMessage[];\r\n if (messages) {\r\n // Validation-messages received. If a messagesId is included (from a post) forward messages to local handler\r\n // If no messagesId or no one wanted to handle, show globally.\r\n const messagesId: string | undefined = response.config?.messagesId;\r\n let isHandled = false;\r\n if (messagesId) {\r\n bus.emit(ValidationErrorEventKey, {\r\n errorId: errorId,\r\n messages: messages,\r\n messagesId: messagesId,\r\n handled: () => (isHandled = true)\r\n } as ValidationErrorEvent);\r\n }\r\n\r\n if (!isHandled) {\r\n bus.emit(GeneralErrorEventKey, { messages, errorId } as ClientMessageWithError);\r\n }\r\n } else if (isErrorStatusCode(response.status)) {\r\n // Got raw error without messages in the \"normal\" validationMessages prop - handle that as well. Translate if label.\r\n const rawTxt = response.data;\r\n const message = dictionaryService.exists(rawTxt) ? dictionaryService.get(rawTxt) : rawTxt;\r\n bus.emit(GeneralErrorEventKey, {\r\n errorId: errorId,\r\n messages: [{\r\n message: message,\r\n messageType: ClientMessageType.Error\r\n }]\r\n } as ClientMessageWithError);\r\n }\r\n return response;\r\n\r\n function isErrorStatusCode(statusCode: number): boolean {\r\n return [HttpStatus.BAD_REQUEST, HttpStatus.INTERNAL_SERVER_ERROR, HttpStatus.BAD_GATEWAY].includes(statusCode);\r\n }\r\n};\r\n","import { sessionStorageService, localStorageService, IStorage } from '@/core/storage.service';\r\nimport UUID from '@/core/uuid.service';\r\n\r\nconst SESSION_STORAGE_KEY = 'eet-sessionkey';\r\nconst LOCAL_STORAGE_KEY = 'eet-localkey';\r\nconst _sessionKey = initSessionKey(sessionStorageService, SESSION_STORAGE_KEY);\r\nconst _localStorageKey = initSessionKey(localStorageService, LOCAL_STORAGE_KEY);\r\n\r\nfunction initSessionKey(storage: IStorage, keyName: string) {\r\n let key = storage.getItem(keyName);\r\n if (key) {\r\n return key;\r\n }\r\n\r\n key = UUID();\r\n storage.setItem(keyName, key);\r\n return key;\r\n}\r\n\r\nfunction getSessionKey(): string {\r\n return _sessionKey;\r\n}\r\n\r\nfunction getLocalStorageKey(): string {\r\n return _localStorageKey;\r\n}\r\n\r\nexport default {\r\n getSessionKey, getLocalStorageKey\r\n};\r\n","import { AxiosRequestConfig } from 'axios';\r\nimport sessionService from '@/project/session/session.service';\r\nimport siteService from './site.service';\r\n\r\nexport default (config: AxiosRequestConfig): AxiosRequestConfig => {\r\n config.headers = config.headers || {};\r\n if (siteService.getErpBusinessEntityId() != null) {\r\n // @ts-ignore\r\n config.headers['x-eet-businessentityid'] = siteService.getErpBusinessEntityId();\r\n // @ts-ignore\r\n config.headers['x-eet-marketid'] = siteService.getMarketId();\r\n }\r\n config.headers['x-eet-sessionkey'] = sessionService.getSessionKey();\r\n config.headers['x-eet-localkey'] = sessionService.getLocalStorageKey();\r\n\r\n // @ts-ignore\r\n config.headers['x-eet-siteid'] = siteService.getSiteId();\r\n\r\n return config;\r\n};\r\n","import axios, { AxiosRequestConfig, AxiosResponse, CancelTokenSource } from 'axios';\r\nimport redirectInterceptor from './redirect.interceptor';\r\nimport { RedirectError } from './RedirectError';\r\nimport validationErrorsInterceptor from './error.interceptor';\r\nimport {\r\n requestHandler as oAuthRequestInterceptor,\r\n responseHandler as oAuthResponseInterceptor\r\n} from '@/core/auth/OAuth.interceptor';\r\nimport siteInterceptor from '@/project/site/site.interceptor';\r\nimport * as querystring from 'querystring';\r\nimport { forEach, isArray } from 'lodash';\r\nimport HttpStatus from 'http-status-codes';\r\nimport { PageData } from '@/types/contentServerContract';\r\nimport siteService from '@/project/site/site.service';\r\nimport { HttpCancelError } from '@/core/http/HttpCancelError';\r\nimport bus from '@/core/bus';\r\nimport errorCodeService from '@/core/errorCode.service';\r\nimport {\r\n HasOutstandingXhrCallsEventKey,\r\n potentialMaintenanceMaxFailedRequestLimit,\r\n potentialMaintenanceMaxFailedRequestLimitReachedKey\r\n} from '@/core/http/constants';\r\nimport { PageRenderedEventKey } from '@/router';\r\n\r\n// Those status'es that should cause \"then\" to be executed (so we can have interceptors)\r\nconst handledErrorStatusCodes = [\r\n HttpStatus.BAD_REQUEST,\r\n HttpStatus.NOT_FOUND,\r\n HttpStatus.INTERNAL_SERVER_ERROR,\r\n HttpStatus.BAD_GATEWAY,\r\n HttpStatus.UNAUTHORIZED\r\n];\r\n\r\n// theFileYouDeclaredTheCustomConfigIn.ts\r\ndeclare module 'axios' {\r\n export interface AxiosRequestConfig {\r\n messagesId?: string;\r\n }\r\n }\r\n\r\nexport class HttpService {\r\n private outstandingRequests = 0;\r\n private failedRequestCount = 0;\r\n\r\n private responseInterceptors: Array<\r\n (value: AxiosResponse) => AxiosResponse | Promise>\r\n > = [redirectInterceptor, validationErrorsInterceptor, oAuthResponseInterceptor];\r\n\r\n private requestInterceptors: Array<\r\n (value: AxiosRequestConfig) => AxiosRequestConfig | Promise\r\n > = [oAuthRequestInterceptor, siteInterceptor];\r\n\r\n private pageCancelTokenSrc: CancelTokenSource | null = null;\r\n\r\n private get defaultGetHeaders() : any {\r\n return ({\r\n 'Content-Type': 'application/json', // must use this casing for the authentication service to work\r\n 'x-eet-culture': siteService.getCulture()\r\n });\r\n }\r\n\r\n constructor() {\r\n this.registerInterceptors();\r\n\r\n axios.defaults.validateStatus = status => (status >= 200 && status < 300) || handledErrorStatusCodes.includes(status);\r\n axios.defaults.paramsSerializer = params => {\r\n const sortedParams = this.getParams(params);\r\n return querystring.stringify(sortedParams);\r\n };\r\n bus.on(PageRenderedEventKey, () => this.resetFailedRequestCount());\r\n }\r\n\r\n private cancellableRequestDictionary: { [key: string]: CancelTokenSource | null } = {};\r\n\r\n private requestSucceded(res: AxiosResponse, contextKey?: string) {\r\n if (contextKey) {\r\n const cancellableContextKey = `${res.config.url}-${contextKey}`;\r\n this.cancellableRequestDictionary[cancellableContextKey] = null;\r\n delete this.cancellableRequestDictionary[cancellableContextKey];\r\n }\r\n return res;\r\n }\r\n\r\n private ensureCancellationToken(url: string, contextKey: string) {\r\n const cancellableContextKey = `${url}-${contextKey}`;\r\n let cancelTokenSrc = this.cancellableRequestDictionary[cancellableContextKey];\r\n if (cancelTokenSrc) {\r\n cancelTokenSrc.cancel();\r\n }\r\n\r\n cancelTokenSrc = axios.CancelToken.source();\r\n this.cancellableRequestDictionary[cancellableContextKey] = cancelTokenSrc;\r\n\r\n return cancelTokenSrc;\r\n }\r\n\r\n /** Returns true if cancelled, false if no oustanding request found. */\r\n public cancelRequest(cancelKey: string): boolean {\r\n for (const key in this.cancellableRequestDictionary) {\r\n if (key.endsWith(cancelKey)) {\r\n const cancelTokenSrc = this.cancellableRequestDictionary[key];\r\n if (cancelTokenSrc) {\r\n cancelTokenSrc.cancel();\r\n this.cancellableRequestDictionary[key] = null;\r\n delete this.cancellableRequestDictionary[key];\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private handlePotentialErrorResponse(res: AxiosResponse): T {\r\n if (handledErrorStatusCodes.includes(res.status)) {\r\n // Validatestatus above is set to include these ones so it will trigger 'then'.\r\n // Reason is that interceptors will then be run automatically on this as well.\r\n if ([HttpStatus.BAD_GATEWAY, HttpStatus.INTERNAL_SERVER_ERROR].includes(res.status)) {\r\n errorCodeService.handleErrorCodes(res.status, res.config.url);\r\n }\r\n throw res;\r\n }\r\n\r\n return res.data;\r\n }\r\n\r\n private unwrapResponse(data: any) {\r\n return data.model;\r\n }\r\n\r\n private handleErrorResponse(error: any): void {\r\n if (error) {\r\n if (axios.isCancel(error)) {\r\n throw new HttpCancelError();\r\n }\r\n if (error instanceof RedirectError) {\r\n return;\r\n }\r\n this.incrementFailedRequestCount();\r\n }\r\n\r\n throw error;\r\n }\r\n\r\n private registerInterceptors() {\r\n this.responseInterceptors.forEach(i => axios.interceptors.response.use(i));\r\n this.requestInterceptors.forEach(i => axios.interceptors.request.use(i));\r\n }\r\n\r\n private getParams(params: any): any {\r\n const keys: string[] = [];\r\n\r\n forEach(params, (value, key: string) => {\r\n keys.push(key);\r\n });\r\n\r\n const sortedParams = {};\r\n\r\n keys.forEach(value => {\r\n const searchValue = params[value];\r\n const sortedValues = isArray(searchValue) ? searchValue.sort() : searchValue;\r\n sortedParams[value] = sortedValues;\r\n });\r\n\r\n return sortedParams;\r\n }\r\n\r\n private resetFailedRequestCount() {\r\n this.failedRequestCount = 0;\r\n }\r\n\r\n private incrementFailedRequestCount() {\r\n this.failedRequestCount++;\r\n // Only emit once, therefore ===\r\n if (this.failedRequestCount % potentialMaintenanceMaxFailedRequestLimit === 0) {\r\n bus.emit(potentialMaintenanceMaxFailedRequestLimitReachedKey);\r\n }\r\n }\r\n\r\n private decrementOutstandingRequests(url: string) {\r\n this.changeOutstandingRequests(url, this.outstandingRequests - 1);\r\n }\r\n\r\n private incrementOutstandingRequests(url: string) {\r\n this.changeOutstandingRequests(url, this.outstandingRequests + 1);\r\n }\r\n\r\n private nonCountedOutstandingRequestPatterns: RegExp[] = [\r\n /forwardAdnuntiusPixelRequest/i,\r\n /\\/price\\//i,\r\n /\\/stock\\//i\r\n ];\r\n\r\n private changeOutstandingRequests(url: string, count: number) {\r\n if (this.nonCountedOutstandingRequestPatterns.some(p => p.test(url))) {\r\n return;\r\n }\r\n if (this.outstandingRequests === 0 || count === 0) {\r\n bus.emit(HasOutstandingXhrCallsEventKey, count > 0);\r\n }\r\n this.outstandingRequests = count;\r\n }\r\n\r\n public getContentDispositionFilename(response: AxiosResponse) {\r\n const contentDisposition = response.headers['content-disposition'];\r\n const match = contentDisposition.match(/filename\\*?=((['\"])[\\s\\S]*?\\2|[^;\\n]*)/i);\r\n const fileName = match ? match[1] : '';\r\n return fileName;\r\n }\r\n\r\n public async get(url: string, params?: any, cancellationContextKey?: string, config?: AxiosRequestConfig, messagesId?: string): Promise {\r\n this.incrementOutstandingRequests(url);\r\n\r\n config = config || {};\r\n config = {\r\n ...config,\r\n ...{\r\n messagesId,\r\n headers: this.defaultGetHeaders,\r\n data: {}, // Axios kills application/json if no data object is provided https://github.com/axios/axios/issues/86#issuecomment-139638284\r\n params\r\n }\r\n };\r\n\r\n const cancelTokenSrc = cancellationContextKey ? this.ensureCancellationToken(url, cancellationContextKey) : undefined;\r\n\r\n return axios\r\n .get(url, { ...config, cancelToken: cancelTokenSrc?.token })\r\n .then(res => this.requestSucceded(res, cancellationContextKey))\r\n .then(res => this.handlePotentialErrorResponse(res))\r\n .then(res => this.unwrapResponse(res))\r\n .catch(err => this.handleErrorResponse(err))\r\n .finally(() => this.decrementOutstandingRequests(url));\r\n }\r\n\r\n public async post(url: string, payload?: any, messagesId?: string, cancellationContextKey?: string, config?: AxiosRequestConfig, rawResult: boolean = false): Promise {\r\n this.incrementOutstandingRequests(url);\r\n\r\n config = {\r\n ...config,\r\n ...{\r\n messagesId,\r\n headers: this.defaultGetHeaders\r\n }\r\n };\r\n\r\n const cancelTokenSrc = cancellationContextKey ? this.ensureCancellationToken(url, cancellationContextKey) : undefined;\r\n\r\n return axios\r\n .post(url, payload, { ...config, cancelToken: cancelTokenSrc?.token })\r\n .then(res => this.requestSucceded(res, cancellationContextKey))\r\n .then(res => rawResult ? res : this.handlePotentialErrorResponse(res))\r\n .then(res => rawResult ? res : this.unwrapResponse(res))\r\n .catch(err => this.handleErrorResponse(err))\r\n .finally(() => this.decrementOutstandingRequests(url));\r\n }\r\n\r\n public async delete(url: string, params?: any, config?: AxiosRequestConfig, messagesId?: string): Promise {\r\n this.incrementOutstandingRequests(url);\r\n\r\n config = config || {};\r\n config = {\r\n ...config,\r\n ...{\r\n headers: this.defaultGetHeaders,\r\n messagesId,\r\n data: {}, // Axios kills application/json if no data object is provided https://github.com/axios/axios/issues/86#issuecomment-139638284\r\n params\r\n }\r\n };\r\n\r\n return axios\r\n .delete(url, config)\r\n .then(res => this.handlePotentialErrorResponse(res))\r\n .then(res => this.unwrapResponse(res))\r\n .catch(err => this.handleErrorResponse(err))\r\n .finally(() => this.decrementOutstandingRequests(url));\r\n }\r\n\r\n public async getPage(url: string): Promise {\r\n this.incrementOutstandingRequests(url);\r\n try {\r\n if (this.pageCancelTokenSrc) {\r\n this.pageCancelTokenSrc.cancel();\r\n }\r\n this.pageCancelTokenSrc = axios.CancelToken.source();\r\n try {\r\n const res = await axios.get(url, {\r\n headers: this.defaultGetHeaders,\r\n data: {}, // Axios kills application/json if no data object is provided https://github.com/axios/axios/issues/86#issuecomment-139638284\r\n cancelToken: this.pageCancelTokenSrc.token\r\n });\r\n const response = this.handlePotentialErrorResponse(res);\r\n this.pageCancelTokenSrc = null;\r\n return response;\r\n } catch (error) {\r\n if (axios.isCancel(error)) {\r\n throw new HttpCancelError();\r\n }\r\n throw error;\r\n }\r\n } finally {\r\n this.decrementOutstandingRequests(url);\r\n }\r\n }\r\n\r\n public async getPageParallel(url: string): Promise {\r\n this.incrementOutstandingRequests(url);\r\n try {\r\n const res = await axios.get(url, {\r\n headers: this.defaultGetHeaders,\r\n data: {} // Axios kills application/json if no data object is provided https://github.com/axios/axios/issues/86#issuecomment-139638284\r\n });\r\n const response = this.handlePotentialErrorResponse(res);\r\n this.pageCancelTokenSrc = null;\r\n return response;\r\n } finally {\r\n this.decrementOutstandingRequests(url);\r\n }\r\n }\r\n\r\n public async getRaw(url: string): Promise {\r\n this.incrementOutstandingRequests(url);\r\n try {\r\n const res = await axios.get(url, {\r\n headers: this.defaultGetHeaders,\r\n data: {} // Axios kills application/json if no data object is provided https://github.com/axios/axios/issues/86#issuecomment-139638284\r\n });\r\n const response = this.handlePotentialErrorResponse(res);\r\n this.pageCancelTokenSrc = null;\r\n return response as T;\r\n } finally {\r\n this.decrementOutstandingRequests(url);\r\n }\r\n }\r\n}\r\n\r\nexport default new HttpService();\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_vm._t(\"default\",null,{\"productImpression\":_vm.productImpression,\"productClick\":_vm.productClick})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport GTMService, { ProductTrackingState, TrackingProduct } from './GTM.service';\r\nimport { Prop, Watch } from 'vue-property-decorator';\r\nimport { TrackingProductAndElement } from '@/project/tracking/gtm/types';\r\nimport bus from '@/core/bus';\r\nimport { RouterBeforeChangeKey } from '@/core/http/constants';\r\ninterface ProductState {\r\n product: TrackingProduct,\r\n el: Element,\r\n visible: boolean\r\n}\r\nexport const ProductTrackerProcessBatchKey = 'ProductTrackerProcessBatchKey';\r\nconst SETTLE_TIME_MS = 2000;\r\nconst IDLE_TIME_MS = 60000;\r\nconst MAX_NO_OF_PRODUCTS_IN_BATCH = 15;\r\n\r\n@Component\r\nexport default class ProductListTracker extends Vue {\r\n private settled = false;\r\n private trackingState: ProductState[] = [];\r\n private idleTimerHandle: number | undefined;\r\n private settleTimerHandle: number | undefined;\r\n private observer = new IntersectionObserver(this.productBecameVisible,\r\n {\r\n threshold: [0.1]\r\n });\r\n\r\n @Prop({ required: true, type: String })\r\n private listName!: string;\r\n\r\n @Prop({ required: true, type: Array })\r\n private products!: TrackingProduct[];\r\n\r\n public productImpression(trackingProductAndElement: TrackingProductAndElement) {\r\n const annotatedProduct = {\r\n ...trackingProductAndElement.product,\r\n position: this.positionOfProduct(trackingProductAndElement.product),\r\n listName: this.listName\r\n };\r\n\r\n const existingIx = this.trackingState.findIndex(ts => ts.product.wid === trackingProductAndElement.product.wid);\r\n if (existingIx === -1) {\r\n this.trackingState.push({\r\n product: annotatedProduct,\r\n visible: false,\r\n el: trackingProductAndElement.el\r\n });\r\n this.observer.observe(trackingProductAndElement.el);\r\n } else {\r\n // Update - probably because stock / price was loaded\r\n this.trackingState[existingIx].product = annotatedProduct;\r\n }\r\n }\r\n\r\n public productClick(product: TrackingProduct) {\r\n this.sendTrackingBatch(true);\r\n GTMService.productClick(product, this.listName);\r\n }\r\n\r\n @Watch('products')\r\n private onProductsChanged(products: TrackingProduct[]) {\r\n if (this.settled) {\r\n // Send pending before starting all over with new products\r\n this.sendTrackingBatch();\r\n }\r\n this.settled = false;\r\n\r\n // Clean out all registered products not in new list\r\n this.trackingState = this.trackingState\r\n .filter(ts => !!products.find(p => p.wid === ts.product.wid));\r\n\r\n // Don't send tracking until 2 secs. after products-change has settled.\r\n clearTimeout(this.idleTimerHandle);\r\n clearTimeout(this.settleTimerHandle);\r\n this.settleTimerHandle = setTimeout(() => {\r\n this.settled = true;\r\n this.maybeSendTracking();\r\n }, SETTLE_TIME_MS);\r\n }\r\n\r\n private productBecameVisible(elements: IntersectionObserverEntry[]): void {\r\n elements.forEach(elem => {\r\n if (elem.isIntersecting) {\r\n this.observer.unobserve(elem.target);\r\n const productState = this.trackingState.find(p => p.el === elem.target);\r\n if (productState) {\r\n productState.visible = true;\r\n }\r\n }\r\n });\r\n this.maybeSendTracking();\r\n }\r\n\r\n private get visibleTrackingProducts(): TrackingProduct[] {\r\n return this.trackingState\r\n .filter(ts => ts.visible)\r\n .map(ts => ts.product);\r\n }\r\n\r\n private maybeSendTracking() {\r\n if (this.visibleTrackingProducts.length === MAX_NO_OF_PRODUCTS_IN_BATCH) {\r\n this.sendTrackingBatch();\r\n } else {\r\n // Have fewer items than batch size - set idle-timer\r\n clearTimeout(this.idleTimerHandle);\r\n this.idleTimerHandle = setTimeout(this.sendTrackingBatch, IDLE_TIME_MS);\r\n }\r\n }\r\n\r\n private sendTrackingBatch(forced = false) {\r\n if (!forced && !this.settled) return;\r\n\r\n // Normally only include products that has received price and stock - but when forced (navigating away) - include the 'premature' ones\r\n const batchToSend = this.visibleTrackingProducts\r\n .filter(vp => forced ? true : vp.trackingState !== ProductTrackingState.NoErpResponseYet)\r\n .splice(0, MAX_NO_OF_PRODUCTS_IN_BATCH);\r\n\r\n if (batchToSend.length) {\r\n GTMService.trackImpressions(batchToSend);\r\n // Clean up the ones sent\r\n this.trackingState = this.trackingState\r\n .filter(ts => !batchToSend.includes(ts.product));\r\n }\r\n }\r\n\r\n private positionOfProduct(product: TrackingProduct): number {\r\n return this.products.findIndex(p => p.wid === product.wid) + 1;\r\n }\r\n\r\n // Use separate function to be able to run bus.off in cleanup\r\n private runTrackingBatchAfterBusUpdate() {\r\n this.sendTrackingBatch(true);\r\n }\r\n\r\n private cleanup() {\r\n this.sendTrackingBatch(true);\r\n this.observer.disconnect();\r\n window.removeEventListener('beforeunload', this.cleanup);\r\n clearTimeout(this.settleTimerHandle);\r\n clearTimeout(this.idleTimerHandle);\r\n bus.off(ProductTrackerProcessBatchKey, this.runTrackingBatchAfterBusUpdate);\r\n bus.off(RouterBeforeChangeKey, this.runTrackingBatchAfterBusUpdate);\r\n }\r\n\r\n created() {\r\n window.addEventListener('beforeunload', this.cleanup);\r\n bus.on(ProductTrackerProcessBatchKey, this.runTrackingBatchAfterBusUpdate);\r\n bus.on(RouterBeforeChangeKey, this.runTrackingBatchAfterBusUpdate);\r\n }\r\n\r\n beforeDestroy() {\r\n this.cleanup();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductListTracker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductListTracker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductListTracker.vue?vue&type=template&id=f44ea524&\"\nimport script from \"./ProductListTracker.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductListTracker.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","export enum PageName {\r\n FRONTPAGE = 'FrontPage',\r\n CONTENTPAGE = 'ContentPage',\r\n CATEGORY = 'Category',\r\n CATEGORY_2 = 'Category 2',\r\n CAMPAIGN = 'Campaigns',\r\n CAMPAIGN_CATEGORY = 'Campaigns & category',\r\n CAMPAIGN_CATEGORY_2 = 'Campaigns & category 2',\r\n SEARCH = 'Search',\r\n PRODUCT_DETAILS = 'Productdetails',\r\n BASKET = 'Basket',\r\n BRAND = 'Brand',\r\n BRAND_SUBCONTENT = 'Brand Content',\r\n BRAND_OVERVIEW = 'Brands',\r\n CHECKOUT = 'Checkout',\r\n CONFIRMATION = 'Confirmation',\r\n KITCHEN_SINK = 'lokaltestside',\r\n MY_ACCOUNT = 'My account',\r\n MY_ACCOUNT_PROFILE = 'Profile',\r\n MY_ACCOUNT_ORDER_HISTORY = 'Order history',\r\n MY_ACCOUNT_ORDER_HISTORY_DETAIL = 'Order detail',\r\n MY_ACCOUNT_PRODUCT_BACKLOG = 'Product backlog',\r\n MY_ACCOUNT_FAVOURITES = 'Favourites',\r\n MY_ACCOUNT_FAVOURITES_DETAIL = 'Favourites detail',\r\n MY_ACCOUNT_QUOTES = 'Quotes',\r\n MY_ACCOUNT_QUOTES_DETAIL = 'Quotes detail',\r\n MY_ACCOUNT_BLANKET_ORDERS = 'Blanket orders',\r\n MY_ACCOUNT_BLANKET_DETAIL = 'Blanket detail',\r\n MY_ACCOUNT_BIDS = 'Bids',\r\n MY_ACCOUNT_RMA_RETURN = 'RMA & returns',\r\n MY_ACCOUNT_RMA_RETURN_HISTORY = 'RMA history',\r\n MY_ACCOUNT_RMA_RETURN_CREATE = 'Create RMA',\r\n MY_ACCOUNT_LEDGER = 'Ledger',\r\n MY_ACCOUNT_ACCOUNT_SETTINGS = 'Account profile',\r\n MY_ACCOUNT_ADDRESS_BOOK = 'Address book',\r\n MY_ACCOUNT_USER_ADMINISTRATION = 'User administration',\r\n MY_ACCOUNT_IMPERSONATION = 'Impersonation',\r\n MY_ACCOUNT_PRODUCT_GUIDE_CONFIGURATION = 'Product Guide Configurations',\r\n MY_ACCOUNT_PRODUCT_GUIDE_CONFIGURATION_NEW = 'Product Guide Configurations New',\r\n MY_ACCOUNT_PRODUCT_GUIDE_CONFIGURATION_EDIT = 'Product Guide Configurations Edit'\r\n};\r\n","import serverContext from '@/core/serverContext.service';\r\nimport { isArray, isEmpty, isNil, isString } from 'lodash';\r\n\r\nexport function createUrlFactory(controller: string): (action: string) => string {\r\n return (action: string) => `${serverContext.apiHost}/api/${controller}/${action}`;\r\n}\r\n\r\nexport function shouldExclude(value: any): boolean {\r\n return (isString(value) && isEmpty(value)) || isNil(value) || (isArray(value) && value.length === 0);\r\n}\r\n","import {\r\n AccountDetailOrderType,\r\n AccountLedgerViewModel, BidRequest,\r\n BidsQuotesRmaViewModel,\r\n BidsViewModel,\r\n LedgerDownloadRequest,\r\n LedgerRequest,\r\n NotificationsViewModel,\r\n OrderHeaderRequest,\r\n OrderHeaderViewModel,\r\n OrderHistoryDetailViewModel,\r\n OrderLinesRequest,\r\n OrderLinesViewModel,\r\n PermissionsViewModel,\r\n SendMailRequest,\r\n SendMailViewModel\r\n} from '@/types/apiServerContract';\r\nimport httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { AxiosResponse } from 'axios';\r\n\r\nexport class AccountController {\r\n private readonly urlFactory = createUrlFactory('Account');\r\n\r\n public async orderHeaders(request: OrderHeaderRequest): Promise {\r\n return httpService.post(this.urlFactory('OrderHeaders'), request);\r\n }\r\n\r\n public async orderDetail(orderId: string): Promise {\r\n return httpService.get(this.urlFactory('OrderDetail'), {\r\n orderId\r\n });\r\n }\r\n\r\n public async quoteDetail(orderId: string): Promise {\r\n return httpService.get(this.urlFactory('QuoteDetail'), {\r\n orderId\r\n });\r\n }\r\n\r\n public async blanketDetail(orderId: string): Promise {\r\n return httpService.get(this.urlFactory('BlanketDetail'), {\r\n orderId\r\n });\r\n }\r\n\r\n public async orderLines(request: OrderLinesRequest): Promise {\r\n return httpService.post(this.urlFactory('OrderLines'), request);\r\n }\r\n\r\n public async ledger(request: LedgerRequest): Promise {\r\n const payload: LedgerRequest = request;\r\n if (payload.showOpenOnly) {\r\n delete payload.startDate;\r\n delete payload.endDate;\r\n }\r\n return httpService.get(this.urlFactory('Ledger'), payload);\r\n }\r\n\r\n public async permissions(): Promise {\r\n return httpService.get(this.urlFactory('permissions'));\r\n }\r\n\r\n public async notifications(): Promise {\r\n return httpService.get(this.urlFactory('notifications'));\r\n }\r\n\r\n public async sendemail(request: SendMailRequest[]): Promise {\r\n return httpService.post(this.urlFactory('SendEmail'), request);\r\n }\r\n\r\n public async bids(request: BidRequest): Promise {\r\n return httpService.get(this.urlFactory('Bids'), request);\r\n }\r\n\r\n public async dashboardStatistics(): Promise {\r\n return httpService.get(this.urlFactory('DashboardBidsQuotesRma'));\r\n }\r\n\r\n public async downloadOrderDetails(orderId: string, orderType: AccountDetailOrderType) {\r\n const result = await httpService.post(this.urlFactory('DownloadOrderDetails'), {\r\n orderId,\r\n orderType\r\n },\r\n undefined,\r\n undefined,\r\n {\r\n responseType: 'blob'\r\n },\r\n true);\r\n\r\n const fileName = httpService.getContentDispositionFilename(result);\r\n const file = result.data as Blob;\r\n\r\n return {\r\n fileName,\r\n file\r\n };\r\n }\r\n\r\n public async downloadLedgers(request: LedgerDownloadRequest) {\r\n const payload: LedgerRequest = request;\r\n if (payload.showOpenOnly) {\r\n delete payload.startDate;\r\n delete payload.endDate;\r\n }\r\n const result = await httpService.post(this.urlFactory('DownloadLedgers'), payload,\r\n undefined,\r\n undefined,\r\n {\r\n responseType: 'blob'\r\n },\r\n true);\r\n\r\n const fileName = httpService.getContentDispositionFilename(result);\r\n const file = result.data as Blob;\r\n\r\n return {\r\n fileName,\r\n file\r\n };\r\n }\r\n\r\n public async downloadBids(request: BidRequest) {\r\n const payload: BidRequest = request;\r\n const result = await httpService.post(this.urlFactory('DownloadBids'), payload,\r\n undefined,\r\n undefined,\r\n {\r\n responseType: 'blob'\r\n },\r\n true);\r\n\r\n const fileName = httpService.getContentDispositionFilename(result);\r\n const file = result.data as Blob;\r\n\r\n return {\r\n fileName,\r\n file\r\n };\r\n }\r\n\r\n public async downloadOrderHistory(request: OrderHeaderRequest) {\r\n const result = await httpService.post(this.urlFactory('DownloadOrderHistory'), request,\r\n undefined,\r\n undefined,\r\n {\r\n responseType: 'blob'\r\n },\r\n true);\r\n\r\n const fileName = httpService.getContentDispositionFilename(result);\r\n const file = result.data as Blob;\r\n\r\n return {\r\n fileName,\r\n file\r\n };\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { RequestAccessRequest } from '@/types/apiServerContract';\r\n\r\nexport class AccessController {\r\n private readonly urlFactory = createUrlFactory('Access');\r\n\r\n public async requestAccess(request: RequestAccessRequest, messageId: string) {\r\n return httpService.post(this.urlFactory('RequestAccess'), request, messageId);\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { LoginRequest, LoginViewModel, RequestResetPasswordRequest, ResetPasswordRequest, ChangePasswordRequest } from '@/types/apiServerContract';\r\n\r\nexport class AuthenticationController {\r\n private readonly urlFactory = createUrlFactory('Authentication');\r\n\r\n public async login(loginData: LoginRequest, messagesId: string): Promise {\r\n return httpService.post(this.urlFactory('Login'), loginData, messagesId);\r\n }\r\n\r\n public async requestPasswordReset(email: string, messagesId: string): Promise {\r\n return httpService.post(this.urlFactory('RequestPasswordReset'), {\r\n email\r\n } as RequestResetPasswordRequest, messagesId);\r\n }\r\n\r\n public async resetPassword(password: string, token: string, messagesId: string): Promise {\r\n return httpService.post(this.urlFactory('ResetPassword'), {\r\n password,\r\n token\r\n } as ResetPasswordRequest, messagesId);\r\n }\r\n\r\n public async changePassword(request: ChangePasswordRequest, messagesId: string) {\r\n return httpService.post(this.urlFactory('ChangePassword'), request, messagesId);\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { CountryOptionsViewModel, SwitchSiteRequest, SwitchSiteResponseViewModel, CountryPickerOptionsViewModel } from '@/types/apiServerContract';\r\n\r\nexport class SitesController {\r\n private readonly urlFactory = createUrlFactory('Sites');\r\n\r\n public async siteOptions(): Promise {\r\n return httpService.get(this.urlFactory('SiteOptions'));\r\n }\r\n\r\n public async switchSite(options: SwitchSiteRequest, messagesId?: string): Promise {\r\n return httpService.post(this.urlFactory('SwitchSite'), options, messagesId);\r\n }\r\n\r\n public async countryOptions(): Promise {\r\n return httpService.get(this.urlFactory('CountryOptions'));\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport {\r\n AllUsersRequest,\r\n CrudUserRequest,\r\n RequestServiceRequest,\r\n SalesRepViewModel,\r\n UsersViewModel,\r\n UserViewModel\r\n} from '@/types/apiServerContract';\r\nimport myAccountStore from '@/project/app/client-pages/my-account/my-account.store';\r\n\r\nexport class UserController {\r\n readonly urlFactory = createUrlFactory('User');\r\n\r\n public async account(): Promise {\r\n return httpService.get(this.urlFactory('Current'));\r\n }\r\n\r\n public async salesRep(): Promise {\r\n return httpService.get(this.urlFactory('SalesRep'));\r\n }\r\n\r\n public async update(request: CrudUserRequest, messagesId: string): Promise {\r\n const req: Promise = httpService.post(this.urlFactory('Update'), request, messagesId);\r\n req.then((data: UserViewModel) => {\r\n if (data?.userViewObject) {\r\n myAccountStore.updateAccount(data.userViewObject);\r\n }\r\n });\r\n return req;\r\n }\r\n\r\n public async create(request: CrudUserRequest, messagesId: string): Promise {\r\n return httpService.post(this.urlFactory('Create'), request, messagesId);\r\n }\r\n\r\n public async allByCustomer(request?: AllUsersRequest): Promise {\r\n if (request && request.sortColumn === undefined) {\r\n delete request.sortColumn;\r\n delete request.sortOrder;\r\n }\r\n return httpService.get(this.urlFactory('AllByCustomer'), request);\r\n }\r\n\r\n public async delete(userId: string, messageId?: string) {\r\n return httpService.delete(this.urlFactory('Delete'), {\r\n userId\r\n }, undefined, messageId);\r\n }\r\n\r\n public async postponeInactive(userId: string): Promise {\r\n return httpService.post(this.urlFactory('PostponeInactive'), userId);\r\n }\r\n\r\n public async requestService(request: RequestServiceRequest, messagesId: string) {\r\n return httpService.post(this.urlFactory('RequestService'), request, messagesId);\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport {\r\n AddressViewObject,\r\n CustomerBrandTilesViewModel,\r\n CustomerViewModel,\r\n ShipToCountriesViewModel\r\n} from '@/types/apiServerContract';\r\n\r\nexport class CustomerController {\r\n readonly urlFactory = createUrlFactory('Customer');\r\n\r\n public async customer(): Promise {\r\n return httpService.get(this.urlFactory('Customer'));\r\n }\r\n\r\n public async shipToCountries(): Promise {\r\n return httpService.get(this.urlFactory('ShipToCountries'));\r\n }\r\n\r\n public async brandTiles(department: string | null): Promise {\r\n return httpService.post(this.urlFactory('BrandTiles'), {\r\n department\r\n });\r\n }\r\n\r\n public async getInvoiceAddressForCustomer(customerNo: string): Promise {\r\n return httpService.get(this.urlFactory('GetInvoiceAddressForCustomer'), {\r\n customerNo\r\n });\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory, shouldExclude } from '@/project/http/ApiHelper.service';\r\nimport {\r\n CategoryTreeViewModel,\r\n FacetsViewModel,\r\n ProductIdsViewModel,\r\n SearchRequest,\r\n SearchViewModel\r\n} from '@/types/apiServerContract';\r\nimport { omitBy } from 'lodash';\r\nimport { UrlFacets } from '@/core/urlHelper.service';\r\n\r\nexport class SearchController {\r\n readonly urlFactory = createUrlFactory('Search');\r\n\r\n public async search(searchRequest: SearchRequest, selectedFacets: UrlFacets, contextKey: string): Promise {\r\n // Remove parameters that are empty, null or undefined\r\n const params = omitBy({ ...searchRequest, ...selectedFacets }, shouldExclude);\r\n return httpService.get(this.urlFactory('Search'), params, contextKey);\r\n }\r\n\r\n public async facets(searchRequest: SearchRequest, selectedFacets: UrlFacets, contextKey: string): Promise {\r\n // Remove parameters that are empty, null or undefined\r\n const params = omitBy({ ...searchRequest, ...selectedFacets }, shouldExclude);\r\n return httpService.get(this.urlFactory('Facets'), params, contextKey);\r\n }\r\n\r\n public async raw(searchRequest: SearchRequest, selectedFacets: UrlFacets): Promise {\r\n // Remove parameters that are empty, null or undefined\r\n const params = omitBy({ ...searchRequest, ...selectedFacets }, shouldExclude);\r\n return httpService.get(this.urlFactory('Raw'), params);\r\n }\r\n\r\n public async clearBoostCache(): Promise {\r\n return httpService.get(this.urlFactory('ClearBoostCache'));\r\n }\r\n\r\n public async productIds(searchRequest: SearchRequest, selectedFacets: UrlFacets): Promise {\r\n // Remove parameters that are empty, null or undefined\r\n const params = omitBy({ ...searchRequest, ...selectedFacets }, shouldExclude);\r\n return httpService.get(this.urlFactory('GetProductIds'), params);\r\n }\r\n\r\n public async categories(searchRequest: SearchRequest, selectedFacets: UrlFacets, contextKey: string): Promise {\r\n // Remove parameters that are empty, null or undefined\r\n const params = omitBy({ ...searchRequest, ...selectedFacets }, shouldExclude);\r\n return httpService.get(this.urlFactory('Categories'), params, contextKey);\r\n }\r\n\r\n public async requestProductExport(searchRequest: SearchRequest, searchUri: string, icecatMode: boolean, selectedFacets: UrlFacets): Promise {\r\n // Remove parameters that are empty, null or undefined\r\n const params = omitBy({ ...searchRequest, ...selectedFacets, searchUri, icecatMode }, shouldExclude);\r\n return httpService.get(this.urlFactory('RequestProductExport'), params);\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { CategoryNamesViewModel, LinkItem, MegaMenuViewModel } from '@/types/apiServerContract';\r\n\r\nexport class NavigationController {\r\n private readonly urlFactory = createUrlFactory('Navigation');\r\n\r\n public async megaMenu(): Promise {\r\n return httpService.get(this.urlFactory('MegaMenu'));\r\n }\r\n\r\n public async category(categoryId: string): Promise {\r\n return httpService.get(this.urlFactory('CategoryName'), { categoryId });\r\n }\r\n\r\n public async categories(categoryIds: string[]): Promise {\r\n return httpService.get(this.urlFactory('CategoryNames'), { categoryIds });\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\n\r\nexport class NewsletterController {\r\n private readonly urlFactory = createUrlFactory('Newsletter');\r\n\r\n public async unsubscribe(email: string, messageId: string): Promise {\r\n return httpService.delete(this.urlFactory('Unsubscribe'), {\r\n email\r\n }, undefined, messageId);\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport {\r\n ProductDetailsViewModel,\r\n ProductBidsViewModel,\r\n ProductTileViewModel,\r\n RelatedModelsViewModel,\r\n CampaignViewObject,\r\n RelationViewObject,\r\n ProductIssueReportRequest,\r\n ProductSeriesViewObject,\r\n ReferencedProductsViewModel\r\n} from '@/types/apiServerContract';\r\n\r\nexport class ProductController {\r\n private readonly urlFactory = createUrlFactory('Product');\r\n\r\n public async details(productWid: string): Promise {\r\n return httpService.get(this.urlFactory('details'), {\r\n productWid\r\n });\r\n }\r\n\r\n public async bids(productWIds: string[], cancelKey?: string): Promise {\r\n return httpService.get(this.urlFactory('bids'), {\r\n productWIds\r\n }, cancelKey);\r\n }\r\n\r\n public async alternatives(productWIds: string[]): Promise {\r\n return httpService.get(this.urlFactory('alternatives'), {\r\n productWIds\r\n });\r\n }\r\n\r\n public async conditions(productWId: string): Promise {\r\n return httpService.get(this.urlFactory('conditions'), {\r\n productWId\r\n });\r\n }\r\n\r\n public async series(productWId: string, productSeries: string): Promise {\r\n return httpService.get(this.urlFactory('series'), {\r\n productWId,\r\n productSeries\r\n });\r\n }\r\n\r\n public async references(productIds: string[]): Promise {\r\n return httpService.get(this.urlFactory('references'), {\r\n productIds\r\n });\r\n }\r\n\r\n public async accessories(productWid: string, categoryIds: string[] = [], from: number = 0, size: number = 5): Promise {\r\n return httpService.get(this.urlFactory('accessories'), {\r\n productWid, categoryIds, from, size\r\n });\r\n }\r\n\r\n public async exactAlternatives(productWid: string, categoryIds: string[] = [], from: number = 0, size: number = 5): Promise {\r\n return httpService.get(this.urlFactory('exactAlternatives'), {\r\n productWid, categoryIds, from, size\r\n });\r\n }\r\n\r\n public async similarAlternatives(productWid: string, categoryIds: string[] = [], from: number = 0, size: number = 5): Promise {\r\n return httpService.get(this.urlFactory('similarAlternatives'), {\r\n productWid, categoryIds, from, size\r\n });\r\n }\r\n\r\n public async relatedModels(itemId: string): Promise {\r\n return httpService.get(this.urlFactory('relatedModels'), {\r\n itemId\r\n });\r\n }\r\n\r\n public async relatedModelsSection(itemId: string, brandName: string, brandSeries: string): Promise {\r\n return httpService.get(this.urlFactory('relatedModelsSection'), {\r\n itemId,\r\n brandName,\r\n brandSeries\r\n });\r\n }\r\n\r\n public async simpleByItemId(itemIds: string[]): Promise {\r\n return httpService.get(this.urlFactory('SimpleByItemId'), {\r\n itemIds\r\n });\r\n }\r\n\r\n public async getCampaignWithIcon(campaignCode: string): Promise {\r\n return httpService.get(this.urlFactory('GetCampaignWithIcon'), {\r\n campaignCode\r\n });\r\n }\r\n\r\n public async reportIssue(payload: ProductIssueReportRequest, messageId: string) {\r\n return httpService.post(this.urlFactory('ReportIssue'), payload, messageId);\r\n }\r\n}\r\n","import axios, { CancelTokenSource } from 'axios';\r\nimport httpService from './http.service';\r\nimport { HttpCancelError } from '@/core/http/HttpCancelError';\r\n\r\nexport function createCancellableGet() : (url: string, params?: any, config?: object) => Promise {\r\n let cancelTokenSrc: CancelTokenSource | null = null;\r\n\r\n return async function get(url: string, params?: any, config?: object): Promise {\r\n if (cancelTokenSrc) {\r\n cancelTokenSrc.cancel();\r\n }\r\n cancelTokenSrc = axios.CancelToken.source();\r\n try {\r\n const theConfig = { ...config, cancelToken: cancelTokenSrc.token };\r\n const response = await httpService.get(url, params, '', theConfig);\r\n cancelTokenSrc = null;\r\n return response;\r\n } catch (error) {\r\n if (axios.isCancel(error)) {\r\n throw new HttpCancelError();\r\n }\r\n throw error;\r\n }\r\n };\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory, shouldExclude } from '@/project/http/ApiHelper.service';\r\nimport { createCancellableGet } from '@/core/http/cancellableGet';\r\nimport { omitBy } from 'lodash';\r\nimport {\r\n ProductGuideBrandViewModel,\r\n ProductGuideSeriesViewModel,\r\n ProductGuideModelViewModel,\r\n ProductGuideItemViewModel,\r\n ProductGuideSearchRequest,\r\n ProductGuideSearchViewModel,\r\n ProductGuideConfigurationViewModel\r\n} from '@/types/apiServerContract';\r\nimport { UrlFacets } from '@/core/urlHelper.service';\r\n\r\nexport class ProductGuideController {\r\n private readonly urlFactory = createUrlFactory('ProductGuide');\r\n private readonly externalUrlFactory = createUrlFactory('externalproductguide');\r\n\r\n public async getBrands(guideId: string): Promise {\r\n return httpService.get(this.urlFactory('GetBrands'), {\r\n guideId\r\n });\r\n }\r\n\r\n private cancellableSeries = createCancellableGet();\r\n\r\n public async getSeries(guideId: string, brandId: string): Promise {\r\n return this.cancellableSeries(this.urlFactory('GetSeries'), {\r\n guideId,\r\n brandId\r\n });\r\n }\r\n\r\n private cancellableModels = createCancellableGet();\r\n\r\n public async getModels(guideId: string, brandId: string, seriesName: string): Promise {\r\n return this.cancellableModels(this.urlFactory('GetModels'), {\r\n guideId,\r\n brandId,\r\n seriesName\r\n });\r\n }\r\n\r\n private cancellableItems = createCancellableGet();\r\n\r\n public async getItems(searchRequest: ProductGuideSearchRequest, selectedFacets: UrlFacets): Promise {\r\n const params = omitBy({ ...searchRequest, ...selectedFacets }, shouldExclude);\r\n return this.cancellableItems(this.urlFactory('GetItems'), params);\r\n }\r\n\r\n private cancellableSearch = createCancellableGet();\r\n\r\n public async search(guideId: string, searchText: string): Promise {\r\n return this.cancellableSearch(this.urlFactory('Search'), {\r\n guideId,\r\n searchText\r\n });\r\n }\r\n\r\n public async getConfiguration(externalId): Promise {\r\n return httpService.get(this.urlFactory('ProductGuideConfiguration'), {\r\n externalId: externalId,\r\n sourceDomain: document.referrer || 'unknown'\r\n });\r\n }\r\n\r\n public async getCableGuideBrands(brandType?: string): Promise {\r\n return httpService.get(this.urlFactory('getcablebrands'), {\r\n brandType\r\n });\r\n }\r\n\r\n public async trackclick(productClick: {\r\n externalId: string,\r\n productId: string,\r\n destination: 0 | 1\r\n }): Promise {\r\n try {\r\n // Browser might not allow us to get anything into document.referrer https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy\r\n return httpService.get(this.externalUrlFactory('trackclick'), {\r\n externalId: productClick.externalId,\r\n sourceDomain: document.referrer || 'unknown',\r\n productId: productClick.productId,\r\n destination: productClick.destination\r\n });\r\n } catch (e) {}\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { PriceSimpleViewModel, PriceDetailedViewModel } from '@/types/apiServerContract';\r\n\r\nexport class PriceController {\r\n private readonly urlFactory = createUrlFactory('Price');\r\n\r\n public async priceSimple(itemIds: string[], cancelKey?: string): Promise {\r\n return httpService.get(this.urlFactory('Simple'), {\r\n itemIds\r\n }, cancelKey);\r\n }\r\n\r\n public async priceDetailed(itemIds: string[], cancelKey?: string): Promise {\r\n return httpService.get(this.urlFactory('Detailed'), {\r\n itemIds\r\n }, cancelKey);\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { StockInformationViewModel } from '@/types/apiServerContract';\r\n\r\nexport class StockController {\r\n private readonly urlFactory = createUrlFactory('Stock');\r\n\r\n public async stockProduct(itemId: string, cancelKey?: string): Promise {\r\n return httpService.get(this.urlFactory('Product'), {\r\n itemId\r\n }, cancelKey);\r\n }\r\n\r\n public async stockProducts(itemIds: string[], cancelKey?: string): Promise {\r\n return httpService.get(this.urlFactory('Products'), {\r\n itemIds\r\n }, cancelKey);\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport {\r\n AdContentBlocksApiRequest,\r\n AdContentBlockViewModel,\r\n AdnuntiusPixelForwardRequest,\r\n BasketPageApiRequest,\r\n BrandLogosApiRequest,\r\n BrandLogoViewModel,\r\n CategoryItemViewModel,\r\n PartnerLogosApiRequest,\r\n PartnerLogoViewModel,\r\n ProductListApiRequest,\r\n RequestBreakpoint\r\n} from '@/types/apiServerContract';\r\n\r\nexport class PersonalizationController {\r\n private readonly urlFactory = createUrlFactory('Personalization');\r\n\r\n public async personalizedContent(adUnitIds: string[], currentUrl: string, contactKey: string, customerKey?: string): Promise {\r\n return await httpService.post(this.urlFactory('PersonalizedContent'), {\r\n adUnitIds,\r\n currentUrl,\r\n contactKey,\r\n customerKey\r\n } as AdContentBlocksApiRequest);\r\n }\r\n\r\n public async categories(adUnitId: string, currentUrl: string, contactKey: string, customerKey?: string): Promise {\r\n return httpService.post(this.urlFactory('Categories'), {\r\n adUnitIds: [adUnitId],\r\n currentUrl,\r\n contactKey,\r\n customerKey\r\n } as AdContentBlocksApiRequest);\r\n }\r\n\r\n public async brandLogos(breakpoint: RequestBreakpoint, currentUrl: string, contactKey: string, customerKey?: string): Promise {\r\n return httpService.post(this.urlFactory('BrandLogos'), {\r\n breakpoint,\r\n currentUrl,\r\n contactKey,\r\n customerKey\r\n } as BrandLogosApiRequest);\r\n }\r\n\r\n public async recommendedBrands(brands: string[], currentUrl: string, contactKey: string, customerKey?: string): Promise {\r\n return httpService.post(this.urlFactory('RecommendedBrands'), {\r\n brands,\r\n currentUrl,\r\n contactKey,\r\n customerKey\r\n } as BrandLogosApiRequest);\r\n }\r\n\r\n public async partnerLogos(brandName: string, condition: string, department: string, mpnNumber: string, itemNo: string, pph: string, productCategory: string,\r\n productGroup: string, currentUrl: string, contactKey: string, customerKey?: string): Promise {\r\n return httpService.post(this.urlFactory('PartnerLogos'), {\r\n brandName,\r\n condition,\r\n department,\r\n mpnNumber,\r\n itemNo,\r\n pph,\r\n productCategory,\r\n productGroup,\r\n currentUrl,\r\n contactKey,\r\n customerKey\r\n } as PartnerLogosApiRequest);\r\n }\r\n\r\n public async productListBanner(request: ProductListApiRequest): Promise {\r\n return httpService.post(this.urlFactory('ProductListBanner'), request);\r\n }\r\n\r\n public async basketPageBanner(request: BasketPageApiRequest): Promise {\r\n return httpService.post(this.urlFactory('BasketPageBanner'), request);\r\n }\r\n\r\n public async forwardAdnuntiusPixelRequest(requests: AdnuntiusPixelForwardRequest): Promise {\r\n return httpService.post(this.urlFactory('forwardAdnuntiusPixelRequest'), requests);\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { CheckoutViewModel, ReceiptViewModel, OrderViewModel } from '@/types/apiServerContract';\r\n\r\nexport class CheckoutController {\r\n private readonly urlFactory = createUrlFactory('Checkout');\r\n\r\n public async get(): Promise {\r\n return httpService.get(this.urlFactory('Get'));\r\n }\r\n\r\n async receipt(uniqueIdentifier: string): Promise {\r\n return httpService.get(this.urlFactory('Receipt'), { uniqueIdentifier });\r\n }\r\n\r\n public async submitOrder(terminal: string): Promise {\r\n return httpService.post(this.urlFactory('SubmitOrder'), { terminal });\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { createCancellableGet } from '@/core/http/cancellableGet';\r\nimport {\r\n AddOrUpdateDeliveryAddressRequest,\r\n DeleteDeliveryAddressRequest,\r\n DeliveryAddressViewModel,\r\n DeliveryAddressViewObject,\r\n DeliveryPriceViewModel\r\n} from '@/types/apiServerContract';\r\n\r\nexport class DeliveryController {\r\n private readonly urlFactory = createUrlFactory('Delivery');\r\n\r\n private cancellablePrices = createCancellableGet();\r\n\r\n public async prices(shipToCountryCode: string, shipToAddressCode?: string): Promise {\r\n return this.cancellablePrices(this.urlFactory('Prices'), {\r\n shipToCountryCode,\r\n shipToAddressCode\r\n });\r\n }\r\n\r\n public async addOrUpdateDeliveryAddress(addOrUpdateRequest: AddOrUpdateDeliveryAddressRequest, messagesId: string): Promise {\r\n return httpService.post(this.urlFactory('AddOrUpdateDeliveryAddress'), addOrUpdateRequest, messagesId);\r\n }\r\n\r\n public async deleteDeliveryAddress(webId: string, messagesId: string): Promise {\r\n return httpService.delete(this.urlFactory('DeleteDeliveryAddress'), { webId } as DeleteDeliveryAddressRequest, undefined, messagesId);\r\n }\r\n\r\n public async getDeliveryAddresses(): Promise {\r\n return httpService.get(this.urlFactory('GetDeliveryAddresses'));\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { BrandViewModel } from '@/types/apiServerContract';\r\nimport serverContextService from '@/core/serverContext.service';\r\nexport interface BrandSearchPages {\r\n brandName: string;\r\n links: {\r\n displayName:string;\r\n pageName:string;\r\n categoryIds:string[];\r\n url: string;\r\n }[]\r\n}\r\nexport class BrandController {\r\n private readonly brandUrlFactory = createUrlFactory('Brand');\r\n\r\n public async overview(categoryId: string | null): Promise {\r\n return httpService.get(this.brandUrlFactory('BrandOverview'), {\r\n categoryId\r\n });\r\n }\r\n\r\n public async brandSearchPages(brandName: string): Promise {\r\n return httpService.getRaw(`${serverContextService.contentHost}/umbraco/api/BrandSearchPagesApi/BrandSearchPages?culture=${serverContextService.siteInfo.culture}&brandName=${brandName}&siteName=${serverContextService.siteName}`);\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { createCancellableGet } from '@/core/http/cancellableGet';\r\nimport { RmaInfoViewModel, RmaHeaderViewModel, RmaProfileViewModel, RmaType, AddOrUpdateRmaRequest } from '@/types/apiServerContract';\r\n\r\nexport class RmaController {\r\n private readonly urlFactory = createUrlFactory('Rma');\r\n\r\n private cancellableSearchForRMA = createCancellableGet();\r\n\r\n public async getRmaHistory(): Promise {\r\n return httpService.get(this.urlFactory('GetRmaHistory'));\r\n }\r\n\r\n public async getRmaProfile(): Promise {\r\n return httpService.get(this.urlFactory('GetRmaProfile'));\r\n }\r\n\r\n public async getRmaInfo(itemId: string, type: RmaType): Promise {\r\n return this.cancellableSearchForRMA(this.urlFactory('GetRmaInfo'), {\r\n itemId,\r\n type\r\n });\r\n }\r\n\r\n public async addOrUpdate(request: AddOrUpdateRmaRequest): Promise {\r\n return httpService.post(this.urlFactory('AddOrUpdate'), request);\r\n }\r\n\r\n public async create(messagesId: string) {\r\n return httpService.post(this.urlFactory('Create'), null, messagesId);\r\n }\r\n\r\n public async clear(messagesId: string): Promise {\r\n return httpService.post(this.urlFactory('Clear'), null, messagesId);\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { SearchImpersonationViewModel, BeginImpersonationRequest, ImpersonationViewModel } from '@/types/apiServerContract';\r\n\r\nexport class ImpersonationController {\r\n private readonly urlFactory = createUrlFactory('Impersonation');\r\n\r\n public async beginImpersonation(userId: number, messagesId: string): Promise {\r\n return httpService.post(this.urlFactory('BeginImpersonation'), {\r\n userId\r\n } as BeginImpersonationRequest, messagesId);\r\n }\r\n\r\n public async endImpersonation(): Promise {\r\n return httpService.post(this.urlFactory('EndImpersonation'));\r\n }\r\n\r\n public async search(term: string): Promise {\r\n return httpService.get(this.urlFactory('Search'), {\r\n term\r\n }, 'impersonate');\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { AlternativeUrlViewModel } from '@/types/apiServerContract';\r\n\r\nexport class MetadataController {\r\n private readonly urlFactory = createUrlFactory('Metadata');\r\n\r\n public async getAlternativeCategoryUrls(categoryId?: string): Promise {\r\n return httpService.get(this.urlFactory('AlternativeCategoryUrls'), { categoryId });\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport {\r\n AddOrUpdateFavoriteItemListRequest,\r\n CreateFavoriteListRequest,\r\n FavoriteListDetailsViewModel,\r\n FavoriteListPermission,\r\n FavoriteListViewModel,\r\n FavoritesItemsListedViewModel,\r\n RemoveItemsFromFavoriteListRequest,\r\n SearchShareFavoriteViewModel,\r\n UpdateFavoriteListRequest\r\n} from '@/types/apiServerContract';\r\nimport { createCancellableGet } from '@/core/http/cancellableGet';\r\n\r\nexport class FavoritesController {\r\n private readonly urlFactory = createUrlFactory('Favorites');\r\n\r\n // GET\r\n\r\n private cancellableSearchForCustomers = createCancellableGet();\r\n private cancellableSearchForUsers = createCancellableGet();\r\n\r\n public async getAllLists(): Promise {\r\n return httpService.get(this.urlFactory('All'));\r\n }\r\n\r\n public async byIds(listIds: number[], permission?: FavoriteListPermission): Promise {\r\n return httpService.get(this.urlFactory('ByIds'), {\r\n listIds,\r\n permission\r\n });\r\n }\r\n\r\n public async getDetails(id: number): Promise {\r\n return httpService.get(this.urlFactory('Details'), {\r\n id\r\n });\r\n }\r\n\r\n public async isListed(itemIds: string[]): Promise {\r\n return httpService.get(this.urlFactory('IsListed'), {\r\n itemIds\r\n });\r\n }\r\n\r\n public async searchUsers(term: string): Promise {\r\n return this.cancellableSearchForUsers(this.urlFactory('SearchUsers'), {\r\n term\r\n });\r\n }\r\n\r\n public async searchCustomers(term: string): Promise {\r\n return this.cancellableSearchForCustomers(this.urlFactory('SearchCustomers'), {\r\n term\r\n });\r\n }\r\n\r\n // POST\r\n\r\n public async create(request: CreateFavoriteListRequest): Promise {\r\n return httpService.post(this.urlFactory('Create'), request);\r\n }\r\n\r\n public async update(request: UpdateFavoriteListRequest): Promise {\r\n return httpService.post(this.urlFactory('Update'), request);\r\n }\r\n\r\n public async addOrUpdateItem(request: AddOrUpdateFavoriteItemListRequest): Promise {\r\n return httpService.post(this.urlFactory('AddOrUpdateItem'), request);\r\n }\r\n\r\n public async removeItems(request: RemoveItemsFromFavoriteListRequest): Promise {\r\n return httpService.post(this.urlFactory('RemoveItems'), request);\r\n }\r\n\r\n public async removeFromSharedList(id: number): Promise {\r\n return httpService.post(this.urlFactory('RemoveFromSharedList'), id);\r\n }\r\n\r\n // DELETE\r\n public async delete(id: number, messageId?: string): Promise {\r\n return httpService.delete(this.urlFactory('Delete'), {\r\n id\r\n }, undefined, messageId);\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { UpdateBasketRequest, BasketViewModel, AddToBasketRequest, RemoveFromBasketRequest, AddQuoteToBasketRequest, AddProductsToBasketRequest } from '@/types/apiServerContract';\r\n\r\nexport type PartialUpdateBasketRequest = Partial;\r\nexport class BasketController {\r\n private readonly urlFactory = createUrlFactory('Basket');\r\n\r\n public async get(): Promise {\r\n return httpService.get(this.urlFactory('Get'));\r\n }\r\n\r\n // This is the real type - with optional props. The typescript gen. cannot generate it. Alas.\r\n public async update(request: PartialUpdateBasketRequest | undefined): Promise {\r\n return httpService.post(this.urlFactory('Update'), request || {});\r\n }\r\n\r\n public async updateDefault(): Promise {\r\n return httpService.post(this.urlFactory('UpdateDefault'));\r\n }\r\n\r\n public async clear(): Promise {\r\n return httpService.post(this.urlFactory('Clear'));\r\n }\r\n\r\n public async addOrUpdateLineItems(request: AddToBasketRequest): Promise {\r\n return httpService.post(this.urlFactory('AddOrUpdateLineItems'), request);\r\n }\r\n\r\n public async removeLineItems(request: RemoveFromBasketRequest): Promise {\r\n return httpService.post(this.urlFactory('RemoveLineItems'), request);\r\n }\r\n\r\n public async addMultipleItemsToBasket(request: AddProductsToBasketRequest): Promise {\r\n return httpService.post(this.urlFactory('AddProducts'), request);\r\n }\r\n\r\n public async addQuote(request: AddQuoteToBasketRequest): Promise {\r\n return httpService.post(this.urlFactory('AddQuote'), request, 'add-quote-to-basket');\r\n }\r\n\r\n public async removeQuote(quoteId: string): Promise {\r\n return httpService.post(this.urlFactory('RemoveQuote'), quoteId);\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport {\r\n RecommendationsRequest,\r\n ProductTileViewModel,\r\n RecommendationsCategoriesRequest,\r\n RecommendedCategoriesViewModel,\r\n RecommendationsBrandsRequest,\r\n RecommendedBrandsViewModel\r\n} from '@/types/apiServerContract';\r\n\r\nexport class RecommendationsController {\r\n private readonly urlFactory = createUrlFactory('recommendations');\r\n\r\n public async recommend(request: RecommendationsRequest): Promise {\r\n return httpService.get(this.urlFactory('recommend'), request);\r\n }\r\n\r\n public async recommendByCategory(request: RecommendationsCategoriesRequest): Promise {\r\n return httpService.get(this.urlFactory('recommendpopularcategories'), request);\r\n }\r\n\r\n public async recommendPopularBrands(request: RecommendationsBrandsRequest): Promise {\r\n return httpService.get(this.urlFactory('recommendpopularbrands'), request);\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { CableGuideCableTypesViewModel } from '@/types/apiServerContract';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\n\r\nexport class CableGuideController {\r\n private readonly urlFactory = createUrlFactory('CableGuide');\r\n\r\n public async getCableTypes(cableEndTypeA?: string | null | undefined, cableEndTypeB?: string | null | undefined, allowedBrands?:string[]): Promise {\r\n return httpService.get(this.urlFactory('GetCableTypes'), {\r\n cableEndTypeA,\r\n cableEndTypeB,\r\n allowedBrands: allowedBrands || []\r\n });\r\n }\r\n\r\n public async getCableEndTypesA(cableType: string | null | undefined, allowedBrands?:string[]): Promise {\r\n return httpService.get(this.urlFactory('GetCableEndTypesA'), {\r\n cableType,\r\n allowedBrands: allowedBrands || []\r\n });\r\n }\r\n\r\n public async getCableEndTypesB(cableType: string | null | undefined, cableEndTypeA: string, allowedBrands?:string[]): Promise {\r\n return httpService.get(this.urlFactory('GetCableEndTypesB'), {\r\n cableType,\r\n cableEndTypeA,\r\n allowedBrands: allowedBrands || []\r\n });\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport {\r\n CreateProductGuideOwnershipViewModel,\r\n ProductGuideConfigurationViewModel,\r\n ProductGuideOwnershipViewModel,\r\n ProductGuideOwnershipViewObject,\r\n SaveExternalGuideRequest\r\n} from '@/types/apiServerContract';\r\nimport serverContext from '@/core/serverContext.service';\r\n\r\nexport class ProductGuideConfigurationController {\r\n private readonly urlFactory = createUrlFactory('ProductGuide');\r\n\r\n public async saveExternalGuideOwnership(payload: SaveExternalGuideRequest, messageId: string):Promise {\r\n return httpService.post(this.urlFactory('SaveExternalGuideOwnership'), payload, messageId);\r\n }\r\n\r\n public async getProductGuideConfigurationById(id: string):Promise {\r\n return httpService.get(this.urlFactory('ProductGuideConfiguration'), { externalId: id });\r\n }\r\n\r\n public async getProductGuideConfigurationForEditById(id: string):Promise {\r\n return httpService.get(this.urlFactory('get'), { externalId: id });\r\n }\r\n\r\n public async getProductGuideConfigurations():Promise {\r\n return httpService.get(this.urlFactory('List'));\r\n }\r\n\r\n public async deleteProductGuide(id: string):Promise {\r\n return httpService.delete(this.urlFactory('Delete'), { externalId: id });\r\n }\r\n\r\n public async getProductGuideTexts():Promise {\r\n return httpService.getRaw(`${serverContext.contentHost}/umbraco/api/ProductGuideSettings/get?culture=${serverContext.siteInfo.culture}&siteName=${serverContext.siteName}`);\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { NotificationListViewModel } from '@/types/apiServerContract';\r\n\r\nexport class NotificationsController {\r\n private readonly urlFactory = createUrlFactory('Notifications');\r\n\r\n public async notifyOnStockReplenish(itemId: string): Promise {\r\n return httpService.get(this.urlFactory('NotifyOnStockReplenish'), {\r\n itemId\r\n });\r\n }\r\n\r\n public async getNotifications(): Promise {\r\n return httpService.get(this.urlFactory('Notifications'));\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { EmployeeViewModel } from '@/types/apiServerContract';\r\n\r\nexport class EmployeeController {\r\n private readonly urlFactory = createUrlFactory('Employee');\r\n\r\n public async getEmployees(employeeNumbers: string[]): Promise {\r\n return httpService.get(this.urlFactory('Get'), {\r\n ids: employeeNumbers\r\n });\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { CompanySearchViewModel } from '@/types/apiServerContract';\r\n\r\nexport class CvrSearchController {\r\n private readonly urlFactory = createUrlFactory('CvrSearch');\r\n\r\n public async searchCompanies(vatNumber: string, countryCode: string, messageId?:string): Promise {\r\n return httpService.get(this.urlFactory('SearchCompanies'), { vatNumber, countryCode }, undefined, undefined, messageId);\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { CategorySeoInformationViewModel } from '@/types/apiServerContract';\r\nexport class CategoryController {\r\n private readonly urlFactory = createUrlFactory('Category');\r\n\r\n public async getCategorySeoInformation(categoryId: string): Promise {\r\n return httpService.get(this.urlFactory('GetCategorySeoInformation'), { categoryId: categoryId });\r\n }\r\n}\r\n","import bus from '@/core/bus';\r\nimport { potentialMaintenanceMaxFailedRequestLimitReachedKey } from '@/core/http/constants';\r\n// import contentApiService from '@/core/http/contentApi.service';\r\nimport appStore from '@/core/app/app.store';\r\nimport httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { MaintenanceViewModel } from '@/types/apiServerContract';\r\n\r\nexport class MaintenanceController {\r\n private readonly urlFactory = createUrlFactory('Maintenance');\r\n\r\n constructor() {\r\n bus.on(potentialMaintenanceMaxFailedRequestLimitReachedKey, () => this.checkIsMaintenanceMode());\r\n }\r\n\r\n public async checkIsMaintenanceMode(): Promise {\r\n const result = await httpService.get(this.urlFactory('maintenanceactive')) as MaintenanceViewModel;\r\n appStore.isMaintenanceMode = result.maintenanceIsActive;\r\n return result;\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { TranslationResultViewModel } from '@/types/apiServerContract';\r\n\r\nexport class TranslateController {\r\n private readonly urlFactory = createUrlFactory('translation');\r\n\r\n public async translateDescription(productWid: string, language: string): Promise {\r\n return httpService.get(this.urlFactory('translatedescription'), { productWid, language });\r\n }\r\n}\r\n","import httpService from '@/core/http/http.service';\r\nimport { createUrlFactory } from '@/project/http/ApiHelper.service';\r\nimport { CountryOptionsPreselectViewModel } from '@/types/apiServerContract';\r\n\r\nexport class BecomeAUserController {\r\n private readonly urlFactory = createUrlFactory('becomeacustomer');\r\n\r\n public async getCountryOptions(): Promise {\r\n return httpService.get(this.urlFactory('countryoptions'));\r\n }\r\n}\r\n","\r\nimport { AccountController } from './controllers/accountController';\r\nimport { AccessController } from './controllers/accessController';\r\nimport { AuthenticationController } from './controllers/authenticationController';\r\nimport { SitesController } from './controllers/sitesController';\r\nimport { UserController } from './controllers/userController';\r\nimport { CustomerController } from './controllers/customerController';\r\nimport { SearchController } from './controllers/searchController';\r\nimport { NavigationController } from './controllers/navigationController';\r\nimport { NewsletterController } from './controllers/newsletterController';\r\nimport { ProductController } from './controllers/productController';\r\nimport { ProductGuideController } from './controllers/productGuideController';\r\nimport { PriceController } from './controllers/priceController';\r\nimport { StockController } from './controllers/stockController';\r\nimport { PersonalizationController } from './controllers/personalizationController';\r\nimport { CheckoutController } from './controllers/checkoutController';\r\nimport { DeliveryController } from './controllers/deliveryController';\r\nimport { BrandController } from './controllers/brandController';\r\nimport { RmaController } from './controllers/rmaController';\r\nimport { ImpersonationController } from './controllers/impersonationController';\r\nimport { MetadataController } from './controllers/metadataController';\r\nimport { FavoritesController } from './controllers/favoritesController';\r\nimport { BasketController } from './controllers/basketController';\r\nimport { RecommendationsController } from './controllers/recommendationsController';\r\nimport { CableGuideController } from './controllers/cableGuideController';\r\nimport { ProductGuideConfigurationController } from '@/project/http/controllers/productGuideConfigurationController';\r\nimport { NotificationsController } from './controllers/notificationsController';\r\nimport { EmployeeController } from './controllers/employeeController';\r\nimport { CvrSearchController } from './controllers/cvrSearchController';\r\nimport { CategoryController } from './controllers/categoryController';\r\nimport { MaintenanceController } from './controllers/mainteanceController';\r\nimport { TranslateController } from './controllers/translateController';\r\nimport { BecomeAUserController } from '@/project/http/controllers/becomeAUserController';\r\n\r\nexport default class Api {\r\n public static account = new AccountController();\r\n public static access = new AccessController();\r\n public static authentication = new AuthenticationController();\r\n public static becomeAUser = new BecomeAUserController();\r\n public static category = new CategoryController();\r\n public static sites = new SitesController();\r\n public static user = new UserController();\r\n public static customer = new CustomerController();\r\n public static search = new SearchController();\r\n public static navigation = new NavigationController();\r\n public static newsletter = new NewsletterController();\r\n public static product = new ProductController();\r\n public static productGuide = new ProductGuideController();\r\n public static productGuideConfiguration = new ProductGuideConfigurationController();\r\n public static price = new PriceController();\r\n public static stock = new StockController();\r\n public static personalization = new PersonalizationController();\r\n public static basket = new BasketController();\r\n public static checkout = new CheckoutController();\r\n public static delivery = new DeliveryController();\r\n public static brand = new BrandController();\r\n public static rma = new RmaController();\r\n public static impersonation = new ImpersonationController();\r\n public static metadata = new MetadataController();\r\n public static favorites = new FavoritesController();\r\n public static recommendations = new RecommendationsController();\r\n public static cableGuide = new CableGuideController();\r\n public static notifications = new NotificationsController();\r\n public static employee = new EmployeeController();\r\n public static cvrSearch = new CvrSearchController();\r\n public static maintenance = new MaintenanceController();\r\n public static translate = new TranslateController();\r\n}\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileStock.vue?vue&type=style&index=0&lang=less&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductTileStock.vue?vue&type=style&index=0&lang=less&\"","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'oprema-fallback': {\r\n width: 533.329,\r\n height: 399.987,\r\n viewBox: '0 0 400 300',\r\n data: ''\r\n }\r\n})\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Breadcrumb.vue?vue&type=style&index=0&id=4440e73b&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Breadcrumb.vue?vue&type=style&index=0&id=4440e73b&lang=less&scoped=true&\"","export function isDevMode() {\r\n return !isProdMode();\r\n}\r\n\r\nexport function isProdMode() {\r\n return process.env.NODE_ENV === 'production';\r\n}\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'arrow-up': {\r\n width: 32,\r\n height: 18,\r\n viewBox: '0 0 32 18',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'blanket-order': {\r\n width: 16,\r\n height: 16,\r\n viewBox: '0 0 26 32',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\nvar icon = require('vue-svgicon')\r\nicon.register({\r\n 'basket-accept': {\r\n width: 11,\r\n height: 8,\r\n viewBox: '0 0 11 8',\r\n data: ''\r\n }\r\n})\r\n"],"sourceRoot":""}