{"version":3,"sources":["webpack:///./src/project/app/blocks/UniqueSellingPointItem.vue?227b","webpack:///./src/project/app/content-pages/CampaignTeaser.vue?27f1","webpack:///./src/project/app/blocks/TextWithImageBlock.vue?c337","webpack:///./src/assets/icons/map-marker-blue.svg","webpack:///./src/project/app/blocks/ProductRecommendationsBlock.vue?f4b5","webpack:///./src/project/app/blocks/ProductRecommendationsBlock.vue","webpack:///./src/project/app/blocks/ProductRecommendationsBlock.vue?4754","webpack:///./src/project/app/blocks/ProductRecommendationsBlock.vue?9ba8","webpack:///./src/project/app/blocks/UniqueSellingPointItem.vue?54a1","webpack:///./src/project/app/blocks/UniqueSellingPointItem.vue","webpack:///./src/project/app/blocks/UniqueSellingPointItem.vue?e819","webpack:///./src/project/app/blocks/UniqueSellingPointItem.vue?dac9","webpack:///./src/project/app/blocks/categories/CategoryBlock.vue?137e","webpack:///./src/project/app/blocks/categories/CategoryBlock.vue","webpack:///./src/project/app/blocks/categories/CategoryBlock.vue?f360","webpack:///./src/project/app/blocks/categories/CategoryBlock.vue?50de","webpack:///./src/project/app/blocks/BrandsBlock.vue?2757","webpack:///./src/project/shared/category.service.ts","webpack:///./src/project/app/blocks/BrandsBlock.vue","webpack:///./src/project/app/blocks/BrandsBlock.vue?8621","webpack:///./src/project/app/blocks/BrandsBlock.vue?7948","webpack:///./src/project/app/blocks/AdnuntiusHeroBannerBlock.vue?4c14","webpack:///./src/project/app/blocks/TextBlock.vue?1425","webpack:///./src/project/app/blocks/TextBlock.vue","webpack:///./src/project/app/blocks/TextBlock.vue?d537","webpack:///./src/project/app/blocks/TextBlock.vue?1b9a","webpack:///./src/project/app/blocks/ImageTextVideoBlockNew.vue?35f5","webpack:///./src/project/app/blocks/LatestNewsBlock.vue?0f0d","webpack:///./src/project/app/blocks/tableHtml.service.ts","webpack:///./src/project/app/blocks/categories/CategoryBlockItem.vue?6fe2","webpack:///./src/project/app/blocks/categories/CategoryBlockItem.vue","webpack:///./src/project/app/blocks/categories/CategoryBlockItem.vue?f082","webpack:///./src/project/app/blocks/categories/CategoryBlockItem.vue?4345","webpack:///./src/project/app/blocks/ProductListBlock.vue?7132","webpack:///./src/project/app/blocks/ProductListBlock.vue","webpack:///./src/project/app/blocks/ProductListBlock.vue?49da","webpack:///./src/project/app/blocks/ProductListBlock.vue?7e3b","webpack:///./src/project/app/blocks/LatestNewsBlock.vue?c638","webpack:///./src/project/app/blocks/LatestNewsBlock.vue","webpack:///./src/project/app/blocks/LatestNewsBlock.vue?5a9f","webpack:///./src/project/app/blocks/LatestNewsBlock.vue?da71","webpack:///./src/project/app/blocks/TextWithImageBlock.vue?26f9","webpack:///./src/project/app/blocks/TextWithImageBlock.vue","webpack:///./src/project/app/blocks/TextWithImageBlock.vue?d231","webpack:///./src/project/app/blocks/TextWithImageBlock.vue?7084","webpack:///./src/project/app/blocks/OnePlusTwoBlocks.vue?afb4","webpack:///./src/project/app/blocks/AdnuntiusHeroBannerBlock.vue?fae7","webpack:///./src/project/app/blocks/SmallImageTextBlock.vue?8ad8","webpack:///./src/project/app/blocks/SmallImageTextBlock.vue","webpack:///./src/project/app/blocks/SmallImageTextBlock.vue?d187","webpack:///./src/project/app/blocks/SmallImageTextBlock.vue?78d5","webpack:///./src/project/app/blocks/AdnuntiusHeroBannerBlock.vue","webpack:///./src/project/app/blocks/AdnuntiusHeroBannerBlock.vue?0fc4","webpack:///./src/project/app/blocks/AdnuntiusHeroBannerBlock.vue?f415","webpack:///./src/project/app/blocks/SmallImageTextBlock.vue?bbd0","webpack:///./src/project/app/blocks/SimpleUniqueSellingPointsBlock.vue?6f42","webpack:///./src/project/app/blocks/SimpleUniqueSellingPointsBlock.vue","webpack:///./src/project/app/blocks/SimpleUniqueSellingPointsBlock.vue?4a73","webpack:///./src/project/app/blocks/SimpleUniqueSellingPointsBlock.vue?24a3","webpack:///./src/core/ui-components/tabs/Tab.vue?fce6","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/app/content-pages/NewsArticleTeaser.vue?69b3","webpack:///./src/assets/icons/map-marker-turquoise.svg","webpack:///./src/project/spinners/SpinnerElement.vue?81e9","webpack:///./src/project/app/blocks/CategoryRecommendationsBlock.vue?5358","webpack:///./src/project/app/blocks/ContentBlockContainer.vue?5ae9","webpack:///./src/project/app/blocks/ContentBlockContainer.vue","webpack:///./src/project/app/blocks/ContentBlockContainer.vue?4201","webpack:///./src/project/app/blocks/ContentBlockContainer.vue?3612","webpack:///./src/project/app/content-pages/NewsArticleTeaser.vue?c57a","webpack:///./src/project/app/content-pages/NewsArticleTeaser.vue","webpack:///./src/project/app/content-pages/NewsArticleTeaser.vue?e58d","webpack:///./src/project/app/content-pages/NewsArticleTeaser.vue?76cb","webpack:///./src/project/app/blocks/QuoteBlock.vue?d866","webpack:///./src/project/app/blocks/QuoteBlock.vue","webpack:///./src/project/app/blocks/QuoteBlock.vue?d14f","webpack:///./src/project/app/blocks/QuoteBlock.vue?b77e","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/app/blocks/HeroBannerBlock.vue?18bb","webpack:///./src/project/app/blocks/HeroBannerBlock.vue","webpack:///./src/project/app/blocks/HeroBannerBlock.vue?79ba","webpack:///./src/project/app/blocks/HeroBannerBlock.vue?a318","webpack:///./src/project/app/blocks/JotFormBlock.vue?e45f","webpack:///./src/project/app/blocks/JotFormBlock.vue","webpack:///./src/project/app/blocks/JotFormBlock.vue?e090","webpack:///./src/project/app/blocks/JotFormBlock.vue?e782","webpack:///./src/core/ui-components/tabs/Tabs.vue?ca56","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/app/blocks/OnePlusTwoBlocks.vue?ee0f","webpack:///./src/project/app/blocks/OnePlusTwoBlocks.vue","webpack:///./src/project/app/blocks/OnePlusTwoBlocks.vue?09c8","webpack:///./src/project/app/blocks/OnePlusTwoBlocks.vue?217c","webpack:///./src/project/spinners/SpinnerElement.vue?83f3","webpack:///./src/project/spinners/SpinnerElement.vue","webpack:///./src/project/spinners/SpinnerElement.vue?4c07","webpack:///./src/project/spinners/SpinnerElement.vue?f339","webpack:///./src/project/app/blocks/google-maps/GoogleMapsBlock.vue?95c2","webpack:///./src/project/app/blocks/AspectRatioBlockContainer.vue","webpack:///./src/project/app/blocks/AspectRatioBlockContainer.vue?6dce","webpack:///./src/project/app/blocks/AspectRatioBlockContainer.vue?793c","webpack:///./src/project/app/blocks/google-maps/GoogleMapsBlock.vue","webpack:///./src/project/app/blocks/google-maps/GoogleMapsBlock.vue?543a","webpack:///./src/project/app/blocks/google-maps/GoogleMapsBlock.vue?1bea","webpack:///./src/project/app/blocks/categories/CategoryBlockItem.vue?4a09","webpack:///./src/project/app/blocks/CategoryRecommendationsBlock.vue?46ef","webpack:///./src/project/app/blocks/CategoryRecommendationsBlock.vue","webpack:///./src/project/app/blocks/CategoryRecommendationsBlock.vue?36b9","webpack:///./src/project/app/blocks/CategoryRecommendationsBlock.vue?7bcd","webpack:///./src/project/app/blocks/ImageTextVideoBlockNew.vue?42bd","webpack:///./src/project/app/blocks/ImageTextVideoBlockNew.vue","webpack:///./src/project/app/blocks/ImageTextVideoBlockNew.vue?b139","webpack:///./src/project/app/blocks/ImageTextVideoBlockNew.vue?8b33","webpack:///./src/project/app/blocks/FullWidthTextBlock.vue?981b","webpack:///./src/project/app/blocks/FullWidthTextBlock.vue","webpack:///./src/project/app/blocks/FullWidthTextBlock.vue?05c8","webpack:///./src/project/app/blocks/FullWidthTextBlock.vue?b5b2","webpack:///./src/project/app/blocks/LatestCampaignsBlock.vue?f228","webpack:///./src/project/app/blocks/LatestCampaignsBlock.vue","webpack:///./src/project/app/blocks/LatestCampaignsBlock.vue?20cf","webpack:///./src/project/app/blocks/LatestCampaignsBlock.vue?d587","webpack:///./src/project/app/blocks/TabbedContentBlock.vue?246a","webpack:///./src/project/app/blocks/TabbedContentBlock.vue","webpack:///./src/project/app/blocks/TabbedContentBlock.vue?df29","webpack:///./src/project/app/blocks/TabbedContentBlock.vue?b1e5","webpack:///./src/project/app/blocks/BrandRecommendationsBlock.vue?4d83","webpack:///./src/project/product/condensed/CondensedProductList.vue?747d","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/messages/WebApiMessage.vue?4cfb","webpack:///./src/core/messages/WebApiMessage.vue","webpack:///./src/core/messages/WebApiMessage.vue?5af9","webpack:///./src/core/messages/WebApiMessage.vue?0b74","webpack:///./src/project/app/blocks/HalfWidthBlocks.vue?2759","webpack:///./src/project/app/blocks/HalfWidthBlocks.vue","webpack:///./src/project/app/blocks/HalfWidthBlocks.vue?1ddc","webpack:///./src/project/app/blocks/HalfWidthBlocks.vue?639d","webpack:///./src/project/product/condensed/CondensedProductList.vue?48a1","webpack:///./src/project/app/blocks/LatestCampaignsBlock.vue?06fe","webpack:///./src/project/spinners/SpinnerOverlay.vue?1bf4","webpack:///./src/project/spinners/SpinnerOverlay.vue","webpack:///./src/project/spinners/SpinnerOverlay.vue?c950","webpack:///./src/project/spinners/SpinnerOverlay.vue?9066","webpack:///./src/project/app/blocks/BrandsBlock.vue?e90c","webpack:///./src/assets/icons/map-marker-black.svg","webpack:///./src/project/app/blocks/UniqueSellingPointBlock.vue?7bff","webpack:///./src/project/app/blocks/UniqueSellingPointBlock.vue","webpack:///./src/project/app/blocks/UniqueSellingPointBlock.vue?04f4","webpack:///./src/project/app/blocks/UniqueSellingPointBlock.vue?f89b","webpack:///./src/project/app/blocks/newsletter/CancelNewsletterBlock.vue?d48d","webpack:///./src/project/app/blocks/newsletter/CancelNewsletterBlock.vue","webpack:///./src/project/app/blocks/newsletter/CancelNewsletterBlock.vue?fd13","webpack:///./src/project/app/blocks/newsletter/CancelNewsletterBlock.vue?1667","webpack:///./src/assets/icons/map-marker-green.svg","webpack:///./src/project/app/content-pages/CampaignTeaser.vue?ad76","webpack:///./src/project/app/content-pages/CampaignTeaser.vue","webpack:///./src/project/app/content-pages/CampaignTeaser.vue?9690","webpack:///./src/project/app/content-pages/CampaignTeaser.vue?23d0","webpack:///./src/project/app/blocks/BrandRecommendationsBlock.vue?ce72","webpack:///./src/project/app/blocks/BrandRecommendationsBlock.vue","webpack:///./src/project/app/blocks/BrandRecommendationsBlock.vue?7a7b","webpack:///./src/project/app/blocks/BrandRecommendationsBlock.vue?bb3d"],"names":["module","exports","render","_vm","this","_h","$createElement","_c","_self","products","length","class","appendToPreviousBlock","attrs","headline","headlineClasses","isFirstBlock","trackingListName","content","useListView","listViewPageSize","productBackgroundColor","resultFailed","noResultText","domProps","_s","_e","staticRenderFns","result","undefined","searchTerm","recommendations","recommendSearchTerm","categoryIdFilterPositiveList","categoryIdFilterNegativeList","displayedAtLocation","displayLocation","categoryId","productCount","allowFillIfNecessary","brandId","brandIdFilterList","hasImages","stockFilter","showFeedProducts","recommend","intervalDays","interval","popularityType","popularity","productId","getQueryParam","wid","recommendationType","type","e","error","key","Object","keys","filter","v","isNaN","Number","find","k","$route","name","getProductData","required","Boolean","default","String","components","CondensedProductList","component","staticClass","style","linkUrl","linkTarget","isPixelImage","backgroundColorStyle","iconBackgroundColor","directives","rawName","iconUrl","width","height","_v","text","linkName","icon","url","shortText","link","target","indexOf","color","backgroundColor","isColorDefined","_l","item","ix","categoryItems","customBackgroundColor","red","green","blue","isDarkBackground","theme","colors","white","black","paddingBottom","textColor","getCategoryItems","settings","selectedAdUnitIdContent","adUnitId","personalization","categories","fullPath","getContactKey","getCustomerKey","CategoryBlockItem","SmartHeadline","brands","linkText","brandOverviewPageName","brand","brandPageName","params","brandName","value","imageLoadFailed","expression","imageUrl","on","$event","imageLoadError","$dictionary","get","getCategoryIdFromUrl","regMatcher","matchingRegEx","match","replace","categoriesRegEx","RegExp","isLoading","BRAND","BRAND_OVERVIEW","categoryIdFromUrl","path","customer","brandTiles","isLoggedIn","$forceUpdate","getBrandTiles","ref","bodyText","callToActionColor","callToAction","html","wrapTableInOuterDivs","registerTableOverflow","$refs","htmlContent","unregisterTableOverflow","oldWidthNHeight","wrappersAndTables","Set","toggleHorisontalScroll","table","wrapper","clientWidth","classList","add","remove","viewPortChangeEventHandler","viewport","newWidthNHeight","forEach","x","containingElement","Error","wrappers","querySelectorAll","size","setCallback","querySelector","countBefore","delete","removeCallback","replaceFunc","replaceEx","renderedPixelUrl","visiblePixelUrl","viewPixelUrl","clickPixelUrl","scopedSlots","_u","fn","click","categoryUrl","nativeOn","apply","arguments","categoryDisplayName","campaignUrl","getUrlForMenuItem","getPageUrl","AdnuntiusPixels","header","loading","productIds","product","simpleByItemId","getProducts","news","id","sliderOptions","index","prevButtonSelector","slot","nextButtonSelector","firstNews","Date","valueOf","spaceBetween","slidesPerView","slidesPerGroup","loop","loopFillGroupWithBlank","watchSlidesVisibility","watchOverflow","setWrapperSize","navigation","nextEl","prevEl","grabCursor","instanceName","observer","observeParents","observeSlideChildren","NewsArticleTeaser","placeImageRight","image","imageFormat","focalPoint","subHeadline","headlineColor","subHeadlineColor","isTakeOverBanner","leftImage","rightImage","primaryBanner","adContent","small1Banner","small2Banner","hidden","loadError","trackingData","aspectRatio","imageLoaded","rendered","colorStyle","headerColor","subheaderColor","subheader","clickHandler","isBreakpointActive","styling","backgroundImage","backgroundImages","isMobile","setStyleAspectRatioOnDesktop","element","elementWidth","getBoundingClientRect","heightRatio","minHeight","backgroundSize","backgroundPosition","flex","backgroundRepeat","contentBackgroundColor","semiTransparent","makeContentBackgroundTransparent","semiTransparencyPercentage","hexToRgbWithDefault","hex","alpha","hexColor","defailtColor","$nextTick","$el","shimColor","hoverL","setProperty","Function","isFirst","loadAdContent","setTimeout","setThemeLoaded","requests","callAdContent","async","feedback","request","getAdContent","then","lineItemId","creativeId","parentBlockAlias","applyTheme","catch","push","smallAdUnit1","smallAdUnit2","Promise","all","adContentBlockViewModel","getBundledPersonalizedContent","isBackgroundVideo","vimeoVideoId","overlayVimeoVideoId","overlayVimeoCta","isTakeOverEnabled","styles","marginColor","isPrimaryBannerVideoBackground","marginTop","imageLeft","Math","floor","getScrollbarWidth","transform","scrollBarWidth","imageRight","ImageTextVideoBlock","SmallImageTextBlock","showBlockOnMobile","usp","uspIndex","uniqueSellingPointsMobileClasses","uspItems","isIconExtensionSvg","svgIconStyle","uniqueSellingPointItems","i","sort","random","uniqueSellingPointsColor","uniqueSellingPointsBackgroundColor","extension","toLowerCase","mask","maskSize","EETBlack","_t","active","selected","hash","getHash","setHash","adnuntiusTrackingData","_b","contentLoadError","$attrs","isHalfWidthBlock","isHeroBanner","parentAlias","UniqueSellingPointBlock","AllowedBlocks","alias","$emit","isAdUnitContent","validator","includes","SimpleUniqueSellingPointsBlock","ImageTextVideoBlockNew","TextBlock","JotFormBlock","GoogleMapsBlock","CancelNewsletterBlock","newsImageFormat","isOprema","date","teaser","SmartParagraph","quote","author","h","data","$props","h1","styleAsH1","level","$slots","staticStyle","allowTransparency","allowFullscreen","allowScrolling","jotformSrc","jotFormId","window","addEventListener","handleIFrameMessage","removeEventListener","iframe","jotform","args","split","_window","scrollIntoView","clientHeight","innerHeight","src","script","document","createElement","body","appendChild","exitFullscreen","mozCancelFullScreen","mozCancelFullscreen","webkitExitFullscreen","msExitFullscreen","isJotForm","origin","contentWindow","urls","docurl","encodeURIComponent","URL","referrer","postMessage","JSON","stringify","headerClass","tab","activeTab","toggle","contentClass","tabs","bus","emit","$children","$options","isActive","setup","blockAlignmentRight","largeBlock","halfWidthBlocksOne","halfWidthBlocksTwo","largeBlockAlignmentValue","Left","halfWidthBlocks","ContentBlockContainer","center","defaultZoom","options","marker","groupName","markerClicked","pixelOffset","infoWindow","position","open","hideInfoWindow","activeMarker","address","postalCodeAndCity","country","phoneNumber","email","mobileAspectRatio","widthOnScreen","aspectRatioMargins","activeBpDef","bpDef","paddingPct","realAspectRatio","margin","lat","lng","featureType","elementType","stylers","visibility","markerOffice","markerOther","mapLocations","map","clickable","draggable","locationType","scaledSize","parseFloat","gpsLatitude","gpsLongitude","maxZoom","minZoom","zoomControl","mapTypeControl","scaleControl","streetViewControl","rotateControl","fullscreenControl","disableDefaultUI","clickableIcons","scrollwheel","disableDoubleClickZoom","keyboardShortcuts","$mapPromise","getMap","bounds","google","maps","LatLngBounds","markers","extend","fitBounds","panToBounds","getZoom","setZoom","navigator","geolocation","getCurrentPosition","coords","setCenter","latitude","longitude","$gmapApiPromiseLazy","setBoundsByMarkers","syncCenterLocationWithUser","GmapMap","GmapMarker","GmapInfoWindow","category","handleSlideVisible","viewed","handleClickCategory","imageIndex","resizeImageByPath","uri","x1","displayName","$localeNumberFilter","brandCount","activeBreakpoint","debouncedTrackCategoryViewed","doTrackCategoryViewed","viewedCategories","slidesPerGroupAuto","newBreakpoint","getActiveBreakpoint","recommendByCategory","periodDays","categoryCount","formatImageUrl","ImageSizePlaceholderValues","W86","x2","W172","trackCreativeClick","trackCreativeView","getCategoryData","addListener","handleBreakpointChange","removeListener","shouldUseFlexBox","hasTextContent","showCaptionAsContentTitle","caption","elementClasses","video","hasNoVideoOrVideoHasBeenLoaded","loadingVideo","showHtmlCustomControls","isPlaying","isWithinWideBannerAspectRatio","isBackgroundImageBehaviorImageDimensions","alignRight","captionColor","headerHeadlineLevel","ctaColor","clickOpenVideoOverlay","renderContent","toggleVideoState","videoAspectRatio","wideBannerAspectRatio","vimeoVideoAspectRatio","backgroundImageWidth","useFlexBox","classes","showBackgroundImage","backgroundImageBehavior","elWidth","imageAspectRatio","top","newBackgroundWidth","newBackgroundHeight","upsizeFactor","doResize","allowUpscale","round","backgroundImageUrl","left","quality","firstSeparator","focal","qualityFormatted","format","absoluteImageUrl","getBaseUrl","forceVimeoAspectRatio","initVideo","videoMount","onloadeddata","ensureId","autoplay","muted","controls","showVideoControls","title","byline","portrait","opremayellow","autopause","console","log","getVimeoVideoAspectRatio","idOrUrl","idParts","parseInt","contentAligmentValue","contentWidthValue","TwoThird","FullWidth","subheaderFontSizeValue","Large","Normal","delayedVideoAspectRatio","getVideoWidth","getVideoHeight","minSize","subheaderSize","min","max","pause","play","shouldShowContentBackground","translateY","Right","widthCls","OneThird","adImages","img","isMatchingImageAspectRatio","allowedDelta","abs","adnuntiusImages","srcset","join","imageA","imageB","sizes","realWidthOnScreen","opacity","videoContainerMoreNarrowThanVideo","captionLocation","adImageProps","showCallToActionButton","show","immediate","SpinnerOverlay","CallToAction","campaigns","campaign","anyCampaignWithImageOrIcon","firstCampaign","c","showIcon","autoHeight","CampaignTeaser","keepAlive","blocks","Tabs","Tab","productImpression","productClick","productColor","relationType","itemId","page","handleNextPage","p","productBgColor","setSlidesPerView","Array","ProductListTracker","messages","message","getMessage","errorId","deleteMessageAtIndex","onMessages","splice","validationErrorEvent","messagesId","handled","msgOrLabel","exists","off","block","_uid","isSiblingVimeoVideo","failingBlocks","siblingIndex","sibling","b","uid","doShow","startTime","change","performance","now","delay","timeShown","restTime","minDuration","SpinnerElement","isInHalfWidth","wrapperClass","pointsClass","itemClasses","itemTextStyle","UniqueSellingPointItem","success","subtitle","handleSubmit","preventDefault","submit","model","callback","$$v","newsletter","unsubscribe","WebApiMessage","forceImageThumb","xs","md","lg","iconInImage","defaultCampaignIcon","campaignName","endDate","buttonText","recommendedBrands","getBrandUrl","handleClickBrand","brandLogo","isSimpleView","debouncedTrackBrandViewed","doTrackBrandViewed","viewedBrands","recommendPopularBrands","useDiverseRecommendations","creative","getBrandData","ResponsiveIcon"],"mappings":"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","file":"js/basic-blocks.11abf06d.js","sourcesContent":["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!./UniqueSellingPointItem.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!./UniqueSellingPointItem.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!./CampaignTeaser.vue?vue&type=style&index=0&id=57ac20d2&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!./CampaignTeaser.vue?vue&type=style&index=0&id=57ac20d2&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!./TextWithImageBlock.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!./TextWithImageBlock.vue?vue&type=style&index=0&lang=less&\"","module.exports = __webpack_public_path__ + \"img/map-marker-blue.938d6f14.svg\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.products.length > 0)?_c('CondensedProductList',{class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock },attrs:{\"headline\":_vm.headline,\"headline-classes\":_vm.headlineClasses,\"is-first-block\":_vm.isFirstBlock,\"products\":_vm.products,\"tracking-list-name\":_vm.trackingListName,\"use-swiper\":!_vm.content.useListView,\"list-view-page-size\":_vm.listViewPageSize,\"product-bg-color\":_vm.content.productBackgroundColor}}):(_vm.resultFailed && _vm.noResultText)?_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.noResultText)}}):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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 { ProductRecommendationsBlockViewModel } from '@/types/contentServerContract';\r\nimport { ProductRecommendationType, ProductTileViewModel, ProductTileViewObject } from '@/types/apiServerContract';\r\nimport loggingService from '@/core/logging.service';\r\nimport Api from '@/project/http/Api.service';\r\nimport CondensedProductList from '@/project/product/condensed/CondensedProductList.vue';\r\nimport urlHelperService from '@/core/urlHelper.service';\r\nimport { UrlQueryKey } from '@/core/urlQueryKey';\r\n\r\n@Component({\r\n components: { CondensedProductList }\r\n})\r\nexport default class ProductRecommendationsBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n })\r\n content!: ProductRecommendationsBlockViewModel;\r\n\r\n @Prop({\r\n required: false,\r\n type: Boolean,\r\n default: false\r\n })\r\n isFirstBlock!: boolean;\r\n\r\n @Prop()\r\n headlineClasses!: string;\r\n\r\n get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n @Prop({\r\n required: false,\r\n type: String\r\n })\r\n productId!: string | undefined;\r\n\r\n @Prop({\r\n required: false,\r\n type: String\r\n })\r\n searchTerm!: string | undefined;\r\n\r\n @Prop({\r\n required: false,\r\n type: String\r\n })\r\n noResultText!: string | undefined;\r\n\r\n result: ProductTileViewModel | null = null;\r\n resultFailed: boolean = false;\r\n\r\n get products(): ProductTileViewObject[] {\r\n return this.result ? this.result.products : [];\r\n }\r\n\r\n get listViewPageSize(): undefined | number {\r\n return this.content.useListView ? 4 : undefined;\r\n }\r\n\r\n async getProductData() {\r\n try {\r\n if (this.searchTerm?.length) {\r\n this.result = await Api.recommendations.recommendSearchTerm({\r\n categoryIdFilterPositiveList: this.content.categoryIdFilterPositiveList,\r\n categoryIdFilterNegativeList: this.content.categoryIdFilterNegativeList,\r\n displayedAtLocation: this.content.displayLocation,\r\n categoryId: this.content.categoryId,\r\n productCount: this.content.productCount,\r\n allowFillIfNecessary: this.content.allowFillIfNecessary,\r\n brandId: this.content.brandId,\r\n brandIdFilterList: this.content.brandIdFilterList,\r\n hasImages: this.content.hasImages,\r\n stockFilter: this.content.stockFilter,\r\n showFeedProducts: this.content.showFeedProducts,\r\n searchTerm: this.searchTerm\r\n });\r\n } else {\r\n this.result = await Api.recommendations.recommend({\r\n categoryIdFilterPositiveList: this.content.categoryIdFilterPositiveList,\r\n categoryIdFilterNegativeList: this.content.categoryIdFilterNegativeList,\r\n displayedAtLocation: this.content.displayLocation,\r\n intervalDays: this.content.interval,\r\n popularityType: this.content.popularity,\r\n categoryId: this.content.categoryId,\r\n productId: this.productId || urlHelperService.getQueryParam(UrlQueryKey.wid),\r\n productCount: this.content.productCount,\r\n recommendationType: this.content.type,\r\n allowFillIfNecessary: this.content.allowFillIfNecessary,\r\n brandId: this.content.brandId,\r\n brandIdFilterList: this.content.brandIdFilterList,\r\n hasImages: this.content.hasImages,\r\n stockFilter: this.content.stockFilter,\r\n showFeedProducts: this.content.showFeedProducts\r\n });\r\n }\r\n } catch (e) {\r\n loggingService.error(e);\r\n this.resultFailed = true;\r\n }\r\n }\r\n\r\n get headline(): string | undefined {\r\n return this.content?.headline;\r\n }\r\n\r\n get trackingListName():string {\r\n const key = Object.keys(ProductRecommendationType).filter((v) => isNaN(Number(v))).find(k => ProductRecommendationType[k] === this.content.type) || 'recommendation';\r\n // format: recommendation/relation - page type - recommendation type\r\n return `recommendations-${this.$route.name}-${key}`;\r\n }\r\n\r\n created() {\r\n this.getProductData();\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!./ProductRecommendationsBlock.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!./ProductRecommendationsBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductRecommendationsBlock.vue?vue&type=template&id=544f1bec&\"\nimport script from \"./ProductRecommendationsBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductRecommendationsBlock.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',{staticClass:\"flex flex-wrap flex-col justify-start items-center f-basis\"},[(_vm.linkUrl)?_c('culture-aware-router-link',{staticClass:\"flex flex-wrap flex-col justify-start items-center c-usp-item__link-content\",style:(_vm.textStyle),attrs:{\"to\":_vm.linkUrl,\"target\":_vm.linkTarget}},[(_vm.iconUrl)?_c('div',{staticClass:\"w-80 h-80 flex justify-center align-center mb-15\",class:{'bg-gray-300 rounded-full': !_vm.isPixelImage},style:(_vm.backgroundColorStyle(_vm.content.iconBackgroundColor))},[_c('img',{directives:[{name:\"on-error\",rawName:\"v-on-error\"}],staticClass:\"self-center h-full\",class:{'max-w-usp-icon max-h-usp-icon': !_vm.isPixelImage},attrs:{\"src\":_vm.iconUrl,\"width\":_vm.width,\"height\":_vm.height,\"loading\":\"lazy\",\"alt\":\"\"}})]):_vm._e(),(_vm.headline)?_c('h2',{staticClass:\"text-18 lh-normal font-bold text-center mb-3 w-full\"},[_vm._v(\" \"+_vm._s(_vm.headline)+\" \")]):_vm._e(),(_vm.text)?_c('p',{staticClass:\"text-center mb-3 w-full\"},[_vm._v(\" \"+_vm._s(_vm.text)+\" \")]):_vm._e(),_c('span',{staticClass:\"c-usp-item__text underline hover:no-underline text-center\"},[_vm._v(_vm._s(_vm.linkName))])]):_c('div',{staticClass:\"flex flex-wrap flex-col justify-start items-center\"},[(_vm.iconUrl)?_c('div',{staticClass:\"w-80 h-80 flex justify-center align-center mb-15\",class:{'bg-gray-300 rounded-full': !_vm.isPixelImage},style:(_vm.backgroundColorStyle(_vm.content.iconBackgroundColor))},[_c('img',{directives:[{name:\"on-error\",rawName:\"v-on-error\"}],staticClass:\"self-center h-full\",class:{'c-usp-item__icon-svg': !_vm.isPixelImage},attrs:{\"src\":_vm.iconUrl,\"width\":_vm.width,\"height\":_vm.height,\"loading\":\"lazy\",\"alt\":\"\"}})]):_vm._e(),(_vm.headline)?_c('h2',{staticClass:\"text-18 lh-normal font-bold text-center mb-3 w-full\"},[_vm._v(\" \"+_vm._s(_vm.headline)+\" \")]):_vm._e(),(_vm.text)?_c('p',{staticClass:\"text-center mb-3 w-full\"},[_vm._v(\" \"+_vm._s(_vm.text)+\" \")]):_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\r\nimport Vue from 'vue';\r\nimport { Component, Prop } from 'vue-property-decorator';\r\nimport { UniqueSellingPointItemViewModel } from '@/types/contentServerContract';\r\n\r\n@Component\r\nexport default class UniqueSellingPointItem extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: UniqueSellingPointItemViewModel;\r\n\r\n @Prop()\r\n textStyle!: Partial;\r\n\r\n get iconUrl() {\r\n return this.content.icon?.url;\r\n }\r\n\r\n get headline() {\r\n return this.content?.headline;\r\n }\r\n\r\n get text() {\r\n return this.content?.shortText;\r\n }\r\n\r\n get linkUrl() {\r\n return this.content.link?.url;\r\n }\r\n\r\n get linkTarget() {\r\n return this.content.link?.target;\r\n }\r\n\r\n get linkName() {\r\n return this.content.link?.name;\r\n }\r\n\r\n get isPixelImage() {\r\n return this.iconUrl.indexOf('.jpg') !== -1 || this.iconUrl.indexOf('.jpeg') !== -1 || this.iconUrl.indexOf('.png') !== -1;\r\n }\r\n\r\n get width() {\r\n return this.isPixelImage ? 80 : 40;\r\n }\r\n\r\n get height() {\r\n return this.isPixelImage ? 80 : 40;\r\n }\r\n\r\n isColorDefined(color: string): boolean {\r\n return color?.length === 7 ?? false; // #233445\r\n }\r\n\r\n backgroundColorStyle(backgroundColor: string): object {\r\n let result = '';\r\n\r\n if (this.isColorDefined(backgroundColor)) {\r\n result = backgroundColor;\r\n }\r\n\r\n return ({\r\n backgroundColor: result\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!./UniqueSellingPointItem.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!./UniqueSellingPointItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UniqueSellingPointItem.vue?vue&type=template&id=63ccf789&\"\nimport script from \"./UniqueSellingPointItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./UniqueSellingPointItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./UniqueSellingPointItem.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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock }},[_c('smart-headline',{staticClass:\"ml-15 md:ml-0 text-18 md:text-36 font-regular my-30\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.content.headline)+\" \")]),_c('div',{staticClass:\"flex flex-wrap justify-center\",style:(_vm.style)},_vm._l((_vm.categoryItems),function(item,ix){return _c('category-block-item',{key:ix,attrs:{\"content\":item}})}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { CategoryItemViewModel } from '@/types/apiServerContract';\r\nimport { CategoryBlockViewModel } from '@/types/contentServerContract';\r\nimport Api from '@/project/http/Api.service';\r\nimport adnuntiusService from '@/project/personalization/adnuntius.service';\r\nimport CategoryBlockItem from './CategoryBlockItem.vue';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport { hexToRgbValues, luma } from '@/core/color/color.service';\r\nimport tailwind from '@/styling/tailwind.config';\r\n\r\n@Component({\r\n components: { CategoryBlockItem, SmartHeadline }\r\n})\r\nexport default class CategoryBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: CategoryBlockViewModel;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n get backgroundColor() {\r\n return this.content.customBackgroundColor\r\n ? this.content.customBackgroundColor\r\n : this.content.backgroundColor ? '#' + this.content.backgroundColor : undefined;\r\n }\r\n\r\n get textColor() {\r\n if (!this.backgroundColor) return undefined;\r\n const { red, green, blue } = hexToRgbValues(this.backgroundColor);\r\n const isDarkBackground = luma(red, green, blue) <= 0.5;\r\n return isDarkBackground ? tailwind.theme.colors.white : tailwind.theme.colors.black;\r\n }\r\n\r\n get style(): Partial {\r\n return {\r\n backgroundColor: this.backgroundColor,\r\n ...(this.backgroundColor && { paddingBottom: '15px' }),\r\n color: this.textColor\r\n };\r\n }\r\n\r\n categoryItems: CategoryItemViewModel[] = [];\r\n\r\n created() {\r\n this.getCategoryItems(this.content.settings?.selectedAdUnitIdContent?.adUnitId);\r\n }\r\n\r\n async getCategoryItems(adUnitId: string) {\r\n if (adUnitId) return;\r\n this.categoryItems = await Api.personalization.categories(\r\n adUnitId,\r\n this.$route.fullPath,\r\n adnuntiusService.getContactKey(),\r\n adnuntiusService.getCustomerKey());\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!./CategoryBlock.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!./CategoryBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CategoryBlock.vue?vue&type=template&id=293c18d6&\"\nimport script from \"./CategoryBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./CategoryBlock.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.brands && _vm.brands.length > 0)?_c('article',{staticClass:\"o-chrome-container flex flex-col\",class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock }},[_c('div',{staticClass:\"flex md:justify-between\"},[(_vm.content.headline)?_c('SmartHeadline',{staticClass:\"text-18 md:text-34\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.content.headline)+\" \")]):_vm._e(),(_vm.content.linkText)?_c('div',{staticClass:\"hidden md:inline-block\"},[_c('CallToAction',{staticClass:\"cta--blue-light\",attrs:{\"text\":_vm.content.linkText,\"href\":{ name: _vm.brandOverviewPageName }}})],1):_vm._e()],1),_c('ul',{staticClass:\"flex flex-wrap\"},[(_vm.isLoading)?_c('li',{staticClass:\"min-h-200\"}):_vm._e(),_vm._l((_vm.brands),function(brand){return _c('li',{key:brand.brandId,staticClass:\"c-brandblock--item my-15 md:my-30\"},[_c('CultureAwareRouterLink',{staticClass:\"c-brandblock--item-link flex items-center justify-center\",attrs:{\"to\":{ name: _vm.brandPageName, params: { brandName: brand.brandName } }}},[_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(!brand.imageLoadFailed),expression:\"!brand.imageLoadFailed\"}],staticClass:\"c-brandblock--item-logo\",attrs:{\"src\":brand.imageUrl,\"alt\":brand.brandName},on:{\"error\":function($event){return _vm.imageLoadError(brand)}}}),_c('span',{class:{ 'sr-only': !brand.imageLoadFailed }},[_c('span',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm.$dictionary.get('BrandHero.BrandLogo.SeeAllProductsFrom')))]),_vm._v(\" \"+_vm._s(brand.brandName)+\" \")])])],1)})],2),(_vm.content.linkText)?_c('div',{staticClass:\"md:hidden\"},[_c('CallToAction',{staticClass:\"cta--blue-light\",attrs:{\"text\":_vm.content.linkText,\"href\":{ name: _vm.brandPageName }}})],1):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\r\n/c-1-24\r\n/xxxxx/c-1-22\r\n/xxxxx/yyyy/c-2-343244\r\n*/\r\n\r\nfunction getCategoryIdFromUrl(url: string): string | null {\r\n const regMatcher = matchingRegEx();\r\n\r\n const match = url.match(regMatcher);\r\n if (match && match.length === 2) {\r\n return match[1].replace(/-/g, '_');\r\n }\r\n return null;\r\n}\r\n\r\nfunction matchingRegEx(): RegExp {\r\n // Create new one every time - RegEx is stateful.\r\n const categoriesRegEx = /c-([\\d,-]+)/i;\r\n return new RegExp(categoriesRegEx);\r\n}\r\n\r\nexport default {\r\n getCategoryIdFromUrl,\r\n matchingRegEx\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\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport Api from '@/project/http/Api.service';\r\nimport { BrandsBlockViewModel } from '@/types/contentServerContract';\r\nimport { CustomerBrandTileViewObject } from '@/types/apiServerContract';\r\nimport categoryUrlService from '@/project/shared/category.service';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport { PageName } from '@/router/routes/constants';\r\nimport authService from '@/core/auth/auth.service';\r\ninterface CustomerBrandTileViewObjectExtended extends CustomerBrandTileViewObject {\r\n imageLoadFailed?: boolean;\r\n}\r\n\r\n@Component({\r\n components: { SmartHeadline }\r\n})\r\nexport default class BrandsBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: BrandsBlockViewModel;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n isLoading: boolean = true;\r\n\r\n get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n brands: CustomerBrandTileViewObjectExtended[] = [];\r\n\r\n get brandPageName() {\r\n return PageName.BRAND;\r\n }\r\n\r\n get brandOverviewPageName() {\r\n return PageName.BRAND_OVERVIEW;\r\n }\r\n\r\n async getBrandTiles() {\r\n const categoryIdFromUrl = categoryUrlService.getCategoryIdFromUrl(this.$route.path);\r\n const result = await Api.customer.brandTiles(categoryIdFromUrl);\r\n this.brands = result.brandTiles;\r\n this.isLoading = false;\r\n }\r\n\r\n get isUserLoggedIn(): boolean {\r\n return authService.isLoggedIn();\r\n }\r\n\r\n imageLoadError(brand) {\r\n brand.imageLoadFailed = true;\r\n this.$forceUpdate();\r\n }\r\n\r\n created() {\r\n this.getBrandTiles();\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!./BrandsBlock.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!./BrandsBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BrandsBlock.vue?vue&type=template&id=7dffeeda&\"\nimport script from \"./BrandsBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./BrandsBlock.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BrandsBlock.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!./AdnuntiusHeroBannerBlock.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!./AdnuntiusHeroBannerBlock.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 _c('article',{staticClass:\"h-full\",class:{ 'p-20 md:p-30 lg:p-40 has-background': _vm.backgroundColor },style:({ 'background-color': _vm.backgroundColor })},[_c('div',[_c('div',[(_vm.content.headline)?_c('smart-headline',{staticClass:\"mb-10\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.content.headline)+\" \")]):_vm._e(),_c('section',{directives:[{name:\"delegate-html-links\",rawName:\"v-delegate-html-links\"},{name:\"delegate-on-img-error\",rawName:\"v-delegate-on-img-error\"}],ref:\"htmlContent\",staticClass:\"wysiwyg text-block\",domProps:{\"innerHTML\":_vm._s(_vm.bodyText(_vm.content.bodyText))}}),(_vm.content.callToAction)?_c('call-to-action',{staticClass:\"cta--rounded mt-20\",attrs:{\"hex-color\":_vm.content.callToActionColor,\"text\":_vm.content.callToAction.name,\"href\":_vm.content.callToAction.url,\"target\":_vm.content.callToAction.target}}):_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 { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { TextBlockViewModel } from '@/types/contentServerContract';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport tableHtmlService from './tableHtml.service';\r\n\r\n@Component({\r\n components: { SmartHeadline }\r\n})\r\nexport default class TextBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: TextBlockViewModel;\r\n\r\n @Prop({\r\n required: false,\r\n default: false,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n get backgroundColor() {\r\n return this.content.backgroundColor ? `#${this.content.backgroundColor}` : null;\r\n }\r\n\r\n bodyText(html: string): string {\r\n return tableHtmlService.wrapTableInOuterDivs(html);\r\n }\r\n\r\n $refs!: Vue['$refs'] & {\r\n htmlContent: HTMLElement\r\n }\r\n\r\n mounted() {\r\n tableHtmlService.registerTableOverflow(this.$refs.htmlContent);\r\n }\r\n\r\n beforeDestroy() {\r\n tableHtmlService.unregisterTableOverflow(this.$refs.htmlContent);\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!./TextBlock.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!./TextBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TextBlock.vue?vue&type=template&id=77e56a6f&\"\nimport script from \"./TextBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./TextBlock.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!./ImageTextVideoBlockNew.vue?vue&type=style&index=0&id=28389042&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!./ImageTextVideoBlockNew.vue?vue&type=style&index=0&id=28389042&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!./LatestNewsBlock.vue?vue&type=style&index=0&id=7d1aae48&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!./LatestNewsBlock.vue?vue&type=style&index=0&id=7d1aae48&lang=less&scoped=true&\"","import viewportEvents, { Viewport } from '@/core/responsive/viewport/viewportEvents.service';\r\n\r\ninterface WrapperAndTable {\r\n containingElement: HTMLElement,\r\n wrapper: HTMLElement,\r\n table: HTMLElement\r\n}\r\n\r\nlet oldWidthNHeight = 0;\r\n\r\nconst wrappersAndTables = new Set();\r\n\r\nfunction toggleHorisontalScroll(table: HTMLElement, wrapper: HTMLElement) {\r\n if (table.clientWidth > wrapper.clientWidth) {\r\n wrapper.classList.add('has-scroll');\r\n } else {\r\n wrapper.classList.remove('has-scroll');\r\n }\r\n}\r\n\r\nfunction viewPortChangeEventHandler(viewport: Viewport) {\r\n const newWidthNHeight = viewport.width + viewport.height;\r\n if (newWidthNHeight === oldWidthNHeight) return;\r\n oldWidthNHeight = newWidthNHeight;\r\n\r\n wrappersAndTables.forEach(x => {\r\n toggleHorisontalScroll(x.table, x.wrapper);\r\n });\r\n}\r\n\r\nfunction registerTableOverflow(containingElement: HTMLElement) {\r\n if (!containingElement) throw new Error('containingElement must not be undefined!');\r\n const wrappers = containingElement.querySelectorAll('.scrollable') as NodeListOf;\r\n if (wrappersAndTables.size === 0) {\r\n viewportEvents.setCallback(viewPortChangeEventHandler);\r\n }\r\n wrappers.forEach(wrapper => {\r\n const table = wrapper.querySelector('table') as HTMLTableElement;\r\n if (table) {\r\n wrappersAndTables.add({\r\n containingElement,\r\n wrapper,\r\n table\r\n });\r\n toggleHorisontalScroll(table, wrapper);\r\n }\r\n });\r\n}\r\n\r\nfunction unregisterTableOverflow(containingElement: HTMLElement) {\r\n if (!containingElement) throw new Error('containingElement must not be undefined!');\r\n const countBefore = wrappersAndTables.size;\r\n wrappersAndTables.forEach(x => {\r\n if (x.containingElement === containingElement) {\r\n wrappersAndTables.delete(x);\r\n }\r\n });\r\n if (countBefore > 0 && wrappersAndTables.size === 0) {\r\n viewportEvents.removeCallback(viewPortChangeEventHandler);\r\n }\r\n}\r\n\r\nfunction wrapTableInOuterDivs(html: string): string {\r\n function replaceFunc(...params: string[]): string {\r\n return `
${params[0]}
`;\r\n }\r\n\r\n const replaceEx = /(]*>[^]*?<\\/table>)/ig;\r\n\r\n return html.replace(replaceEx, replaceFunc);\r\n}\r\n\r\nexport default {\r\n registerTableOverflow,\r\n unregisterTableOverflow,\r\n wrapTableInOuterDivs\r\n};\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('AdnuntiusPixels',{staticClass:\"flex justify-center md:mx-10 first:ml-0 last:mr-0 w-1/2 sm:w-1/3 md:w-auto md:flex-1\",attrs:{\"rendered-url\":_vm.content.renderedPixelUrl,\"visible-url\":_vm.content.visiblePixelUrl,\"view-url\":_vm.content.viewPixelUrl,\"click-url\":_vm.content.clickPixelUrl},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar click = ref.click;\nreturn [(_vm.categoryUrl)?_c('CultureAwareRouterLink',{staticClass:\"category-link category-link--whiteBox mb-15 md:mb-0 mx-5 md:mx-10\",attrs:{\"to\":_vm.categoryUrl,\"target\":\"_top\"},nativeOn:{\"click\":function($event){return click.apply(null, arguments)}}},[_c('div',{staticClass:\"category-item w-full h-full flex items-center justify-center\"},[_c('img',{attrs:{\"src\":_vm.icon,\"alt\":_vm.content.categoryDisplayName}})]),_c('span',{staticClass:\"sr-only\"},[_vm._v(\" \"+_vm._s(_vm.$dictionary.get('BrandHero.BrandLogo.SeeAllProductsFrom'))+\" \")]),_c('p',{staticClass:\"text-12 md:text-14 font-medium mt-10 md:mt-20 text-center\"},[_vm._v(\" \"+_vm._s(_vm.content.categoryDisplayName)+\" \"),_c('CIcon',{staticClass:\"category-link--arrow hidden\",attrs:{\"name\":\"arrow-right\",\"width\":\"9\",\"height\":\"9\"}})],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\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 { CategoryItemViewModel } from '@/types/apiServerContract';\r\nimport megaMenuService from '@/project/shared/megaMenu.service';\r\n\r\n@Component({\r\n components: { AdnuntiusPixels }\r\n})\r\nexport default class CategoryBlockItem extends Vue {\r\n @Prop({\r\n type: Object\r\n }) content!: CategoryItemViewModel;\r\n\r\n categoryUrl: string | null = null;\r\n\r\n get icon(): string {\r\n return this.content.icon.url;\r\n }\r\n\r\n async getPageUrl() {\r\n let url;\r\n const campaignUrl = this.content.url ? await megaMenuService.getUrlForMenuItem(this.content.url) : null;\r\n\r\n if (this.content.url!.indexOf('c-') >= 0 && campaignUrl) {\r\n url = campaignUrl;\r\n } else {\r\n url = this.content.url;\r\n }\r\n\r\n return url;\r\n }\r\n\r\n get renderedPixelUrl() {\r\n return this.content?.renderedPixelUrl;\r\n }\r\n\r\n get viewPixelUrl() {\r\n return this.content?.viewPixelUrl;\r\n }\r\n\r\n get visiblePixelUrl() {\r\n return this.content?.visiblePixelUrl;\r\n }\r\n\r\n get clickPixelUrl() {\r\n return this.content?.clickPixelUrl;\r\n }\r\n\r\n async created() {\r\n this.categoryUrl = await this.getPageUrl();\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!./CategoryBlockItem.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!./CategoryBlockItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CategoryBlockItem.vue?vue&type=template&id=5ac999c7&scoped=true&\"\nimport script from \"./CategoryBlockItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./CategoryBlockItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CategoryBlockItem.vue?vue&type=style&index=0&id=5ac999c7&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 \"5ac999c7\",\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.products.length > 0)?_c('CondensedProductList',{attrs:{\"headline\":_vm.content.header,\"is-first-block\":_vm.isFirstBlock,\"products\":_vm.products,\"use-swiper\":\"\",\"tracking-list-name\":(\"productListBlock-\" + (_vm.$route.name)),\"product-bg-color\":_vm.content.productBackgroundColor}}):_vm._e()}\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\nimport { ProductListBlockViewModel } from '@/types/contentServerContract';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport CondensedProductList from '@/project/product/condensed/CondensedProductList.vue';\r\nimport { ProductTileViewObject } from '@/types/apiServerContract';\r\nimport Api from '@/project/http/Api.service';\r\n\r\n@Component({\r\n components: { SmartHeadline, CondensedProductList }\r\n})\r\nexport default class ProductListBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: ProductListBlockViewModel;\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 products: ProductTileViewObject[] = [];\r\n loading: boolean = false;\r\n\r\n async getProducts() {\r\n if (this.content.productIds.length === 0) return;\r\n\r\n this.loading = true;\r\n\r\n try {\r\n const result = await Api.product.simpleByItemId(this.content.productIds);\r\n this.products = result.products;\r\n } finally {\r\n this.loading = false;\r\n }\r\n }\r\n\r\n created() {\r\n this.getProducts();\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!./ProductListBlock.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!./ProductListBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductListBlock.vue?vue&type=template&id=6b84b68b&\"\nimport script from \"./ProductListBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductListBlock.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',{staticClass:\"relative w-full overflow-visible\"},[(_vm.content.headline && _vm.news.length)?_c('SmartHeadline',{staticClass:\"mb-10\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.content.headline)+\" \")]):_vm._e(),_c('Swiper',{class:'swiper-' + _vm.id,attrs:{\"id\":_vm.id,\"instance-name\":_vm.id,\"options\":_vm.sliderOptions}},_vm._l((_vm.news),function(news,index){return _c('SwiperSlide',{key:index,staticClass:\"news-wrapper\"},[_c('NewsArticleTeaser',{attrs:{\"news\":news}})],1)}),1),_c('button',{staticClass:\"custom-swiper-button-prev hidden md:block\",class:_vm.prevButtonSelector,attrs:{\"slot\":\"button-prev\",\"type\":\"button\"},slot:\"button-prev\"},[_c('CIcon',{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('CIcon',{attrs:{\"name\":\"arrow-thin-right\",\"width\":\"25\",\"height\":\"25\"}})],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\r\nimport { NewsPageViewModel } from '@/types/contentServerContract';\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport NewsArticleTeaser from '@/project/app/content-pages/NewsArticleTeaser.vue';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\n\r\n@Component({\r\n components: { NewsArticleTeaser, SmartHeadline }\r\n})\r\nexport default class LatestNewsBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: NewsPageViewModel;\r\n\r\n @Prop({\r\n required: false,\r\n default: false,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n get news() {\r\n return [this.content.firstNews, ...this.content.news];\r\n }\r\n\r\n get id() {\r\n return 'latest-news-block-' + new Date().valueOf();\r\n }\r\n\r\n get prevButtonSelector() {\r\n return 'custom-swiper-button-prev-' + this.id;\r\n }\r\n\r\n get nextButtonSelector() {\r\n return 'custom-swiper-button-next-' + this.id;\r\n }\r\n\r\n get sliderOptions() {\r\n return {\r\n spaceBetween: 20,\r\n slidesPerView: 'auto',\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!./LatestNewsBlock.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!./LatestNewsBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LatestNewsBlock.vue?vue&type=template&id=7d1aae48&scoped=true&\"\nimport script from \"./LatestNewsBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./LatestNewsBlock.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LatestNewsBlock.vue?vue&type=style&index=0&id=7d1aae48&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 \"7d1aae48\",\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:\"text-image-block flex flex-wrap\"},[(_vm.content.image)?_c('div',{staticClass:\"text-image-block__item\",class:{'sm:order-1 sm:ml-10' : _vm.content.placeImageRight, 'sm:mr-10' : !_vm.content.placeImageRight}},[_c('responsive-image',{attrs:{\"image-url\":_vm.content.image.url,\"format\":_vm.imageFormat,\"mode\":\"crop\",\"focal-point\":_vm.content.image.focalPoint,\"alt\":\"\"}})],1):_vm._e(),_c('div',{class:{'text-image-block__item' : _vm.content.image, 'sm:mr-10' : _vm.content.placeImageRight && _vm.content.image, 'sm:ml-10' : !_vm.content.placeImageRight && _vm.content.image, 'w-full' : !_vm.content.image}},[_c('div',{staticClass:\"text-image-block__content bg-white p-20 lg:p-40\"},[(_vm.content.headline)?_c('smart-headline',{staticClass:\"uppercase text-12 font-bold text-blue-700\",class:{'mb-10 sm:mb-15' : _vm.content.subHeadline},style:({'color' : _vm.headlineColor}),attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2'}},[_vm._v(\" \"+_vm._s(_vm.content.headline)+\" \")]):_vm._e(),(_vm.content.subHeadline)?_c('smart-headline',{staticClass:\"h1 text-blue-700\",class:{'mb-10 sm:mb-15' : _vm.content.text},style:({'color' : _vm.subHeadlineColor}),attrs:{\"level\":_vm.isFirstBlock ? 'h2' : 'h3'}},[_vm._v(\" \"+_vm._s(_vm.content.subHeadline)+\" \")]):_vm._e(),(_vm.content.text)?_c('div',{directives:[{name:\"delegate-html-links\",rawName:\"v-delegate-html-links\"},{name:\"delegate-on-img-error\",rawName:\"v-delegate-on-img-error\"}],staticClass:\"wysiwyg theme-text-linkcolor leading-normal text-15 md:text-22\",class:{'mb-15 sm:mb-20' : _vm.content.callToAction},style:({'color' : _vm.textColor}),domProps:{\"innerHTML\":_vm._s(_vm.content.text)}}):_vm._e(),(_vm.content.callToAction)?_c('call-to-action',{staticClass:\"cta--rounded\",attrs:{\"hex-color\":_vm.content.callToActionColor,\"text\":_vm.content.callToAction.name,\"href\":_vm.content.callToAction.url,\"target\":_vm.content.callToAction.target}}):_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\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { TextWithImageBlockViewModel } from '@/types/contentServerContract';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport { extensionIsGifOrUndefined } from '@/project/shared/responsive-umbraco-image.service';\r\n\r\n@Component({\r\n components: { SmartHeadline }\r\n})\r\nexport default class TextWithImageBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: TextWithImageBlockViewModel;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n get headlineColor() {\r\n return this.content.headlineColor ?? null;\r\n }\r\n\r\n get subHeadlineColor() {\r\n return this.content.subHeadlineColor ?? null;\r\n }\r\n\r\n get textColor() {\r\n return this.content.textColor ?? null;\r\n }\r\n\r\n get imageFormat(): string | undefined {\r\n return extensionIsGifOrUndefined(this.content?.image);\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!./TextWithImageBlock.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!./TextWithImageBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TextWithImageBlock.vue?vue&type=template&id=61862716&\"\nimport script from \"./TextWithImageBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./TextWithImageBlock.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TextWithImageBlock.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!./OnePlusTwoBlocks.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!./OnePlusTwoBlocks.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 _c('div',{staticClass:\"adnuntius-hero-banner\",class:{ 'no-container': _vm.isTakeOverBanner, '-is-appended-to-prev-block': _vm.appendToPreviousBlock },style:(_vm.marginStyle)},[(_vm.leftImage)?_c('img',{staticClass:\"left-bannner\",style:(_vm.leftImagePosition),attrs:{\"src\":_vm.leftImage,\"alt\":\"\"}}):_vm._e(),(_vm.rightImage)?_c('img',{staticClass:\"right-banner\",style:(_vm.rightImagePosition),attrs:{\"src\":_vm.rightImage,\"alt\":\"\"}}):_vm._e(),_c('div',{class:{\n 'center-banner': _vm.primaryBanner.adContent && !(_vm.small1Banner.adContent && _vm.small2Banner.adContent),\n 'o-grid': (_vm.small1Banner.adContent || _vm.small2Banner.adContent),\n 'o-container': _vm.isTakeOverBanner,\n 'o-container--bleed' : _vm.isFirstBlock, hidden: _vm.primaryBanner.loadError\n }},[(_vm.primaryBanner.adContent)?_c('AdnuntiusPixels',{class:{\n 'o-grid--item w-full': _vm.primaryBanner.adContent && (_vm.small1Banner.adContent || _vm.small2Banner.adContent),\n 'lg:w-10/12': (_vm.small1Banner.adContent || _vm.small2Banner.adContent) && !(_vm.small1Banner.adContent && _vm.small2Banner.adContent),\n 'lg:w-2/3': _vm.small1Banner.adContent && _vm.small2Banner.adContent\n },attrs:{\"rendered-url\":_vm.primaryBanner.adContent.renderedPixelUrl,\"visible-url\":_vm.primaryBanner.adContent.visiblePixelUrl,\"view-url\":_vm.primaryBanner.adContent.viewPixelUrl,\"click-url\":_vm.primaryBanner.adContent.clickPixelUrl,\"tracking-data\":_vm.primaryBanner.trackingData},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var click = ref.click;\nreturn [_c('ImageTextVideoBlock',{attrs:{\"content\":_vm.primaryBanner.adContent,\"content-load-error\":_vm.primaryBanner.loadError,\"width-on-screen\":100,\"aspect-ratio\":_vm.aspectRatio,\"is-first-block\":_vm.isFirstBlock,\"click-handler\":click},on:{\"loaded\":function($event){return _vm.imageLoaded()}}})]}}],null,false,659540635)}):_vm._e(),(_vm.small1Banner.adContent)?_c('AdnuntiusPixels',{staticClass:\"mt-10 md:mt-20 lg:mt-0 o-grid--item w-full md:w-1/2 lg:w-2/12\",attrs:{\"rendered-url\":_vm.small1Banner.adContent.renderedPixelUrl,\"visible-url\":_vm.small1Banner.adContent.visiblePixelUrl,\"view-url\":_vm.small1Banner.adContent.viewPixelUrl,\"click-url\":_vm.small1Banner.adContent.clickPixelUrl,\"tracking-data\":_vm.small1Banner.trackingData},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var click = ref.click;\nreturn [(_vm.small1Banner.adContent)?_c('SmallImageTextBlock',{staticClass:\"h-full\",attrs:{\"content\":_vm.small1Banner.adContent,\"set-style-aspect-ratio-on-desktop\":!_vm.primaryBanner.adContent,\"index\":1,\"click-handler\":click}}):_vm._e()]}}],null,false,2941120810)}):_vm._e(),(_vm.small2Banner.adContent)?_c('AdnuntiusPixels',{staticClass:\"mt-10 md:mt-20 lg:mt-0 o-grid--item w-full md:w-1/2 lg:w-2/12\",attrs:{\"rendered-url\":_vm.small2Banner.adContent.renderedPixelUrl,\"visible-url\":_vm.small2Banner.adContent.visiblePixelUrl,\"view-url\":_vm.small2Banner.adContent.viewPixelUrl,\"click-url\":_vm.small2Banner.adContent.clickPixelUrl,\"tracking-data\":_vm.small2Banner.trackingData},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var click = ref.click;\nreturn [(_vm.small2Banner.adContent)?_c('SmallImageTextBlock',{staticClass:\"h-full\",attrs:{\"content\":_vm.small2Banner.adContent,\"set-style-aspect-ratio-on-desktop\":!_vm.primaryBanner.adContent,\"index\":2,\"click-handler\":click}}):_vm._e()]}}],null,false,2175172361)}):_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',{ref:\"element\",staticClass:\"h-full\"},[(_vm.content && _vm.rendered)?_c('div',{staticClass:\"p-20 md:px-15 xl:px-30 md:py-25 xl:py-35 relative h-full\",style:(_vm.style)},[(_vm.content.header)?_c('h3',{staticClass:\"h3 text-16 xl:text-18 tracking-normal mb-10 font-regular max-w-155 md:max-w-none\",style:(_vm.colorStyle(_vm.content.headerColor))},[_vm._v(\" \"+_vm._s(_vm.content.header)+\" \")]):_vm._e(),(_vm.content.subheader)?_c('p',{staticClass:\"leading-normal text-14 max-w-155 md:max-w-none\",style:(_vm.colorStyle(_vm.content.subheaderColor || _vm.content.headerColor))},[_vm._v(\" \"+_vm._s(_vm.content.subheader)+\" \")]):_vm._e(),(_vm.content.callToAction)?_c('CultureAwareRouterLink',{ref:\"callToAction\",staticClass:\"c-one-plus-two-small--link absolute flex flex-col inset-0 items-center justify-center\",attrs:{\"to\":_vm.content.callToAction.url,\"target\":_vm.content.callToAction.target},nativeOn:{\"click\":function($event){return _vm.clickHandler()}}},[_c('CallToAction',{staticClass:\"min-w-1/2 mx-10\",attrs:{\"href\":_vm.content.callToAction.url,\"target\":_vm.content.callToAction.target,\"hex-color\":_vm.content.callToActionColor || '#ffffff',\"text\":_vm.content.callToAction.name}})],1):_vm._e()],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\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { hexToRgb, hexToRgbValues, isValidHexColor } from '@/core/color/color.service';\r\nimport tailwind from '@/styling/tailwind.config';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport breakpointState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\nimport { MAX_MD } from '@/core/config/breakpointConfig';\r\nimport { AdImage, Link } from '@/types/apiServerContract';\r\nimport CallToAction from '@/project/form/CallToAction.vue';\r\n// Use custom interface because this banner only have some of the options we have in a normal banner.\r\ninterface SmallImageTextBlockViewModel {\r\n lineItemId?: string;\r\n creativeId?: string;\r\n backgroundColor?: string;\r\n headerColor?: string;\r\n header?: string;\r\n subheader?: string;\r\n callToAction?: Link;\r\n\r\n callToActionColor?: string;\r\n subheaderColor?: string;\r\n contentBackgroundColor?: string;\r\n makeContentBackgroundTransparent?: boolean;\r\n backgroundImages?: AdImage[];\r\n shim: boolean | undefined;\r\n shimColor?: string;\r\n}\r\ninterface extendedCSSStyleDeclarationWithContentBackgroundColor extends CSSStyleDeclaration {\r\n contentBackgroundColor?: string;\r\n aspectRatio?: number;\r\n}\r\n@Component({\r\n components: { SmartHeadline }\r\n})\r\nexport default class SmallImageTextBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: SmallImageTextBlockViewModel;\r\n\r\n @Prop({\r\n type: Boolean,\r\n default: false,\r\n required: false\r\n }) setStyleAspectRatioOnDesktop!: boolean;\r\n\r\n @Prop({\r\n type: Function,\r\n default: () => {}\r\n }) clickHandler!: () => void;\r\n\r\n rendered = false;\r\n\r\n get isMobile() {\r\n return breakpointState.isBreakpointActive(MAX_MD);\r\n }\r\n\r\n get style(): Partial {\r\n if (!this.content) return {};\r\n const styling: Partial = {};\r\n let backgroundImage: null | AdImage = null;\r\n if (this.content.backgroundImages?.length) {\r\n if (this.content.backgroundImages.length > 1 && this.isMobile) {\r\n backgroundImage = this.content.backgroundImages[1];\r\n } else {\r\n backgroundImage = this.content.backgroundImages[0];\r\n }\r\n }\r\n if (backgroundImage) {\r\n if (this.isMobile || this.setStyleAspectRatioOnDesktop) {\r\n // styling.aspectRatio = backgroundImage ? backgroundImage.width / backgroundImage.height : 360 / 190;\r\n const height = (backgroundImage ? backgroundImage.height : 190);\r\n const width = (backgroundImage ? backgroundImage.width : 360);\r\n const element = this.$refs.element;\r\n const elementWidth = element?.getBoundingClientRect()?.width || width;\r\n const heightRatio = (height / width) * elementWidth;\r\n styling.minHeight = heightRatio + 'px';\r\n } else {\r\n }\r\n styling.backgroundSize = 'cover';\r\n styling.backgroundImage = `url(${backgroundImage.url})`;\r\n styling.backgroundPosition = '50% 50%';\r\n }\r\n styling.flex = '1';\r\n styling.backgroundRepeat = 'no-repeat';\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 const semiTransparencyPercentage = 0.75;\r\n\r\n if (this.content.backgroundImages?.length && backgroundColor && this.isColorDefined(backgroundColor)) {\r\n result = this.hexToRgbWithDefault(backgroundColor, semiTransparent ? semiTransparencyPercentage : undefined);\r\n }\r\n\r\n styling.backgroundColor = result;\r\n styling.contentBackgroundColor = result;\r\n return styling;\r\n }\r\n\r\n 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 colorStyle(hexColor?: string): object {\r\n const defailtColor = tailwind.theme.colors.white;\r\n return ({\r\n color: this.style?.contentBackgroundColor === 'white' ? defailtColor : hexColor ? this.hexToRgbWithDefault(hexColor) : defailtColor\r\n });\r\n }\r\n\r\n isColorDefined(color: string): boolean {\r\n return color?.length === 7 ?? false; // #233445\r\n }\r\n\r\n $refs!: {\r\n element?: HTMLElement,\r\n callToAction?: CallToAction\r\n }\r\n\r\n mounted() {\r\n this.$nextTick(() => {\r\n this.rendered = true;\r\n this.$nextTick(() => {\r\n if (this.$refs.callToAction?.$el && this.content.shimColor && this.isColorDefined(this.content.shimColor)) {\r\n const element = this.$refs.callToAction.$el as HTMLElement;\r\n const { red, green, blue } = hexToRgbValues(this.content.shimColor);\r\n const hoverL = 0.6;\r\n element.style.setProperty('--hover-active-color', `rgba(${red},${green},${blue},${hoverL})`);\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!./SmallImageTextBlock.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!./SmallImageTextBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SmallImageTextBlock.vue?vue&type=template&id=f0ff897e&\"\nimport script from \"./SmallImageTextBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./SmallImageTextBlock.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SmallImageTextBlock.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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 ImageTextVideoBlock from './ImageTextVideoBlock.vue';\r\nimport AdnuntiusPixels from '@/project/tracking/adnuntius/AdnuntiusPixels.vue';\r\nimport { PersonalizedContentBlockViewModel } from '@/types/contentServerContract';\r\nimport adnuntiusService from '@/project/personalization/adnuntius.service';\r\nimport { AdnuntiusTrackingData } from '@/project/tracking/adnuntius/types';\r\nimport themeService from '@/project/app/themes/theme.service';\r\nimport scrollService from '@/core/scroll/scroll.service';\r\nimport SmallImageTextBlock from '@/project/app/blocks/SmallImageTextBlock.vue';\r\nimport { AdnuntiusBannerObject, ExtendedAdContentBlockViewModel } from '@/project/app/blocks/AdnuntiusViewModel';\r\nimport breakpointState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\nimport { MAX_SM } from '@/core/config/breakpointConfig';\r\n\r\n@Component({\r\n components: { AdnuntiusPixels, ImageTextVideoBlock, SmallImageTextBlock }\r\n})\r\nexport default class AdnuntiusHeroBannerBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: PersonalizedContentBlockViewModel;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n primaryBanner: AdnuntiusBannerObject = { adContent: null, loadError: false, trackingData: null, isFirst: this.isFirstBlock };\r\n small1Banner: AdnuntiusBannerObject = { adContent: null, loadError: false, trackingData: null, isFirst: false };\r\n small2Banner: AdnuntiusBannerObject = { adContent: null, loadError: false, trackingData: null, isFirst: false };\r\n\r\n get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n created() {\r\n this.loadAdContent();\r\n }\r\n\r\n imageLoaded() {\r\n // During take-over, a lot of re-rendering is going on with colors and element sizes, so we wait with the\r\n // big animation till the actual center is loaded\r\n setTimeout(() => {\r\n themeService.setThemeLoaded();\r\n }, 100);\r\n }\r\n\r\n async loadAdContent() {\r\n const requests: unknown[] = [];\r\n const callAdContent = async(adUnitId: string, feedback: { adContent: null | ExtendedAdContentBlockViewModel, trackingData: null | AdnuntiusTrackingData, loadError: boolean, isFirst?:boolean }): Promise => {\r\n if (!adUnitId) return null;\r\n const request = this.getAdContent(adUnitId);\r\n request.then(result => {\r\n feedback.adContent = result;\r\n if (feedback.adContent && feedback.adContent.lineItemId && feedback.adContent.creativeId) {\r\n feedback.trackingData = {\r\n lineItemId: feedback.adContent.lineItemId,\r\n creativeId: feedback.adContent.creativeId,\r\n parentBlockAlias: 'personalizedContentHero'\r\n };\r\n }\r\n if (feedback.isFirst) {\r\n themeService.applyTheme({ ...feedback.adContent });\r\n }\r\n }).catch(() => {\r\n feedback.loadError = true;\r\n });\r\n return request;\r\n };\r\n\r\n requests.push(callAdContent(this.content.settings?.selectedAdUnitIdContent?.adUnitId, this.primaryBanner));\r\n requests.push(callAdContent(this.content.smallAdUnit1?.selectedAdUnitIdContent?.adUnitId, this.small1Banner));\r\n requests.push(callAdContent(this.content.smallAdUnit2?.selectedAdUnitIdContent?.adUnitId, this.small2Banner));\r\n await Promise.all(requests);\r\n }\r\n\r\n async getAdContent(adUnitId: string) {\r\n if (!adUnitId) return null;\r\n try {\r\n const adContentBlockViewModel: ExtendedAdContentBlockViewModel = await adnuntiusService.getBundledPersonalizedContent(\r\n adUnitId,\r\n this.$route.fullPath);\r\n adContentBlockViewModel.isBackgroundVideo = !!adContentBlockViewModel.vimeoVideoId; // To make ImageTextVideoBlock work, it must have video playing in background\r\n // hide callToAction if both overlayVimeoCta and overlayVimeoVideoId is set\r\n if (adContentBlockViewModel.overlayVimeoVideoId && adContentBlockViewModel.overlayVimeoCta && adContentBlockViewModel.callToAction) {\r\n adContentBlockViewModel.callToAction = undefined;\r\n }\r\n return adContentBlockViewModel;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n get isTakeOverBanner() {\r\n return themeService.isTakeOverEnabled;\r\n }\r\n\r\n get aspectRatio() {\r\n return this.isTakeOverBanner ? (1440 / 680) : (1440 / 480);\r\n }\r\n\r\n get marginStyle(): Partial | undefined {\r\n const styles: Partial = {};\r\n if (this.primaryBanner.adContent?.marginColor) {\r\n styles.backgroundColor = this.primaryBanner.adContent.marginColor;\r\n }\r\n if (this.isFirstBlock && !this.isMobile && this.isTakeOverBanner && this.isPrimaryBannerVideoBackground) {\r\n // Only add negative margin for take-over banners with video background, as image background is handled in ImageTextBlock.\r\n styles.marginTop = '-20rem';\r\n }\r\n\r\n return styles;\r\n }\r\n\r\n get isPrimaryBannerVideoBackground(): boolean {\r\n return !!(this.primaryBanner.adContent?.vimeoVideoId) || false;\r\n }\r\n\r\n get isMobile() {\r\n return breakpointState.isBreakpointActive(MAX_SM);\r\n }\r\n\r\n get leftImage() {\r\n return this.primaryBanner.adContent?.imageLeft?.url;\r\n }\r\n\r\n get scrollBarWidth() {\r\n return Math.floor(scrollService.getScrollbarWidth() / 2);\r\n }\r\n\r\n get leftImagePosition(): Partial | undefined {\r\n if (!this.primaryBanner.adContent?.imageLeft) return undefined;\r\n\r\n return {\r\n transform: `translateX(calc((100vw - 1440px) / 2 - ${this.primaryBanner.adContent.imageLeft.width}px - ${this.scrollBarWidth}px))`\r\n };\r\n }\r\n\r\n get rightImage() {\r\n return this.primaryBanner.adContent?.imageRight?.url;\r\n }\r\n\r\n get rightImagePosition(): Partial | undefined {\r\n if (!this.primaryBanner.adContent?.imageRight) return undefined;\r\n\r\n return {\r\n transform: `translateX(calc((1440px - 100vw) / 2 + ${this.primaryBanner.adContent.imageRight.width}px + ${this.scrollBarWidth}px))`\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!./AdnuntiusHeroBannerBlock.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!./AdnuntiusHeroBannerBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdnuntiusHeroBannerBlock.vue?vue&type=template&id=be8015da&\"\nimport script from \"./AdnuntiusHeroBannerBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdnuntiusHeroBannerBlock.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AdnuntiusHeroBannerBlock.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!./SmallImageTextBlock.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!./SmallImageTextBlock.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 _c('div',{staticClass:\"relative flex flex-col\",class:{'o-container--bleed' : _vm.isFirstBlock, '-is-appended-to-prev-block': _vm.appendToPreviousBlock }},[_c('div',{staticClass:\"px-5 lg:px-25 text-10 lg:text-14 order-1 md:order-2\",class:{'hidden md:flex': !_vm.content.showBlockOnMobile, 'flex': _vm.content.showBlockOnMobile},style:(_vm.uspStyle)},_vm._l((_vm.uspItems),function(usp,uspIndex){return _c('div',{key:uspIndex,staticClass:\"py-20 px-5 flex-grow max-w-1/2\",class:[\n _vm.uniqueSellingPointsMobileClasses[uspIndex],\n uspIndex === (_vm.uspItems.length -1) ? '' : 'xl:pr-20',\n {\n 'md:max-w-1/3': _vm.uspItems.length % 3 === 0 || _vm.uspItems.length === 5,\n 'md:max-w-1/4': _vm.uspItems.length % 4 === 0 || _vm.uspItems.length === 7\n }\n ]},[(usp.content.icon && _vm.isIconExtensionSvg(usp.content.icon))?_c('div',{staticClass:\"w-25 md:w-32 h-32 md:h-36 min-w-30 mr-3 md:mr-20 mb-auto mt-5\",style:(_vm.svgIconStyle(usp.content.icon))}):(usp.content.icon)?_c('ResponsiveIconWrap',{staticClass:\"w-25 md:w-32 min-w-30 mr-3 md:mr-20 mb-auto mt-5\",attrs:{\"image\":usp.content.icon,\"alt-text\":usp.content.text}}):_vm._e(),_c('div',{staticClass:\"flex-grow-0\"},[_vm._v(\" \"+_vm._s(usp.content.text)+\" \")])],1)}),0)])}\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 { SimpleUspBlockViewModel, Media } from '@/types/contentServerContract';\r\nimport { hexToRgb, isValidHexColor } from '@/core/color/color.service';\r\nimport tailwind from '@/styling/tailwind.config';\r\nimport breakpointState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\nimport { MAX_SM } from '@/core/config/breakpointConfig';\r\nexport interface SimpleUspBlockItemViewModel {\r\n icon?: Media;\r\n text?: string;\r\n}\r\n@Component\r\nexport default class HeroBannerUniqueSellingPointsBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: SimpleUspBlockViewModel;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n uniqueSellingPointsMobileClasses: string[] = [];\r\n\r\n mounted() {\r\n // Randomize what UPS are shown on mobile.\r\n this.uniqueSellingPointsMobileClasses = ['flex', 'flex'];\r\n if (this.content.uniqueSellingPointItems?.length) {\r\n for (let i:number = 2; i < this.content.uniqueSellingPointItems.length; i++) {\r\n this.uniqueSellingPointsMobileClasses.push('hidden md:flex');\r\n }\r\n this.uniqueSellingPointsMobileClasses.sort(() => Math.random() - 0.5);\r\n }\r\n }\r\n\r\n get uspStyle(): Partial | null {\r\n const style: Partial = {};\r\n if (this.uniqueSellingPointsColor) {\r\n style.color = this.uniqueSellingPointsColor;\r\n }\r\n if (this.uniqueSellingPointsBackgroundColor) {\r\n style.backgroundColor = this.uniqueSellingPointsBackgroundColor;\r\n }\r\n return style;\r\n }\r\n\r\n get uniqueSellingPointsBackgroundColor() {\r\n return '#262422'; // Hardcoded for now\r\n }\r\n\r\n get uniqueSellingPointsColor() {\r\n return '#ffffff'; // Hardcoded for now\r\n }\r\n\r\n isIconExtensionSvg(icon:Media): boolean {\r\n return icon?.extension?.toLowerCase() === 'svg';\r\n }\r\n\r\n svgIconStyle(icon: Media): Partial {\r\n if (this.isIconExtensionSvg(icon)) {\r\n // Set background color to text color and set mask to SVG icon, if icon is SVG. That makes it possible to set fill color of umbraco SVGs.\r\n return {\r\n backgroundColor: this.uniqueSellingPointsColor,\r\n // @ts-ignore\r\n '-webkit-mask': `url(\"${icon.url}\") no-repeat center`,\r\n '-webkit-mask-size': '100% auto',\r\n mask: `url(\"${icon.url}\") no-repeat center`,\r\n maskSize: '100% auto'\r\n };\r\n }\r\n return {};\r\n }\r\n\r\n colorStyle(hexColor: string): string {\r\n const EETBlack = tailwind.theme.colors.black;\r\n return hexColor ? this.hexToRgbWithDefault(hexColor) : EETBlack;\r\n // Reuse from ImageTextVideoBlock.vue, but we might not have contentBackgroundColor in this content.\r\n // return this.contentBackgroundColor === 'white' ? EETBlack : hexColor ? this.hexToRgbWithDefault(hexColor) : EETBlack;\r\n }\r\n\r\n 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 isColorDefined(color: string): boolean {\r\n return color?.length === 7 ?? false; // #233445\r\n }\r\n\r\n get isMobile() {\r\n return breakpointState.isBreakpointActive(MAX_SM);\r\n }\r\n\r\n get uspItems(): { content: SimpleUspBlockItemViewModel }[] {\r\n return this.content.uniqueSellingPointItems || [];\r\n }\r\n\r\n get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\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!./SimpleUniqueSellingPointsBlock.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!./SimpleUniqueSellingPointsBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SimpleUniqueSellingPointsBlock.vue?vue&type=template&id=3af9c1a8&\"\nimport script from \"./SimpleUniqueSellingPointsBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./SimpleUniqueSellingPointsBlock.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.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 active: boolean = this.selected;\r\n\r\n 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 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=57332680&\"\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","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!./NewsArticleTeaser.vue?vue&type=style&index=0&id=25914ceb&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!./NewsArticleTeaser.vue?vue&type=style&index=0&id=25914ceb&lang=less&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/map-marker-turquoise.d2be1daf.svg\";","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=db7d78cc&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=db7d78cc&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!./CategoryRecommendationsBlock.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!./CategoryRecommendationsBlock.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.isAdUnitContent)?_c('AdnuntiusPixels',{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('ImageTextVideoBlock',_vm._b({attrs:{\"content\":_vm.adContentBlockViewModel,\"click-handler\":click,\"content-load-error\":_vm.contentLoadError}},'ImageTextVideoBlock',_vm.$attrs,false))]}}],null,false,3737032441)}):((_vm.isHalfWidthBlock || _vm.isHeroBanner))?_c('ImageTextVideoBlockNew',_vm._b({attrs:{\"content\":_vm.content}},'ImageTextVideoBlockNew',_vm.$attrs,false)):(_vm.isTextBlock)?_c('TextBlock',_vm._b({attrs:{\"content\":_vm.content,\"parent-alias\":_vm.parentAlias}},'TextBlock',_vm.$attrs,false)):(_vm.isJotFormBlock)?_c('JotFormBlock',_vm._b({attrs:{\"content\":_vm.content}},'JotFormBlock',_vm.$attrs,false)):(_vm.isMapBlock)?_c('GoogleMapsBlock',_vm._b({attrs:{\"content\":_vm.content}},'GoogleMapsBlock',_vm.$attrs,false)):(_vm.isCancelNewsletterBlock)?_c('CancelNewsletterBlock',_vm._b({attrs:{\"content\":_vm.content}},'CancelNewsletterBlock',_vm.$attrs,false)):(_vm.isUniqueSellingPointBlock)?_c('UniqueSellingPointBlock',_vm._b({staticClass:\"h-full w-full\",attrs:{\"content\":_vm.content,\"is-in-half-width\":\"\",\"wrapper-class\":\"h-full w-full\",\"points-class\":\"w-full flex flex-wrap\"}},'UniqueSellingPointBlock',_vm.$attrs,false)):(_vm.isSimpleUspBlock)?_c('SimpleUniqueSellingPointsBlock',_vm._b({attrs:{\"content\":_vm.content}},'SimpleUniqueSellingPointsBlock',_vm.$attrs,false)):_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\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport {\r\n HalfWidthBlockViewModel,\r\n PersonalizedContentBlockViewModel,\r\n TextBlockViewModel\r\n} from '@/types/contentServerContract';\r\nimport AdnuntiusPixels from '@/project/tracking/adnuntius/AdnuntiusPixels.vue';\r\nimport ImageTextVideoBlock from '@/project/app/blocks/ImageTextVideoBlock.vue';\r\nimport ImageTextVideoBlockNew from '@/project/app/blocks/ImageTextVideoBlockNew.vue';\r\nimport adnuntiusService from '@/project/personalization/adnuntius.service';\r\nimport TextBlock from './TextBlock.vue';\r\nimport JotFormBlock from './JotFormBlock.vue';\r\nimport CancelNewsletterBlock from './newsletter/CancelNewsletterBlock.vue';\r\nimport GoogleMapsBlock from './google-maps/GoogleMapsBlock.vue';\r\nimport { AdnuntiusTrackingData } from '@/project/tracking/adnuntius/types';\r\nimport { BlockName } from '@/project/app/blocks/index';\r\nimport SimpleUniqueSellingPointsBlock from '@/project/app/blocks/SimpleUniqueSellingPointsBlock.vue';\r\nimport { ExtendedAdContentBlockViewModel } from '@/project/app/blocks/AdnuntiusViewModel';\r\n\r\nconst UniqueSellingPointBlock = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './UniqueSellingPointBlock.vue');\r\n\r\nconst AllowedBlocks: BlockName[] = ['heroBanner', 'personalizedContent', 'halfWidthBlock', 'textBlock', 'jotFormBlock', 'map', 'cancelNewsletterBlock', 'uniqueSellingPointBlock', 'simpleUspBlock'];\r\n\r\n@Component({\r\n components: {\r\n SimpleUniqueSellingPointsBlock,\r\n UniqueSellingPointBlock,\r\n ImageTextVideoBlock,\r\n ImageTextVideoBlockNew,\r\n AdnuntiusPixels,\r\n TextBlock,\r\n JotFormBlock,\r\n GoogleMapsBlock,\r\n CancelNewsletterBlock\r\n }\r\n})\r\nexport default class ContentBlockContainer extends Vue {\r\n contentLoadError = false;\r\n adContentBlockViewModel: ExtendedAdContentBlockViewModel | null = null;\r\n adnuntiusTrackingData: AdnuntiusTrackingData | null = null;\r\n\r\n @Prop({ required: true, type: Object })\r\n content!: HalfWidthBlockViewModel | PersonalizedContentBlockViewModel | TextBlockViewModel;\r\n\r\n @Prop({ required: true, type: String, validator: (value: string) => AllowedBlocks.includes(value as BlockName) })\r\n alias!: BlockName;\r\n\r\n @Prop({ required: true, type: String })\r\n parentAlias!: string;\r\n\r\n @Prop({ required: true, type: Number })\r\n index!: number;\r\n\r\n get isHeroBanner(): boolean {\r\n return this.alias === 'heroBanner';\r\n }\r\n\r\n get isAdUnitContent(): boolean {\r\n return this.alias === 'personalizedContent';\r\n }\r\n\r\n get isHalfWidthBlock(): boolean {\r\n return this.alias === 'halfWidthBlock';\r\n }\r\n\r\n get isTextBlock(): boolean {\r\n return this.alias === 'textBlock';\r\n }\r\n\r\n get isJotFormBlock(): boolean {\r\n return this.alias === 'jotFormBlock';\r\n }\r\n\r\n get isMapBlock(): boolean {\r\n return this.alias === 'map';\r\n }\r\n\r\n get isCancelNewsletterBlock(): boolean {\r\n return this.alias === 'cancelNewsletterBlock';\r\n }\r\n\r\n get isUniqueSellingPointBlock(): boolean {\r\n return this.alias === 'uniqueSellingPointBlock';\r\n }\r\n\r\n get isSimpleUspBlock(): boolean {\r\n return this.alias === 'simpleUspBlock';\r\n }\r\n\r\n get renderedPixelUrl() {\r\n return this.adContentBlockViewModel?.renderedPixelUrl;\r\n }\r\n\r\n get viewPixelUrl() {\r\n return this.adContentBlockViewModel?.viewPixelUrl;\r\n }\r\n\r\n get visiblePixelUrl() {\r\n return this.adContentBlockViewModel?.visiblePixelUrl;\r\n }\r\n\r\n get clickPixelUrl() {\r\n return this.adContentBlockViewModel?.clickPixelUrl;\r\n }\r\n\r\n async getAdContent(adUnitId: string) {\r\n if (!adUnitId) return;\r\n try {\r\n this.adContentBlockViewModel = await adnuntiusService.getBundledPersonalizedContent(\r\n adUnitId,\r\n this.$route.fullPath);\r\n this.adContentBlockViewModel.isBackgroundVideo = true;\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: this.parentAlias\r\n };\r\n }\r\n } catch {\r\n this.contentLoadError = true;\r\n this.$emit('contentLoadError');\r\n }\r\n }\r\n\r\n created() {\r\n const content = this.content as PersonalizedContentBlockViewModel;\r\n if (this.isAdUnitContent && content.settings && content.settings.selectedAdUnitIdContent) {\r\n this.getAdContent(content.settings.selectedAdUnitIdContent.adUnitId);\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!./ContentBlockContainer.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!./ContentBlockContainer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ContentBlockContainer.vue?vue&type=template&id=3e011752&\"\nimport script from \"./ContentBlockContainer.vue?vue&type=script&lang=ts&\"\nexport * from \"./ContentBlockContainer.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.news)?_c('article',{staticClass:\"news-article\"},[_c('div',{staticClass:\"news-article-image\"},[(_vm.news.image)?_c('responsive-image',{attrs:{\"image-url\":_vm.news.image.url,\"mode\":\"crop\",\"format\":_vm.newsImageFormat,\"aspect-ratio\":710 / 400,\"focal-point\":_vm.news.image.focalPoint,\"alt\":_vm.news.image.name}}):_c('div',{staticClass:\"hero-article-logo theme-text-linkcolor\"},[_c('CIcon',{staticClass:\"logo\",attrs:{\"name\":\"logo\",\"original\":_vm.isOprema ? 'true' : undefined}})],1),_c('culture-aware-router-link',{staticClass:\"read-more\",attrs:{\"to\":_vm.news.url.url}},[_c('call-to-action',{staticClass:\"cta--rounded cta--white\",attrs:{\"text\":_vm.$dictionary.get('News.ReadMore'),\"type\":\"button\",\"href\":_vm.news.url.url}})],1)],1),_c('div',{staticClass:\"news-article-text overflow-hidden\"},[_c('p',{staticClass:\"font-bold mb-10\"},[_vm._v(\" \"+_vm._s(_vm.news.date)+\" \")]),_c('p',{staticClass:\"font-bold mb-10\"},[_vm._v(\" \"+_vm._s(_vm.news.header)+\" \")]),_c('smart-paragraph',{attrs:{\"content\":_vm.news.teaser,\"max-characters\":200,\"as-html\":\"\"}})],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\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { News } from '@/types/contentServerContract';\r\nimport SmartParagraph from '@/core/ui-components/SmartParagraph.vue';\r\nimport { extensionIsGifOrUndefined } from '@/project/shared/responsive-umbraco-image.service';\r\nimport serverContextService from '@/core/serverContext.service';\r\n\r\n@Component({\r\n components: { SmartParagraph }\r\n})\r\nexport default class NewsArticleTeaser extends Vue {\r\n @Prop({ required: true })\r\n news!: News;\r\n\r\n get newsImageFormat() {\r\n return extensionIsGifOrUndefined(this.news?.image);\r\n }\r\n\r\n get isOprema() {\r\n return serverContextService?.isOprema;\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!./NewsArticleTeaser.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!./NewsArticleTeaser.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NewsArticleTeaser.vue?vue&type=template&id=25914ceb&scoped=true&\"\nimport script from \"./NewsArticleTeaser.vue?vue&type=script&lang=ts&\"\nexport * from \"./NewsArticleTeaser.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NewsArticleTeaser.vue?vue&type=style&index=0&id=25914ceb&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 \"25914ceb\",\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:\"h-full p-30 md:p-40\",class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock },style:(_vm.style)},[_c('div',{staticClass:\"flex\"},[_c('div',{staticClass:\"flex flex-shrink-0\"},[_c('CIcon',{staticClass:\"hidden md:block\",attrs:{\"name\":\"quote\",\"height\":\"30\",\"width\":\"64\"}}),_c('CIcon',{staticClass:\"md:hidden block\",attrs:{\"name\":\"quote\",\"height\":\"20\",\"width\":\"20\"}})],1),_c('div',{staticClass:\"ml-15 md:ml-20 pt-5\"},[_c('p',{directives:[{name:\"delegate-html-links\",rawName:\"v-delegate-html-links\"},{name:\"delegate-on-img-error\",rawName:\"v-delegate-on-img-error\"}],staticClass:\"wysiwyg text-block break-words overflow-hidden text-14 md:text-20 mb-20\",domProps:{\"innerHTML\":_vm._s(_vm.content.quote)}}),_c('p',{staticClass:\"md:text-15\"},[_vm._v(\" \"+_vm._s(_vm.content.author)+\" \")])])])])}\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 { QuoteBlockViewModel } from '@/types/contentServerContract';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport { hexToRgbValues, luma } from '@/core/color/color.service';\r\nimport tailwind from '@/styling/tailwind.config';\r\n\r\n@Component({\r\n components: { SmartHeadline }\r\n})\r\nexport default class QuoteBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: QuoteBlockViewModel;\r\n\r\n @Prop({\r\n required: false,\r\n default: false,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n get backgroundColor() {\r\n return this.content.customBackgroundColor\r\n ? this.content.customBackgroundColor\r\n : this.content.backgroundColor ? '#' + this.content.backgroundColor : undefined;\r\n }\r\n\r\n get textColor() {\r\n if (!this.backgroundColor) return undefined;\r\n const { red, green, blue } = hexToRgbValues(this.backgroundColor);\r\n const isDarkBackground = luma(red, green, blue) <= 0.5;\r\n return isDarkBackground ? tailwind.theme.colors.white : tailwind.theme.colors.black;\r\n }\r\n\r\n get style(): Partial {\r\n return {\r\n backgroundColor: this.backgroundColor,\r\n color: this.textColor\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!./QuoteBlock.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!./QuoteBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./QuoteBlock.vue?vue&type=template&id=2cf53c24&\"\nimport script from \"./QuoteBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./QuoteBlock.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, { 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 styleAsH1!: boolean;\r\n\r\n @Prop({ required: false, type: String, default: 'h2', validator: (value: string) => ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(value) })\r\n 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&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{'o-container--bleed' : _vm.isFirstBlock}},[_c('ImageTextVideoBlockNew',{attrs:{\"content\":_vm.content,\"width-on-screen\":100,\"aspect-ratio\":1440/480,\"is-hero-banner\":true,\"is-first-block\":_vm.isFirstBlock}})],1)}\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\nimport { HeroBannerViewModel } from '@/types/contentServerContract';\r\nimport ImageTextVideoBlock from './ImageTextVideoBlock.vue';\r\nimport ImageTextVideoBlockNew from './ImageTextVideoBlockNew.vue';\r\n@Component({\r\n components: { ImageTextVideoBlock, ImageTextVideoBlockNew }\r\n})\r\nexport default class HeroBannerBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: HeroBannerViewModel;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\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!./HeroBannerBlock.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!./HeroBannerBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HeroBannerBlock.vue?vue&type=template&id=4c974ff4&\"\nimport script from \"./HeroBannerBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./HeroBannerBlock.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.content.headline)?_c('smart-headline',{staticClass:\"mb-10\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.content.headline)+\" \")]):_vm._e(),_c('section',[_c('iframe',{ref:\"jotform\",staticStyle:{\"width\":\"1px\",\"min-width\":\"100%\",\"border\":\"none\"},attrs:{\"title\":_vm.content.headline,\"allowtransparency\":_vm.content.allowTransparency,\"allowfullscreen\":_vm.content.allowFullscreen,\"scrolling\":_vm.content.allowScrolling ? 'yes' : 'no',\"allow\":\"geolocation; microphone; camera\",\"src\":_vm.jotformSrc,\"frameborder\":\"0\"}})])],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 { JotFormBlockViewModel } from '@/types/contentServerContract';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\n\r\n@Component({\r\n components: { SmartHeadline }\r\n})\r\nexport default class JotFormBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: JotFormBlockViewModel;\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 get jotformSrc() {\r\n return `https://form.jotform.com/${this.content.jotFormId}`;\r\n }\r\n\r\n $refs!: {\r\n jotform: any\r\n }\r\n\r\n mounted() {\r\n window.addEventListener('message', this.handleIFrameMessage, false);\r\n }\r\n\r\n beforeDestroy() {\r\n window.removeEventListener('message', this.handleIFrameMessage);\r\n }\r\n\r\n handleIFrameMessage(e: any) {\r\n if (typeof e.data === 'object') { return; }\r\n\r\n const iframe = this.$refs.jotform;\r\n if (!iframe) { return; }\r\n\r\n const args = e.data.split(':');\r\n\r\n const _window = window as any;\r\n\r\n switch (args[0]) {\r\n case 'scrollIntoView':\r\n if (this.isFirstBlock) { iframe.scrollIntoView(); }\r\n break;\r\n case 'setHeight':\r\n iframe.style.height = `${args[1]}px`;\r\n break;\r\n case 'collapseErrorPage':\r\n if (iframe.clientHeight > window.innerHeight) {\r\n iframe.style.height = `${window.innerHeight}px`;\r\n }\r\n break;\r\n case 'loadScript':\r\n {\r\n let src = args[1];\r\n if (args.length > 3) {\r\n src = args[1] + ':' + args[2];\r\n }\r\n const script = document.createElement('script');\r\n script.src = src;\r\n script.type = 'text/javascript';\r\n document.body.appendChild(script);\r\n }\r\n break;\r\n case 'exitFullscreen':\r\n if (_window.document.exitFullscreen) _window.document.exitFullscreen();\r\n else if (_window.document.mozCancelFullScreen) _window.document.mozCancelFullScreen();\r\n else if (_window.document.mozCancelFullscreen) _window.document.mozCancelFullScreen();\r\n else if (_window.document.webkitExitFullscreen) _window.document.webkitExitFullscreen();\r\n else if (_window.document.msExitFullscreen) _window.document.msExitFullscreen();\r\n break;\r\n }\r\n const isJotForm = (e.origin.indexOf('jotform') > -1);\r\n if (isJotForm && 'contentWindow' in iframe && 'postMessage' in iframe.contentWindow) {\r\n const urls = { docurl: encodeURIComponent(document.URL), referrer: encodeURIComponent(document.referrer) };\r\n iframe.contentWindow.postMessage(JSON.stringify({ type: 'urls', value: urls }), '*');\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!./JotFormBlock.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!./JotFormBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./JotFormBlock.vue?vue&type=template&id=00fb7228&\"\nimport script from \"./JotFormBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./JotFormBlock.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('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 activeTab: Tab | null = null;\r\n\r\n tabs: Tab[] = []\r\n\r\n @Prop(String) headerClass!: string\r\n @Prop(String) contentClass!: string\r\n\r\n 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 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=36979eda&\"\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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock }},[_c('div',{staticClass:\"o-grid\"},[_c('div',{staticClass:\"o-grid--item w-full md:w-1/2\",class:{ 'order-last': _vm.blockAlignmentRight}},[(_vm.largeBlock)?_c('ContentBlockContainer',{staticClass:\"only-xs:mt-10 sm:h-full\",attrs:{\"alias\":_vm.largeBlock.alias,\"content\":_vm.largeBlock.content,\"width-on-screen\":50,\"aspect-ratio\":1,\"parent-alias\":_vm.alias,\"index\":0}}):_vm._e()],1),_c('div',{staticClass:\"o-grid--item w-full md:w-1/2\"},[_c('section',{staticClass:\"h-full flex flex-col\"},[(_vm.halfWidthBlocksOne)?_c('content-block-container',{staticClass:\"oneplustwo--height-override only-xs:mt-10\",attrs:{\"alias\":_vm.halfWidthBlocksOne.alias,\"content\":_vm.halfWidthBlocksOne.content,\"width-on-screen\":50,\"aspect-ratio\":2,\"parent-alias\":_vm.alias,\"index\":0,\"aspect-ratio-margins\":{ 'only-xs': 5, 'min-sm': 10 }}}):_vm._e(),(_vm.halfWidthBlocksTwo)?_c('content-block-container',{staticClass:\"mt-10 sm:mt-20\",attrs:{\"alias\":_vm.halfWidthBlocksTwo.alias,\"content\":_vm.halfWidthBlocksTwo.content,\"width-on-screen\":50,\"aspect-ratio\":2,\"parent-alias\":_vm.alias,\"index\":1,\"aspect-ratio-margins\":{ 'only-xs': 5, 'min-sm': 10 }}}):_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\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { HorizontalAlignment, TwoPlusOneBlocksViewModel } from '@/types/contentServerContract';\r\nimport ContentBlockContainer from '@/project/app/blocks/ContentBlockContainer.vue';\r\n\r\n@Component({\r\n components: { ContentBlockContainer }\r\n})\r\nexport default class OnePlusTwoBlocks extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: TwoPlusOneBlocksViewModel;\r\n\r\n @Prop(String) alias!: string;\r\n\r\n @Prop({ required: true, type: Boolean })\r\n isFirstBlock!: boolean;\r\n\r\n get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n get blockAlignmentRight() {\r\n return this.content.largeBlockAlignmentValue !== HorizontalAlignment.Left;\r\n }\r\n\r\n get largeBlock() {\r\n return (this.content?.largeBlock?.length > 0 && this.content.largeBlock[0]) || null;\r\n }\r\n\r\n get halfWidthBlocksOne() {\r\n return (this.content?.halfWidthBlocks?.length > 0 && this.content.halfWidthBlocks[0]) || null;\r\n }\r\n\r\n get halfWidthBlocksTwo() {\r\n return (this.content?.halfWidthBlocks?.length > 1 && this.content.halfWidthBlocks[1]) || 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!./OnePlusTwoBlocks.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!./OnePlusTwoBlocks.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OnePlusTwoBlocks.vue?vue&type=template&id=799dc4cc&\"\nimport script from \"./OnePlusTwoBlocks.vue?vue&type=script&lang=ts&\"\nexport * from \"./OnePlusTwoBlocks.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./OnePlusTwoBlocks.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","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('CIcon',{attrs:{\"name\":\"lyn1\",\"height\":\"22\",\"width\":\"32\",\"alt\":\"\",\"original\":true}})],1),_c('div',{staticClass:\"spin_lyn2\",attrs:{\"aria-hidden\":\"true\"}},[_c('CIcon',{attrs:{\"name\":\"lyn2\",\"height\":\"22\",\"width\":\"32\",\"alt\":\"\",\"original\":true}})],1),_c('div',{staticClass:\"spin_lyn3\",attrs:{\"aria-hidden\":\"true\"}},[_c('CIcon',{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=db7d78cc&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=db7d78cc&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 \"db7d78cc\",\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:\"h-full overflow-hidden\"},[_c('section',{staticClass:\"relative\",style:(_vm.aspectRatioStyling)},[_c('div',{staticClass:\"absolute inset-0\"},[_c('GmapMap',{ref:\"map\",staticClass:\"w-full h-full\",attrs:{\"center\":_vm.center,\"zoom\":_vm.defaultZoom,\"options\":_vm.options}},[_vm._l((_vm.markers),function(marker,index){return _c('GmapMarker',_vm._b({key:index,attrs:{\"title\":marker.data.groupName},on:{\"click\":function($event){return _vm.markerClicked(marker)}}},'GmapMarker',marker,false))}),_c('GmapInfoWindow',{attrs:{\"options\":{\n pixelOffset: { width: 0, height: -25 },\n },\"position\":_vm.infoWindow.position,\"opened\":_vm.infoWindow.open},on:{\"closeclick\":function($event){return _vm.hideInfoWindow()}}},[(_vm.infoWindow.activeMarker)?_c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.hideInfoWindow),expression:\"hideInfoWindow\"}],staticClass:\"p-20 bg-blue-400 text-14 flex flex-col\"},[_c('p',{staticClass:\"font-bold mb-2\"},[_vm._v(\" \"+_vm._s(_vm.infoWindow.activeMarker.data.groupName)+\" \")]),_c('p',{staticClass:\"mb-2\"},[_vm._v(\" \"+_vm._s(_vm.infoWindow.activeMarker.data.address)+\" \")]),_c('p',{staticClass:\"mb-2\"},[_vm._v(\" \"+_vm._s(_vm.infoWindow.activeMarker.data.postalCodeAndCity)+\" \")]),_c('p',{staticClass:\"mb-2\"},[_vm._v(\" \"+_vm._s(_vm.infoWindow.activeMarker.data.country)+\" \")]),_c('p',{staticClass:\"mb-2\"},[_c('a',{attrs:{\"href\":(\"tel:\" + (_vm.infoWindow.activeMarker.data.phoneNumber))}},[_vm._v(\" \"+_vm._s(_vm.infoWindow.activeMarker.data.phoneNumber)+\" \")])]),_c('a',{staticClass:\"underline\",attrs:{\"href\":'mailto:' + _vm.infoWindow.activeMarker.data.email,\"target\":\"_blank\"}},[_vm._v(\" \"+_vm._s(_vm.infoWindow.activeMarker.data.email)+\" \")]),(_vm.infoWindow.activeMarker.data.link)?_c('culture-aware-router-link',{staticClass:\"flex flex-row items-center theme-text-linkcolor underline mt-15\",attrs:{\"to\":_vm.infoWindow.activeMarker.data.link.url,\"target\":_vm.infoWindow.activeMarker.data.link.target}},[_c('span',[_vm._v(_vm._s(_vm.infoWindow.activeMarker.data.link.name))]),_c('CIcon',{staticClass:\"ml-5\",attrs:{\"name\":\"arrow-right\",\"height\":\"10\",\"width\":\"10\"}})],1):_vm._e()],1):_vm._e()])],2)],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport breakpointState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\nimport { MAX_SM } from '@/core/config/breakpointConfig';\r\n\r\nconst mobileAspectRatio = 3 / 2;\r\n\r\n@Component\r\nexport default class AspectRatioBlockContainer extends Vue {\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 required: false,\r\n type: Object\r\n }) aspectRatioMargins!: { [bp: string]: number };\r\n\r\n get isMobile() {\r\n return breakpointState.isBreakpointActive(MAX_SM);\r\n }\r\n\r\n get realAspectRatio(): number {\r\n // For mobile, aspect-ratio is controlled from within.\r\n return this.isMobile ? mobileAspectRatio : this.aspectRatio;\r\n }\r\n\r\n 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 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 get aspectRatioStyling() {\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","var render, staticRenderFns\nimport script from \"./AspectRatioBlockContainer.vue?vue&type=script&lang=ts&\"\nexport * from \"./AspectRatioBlockContainer.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!./AspectRatioBlockContainer.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!./AspectRatioBlockContainer.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\r\nimport { Component, Prop } from 'vue-property-decorator';\r\nimport { MapBlockViewModel, MapLocationBlockViewModel } from '@/types/contentServerContract';\r\nimport AspectRatioBlockContainer from '@/project/app/blocks/AspectRatioBlockContainer.vue';\r\nimport { Map as GmapMap, Marker as GmapMarker, InfoWindow as GmapInfoWindow } from 'gmap-vue';\r\nimport serverContextService from '@/core/serverContext.service';\r\n\r\ninterface Position {\r\n lat: number;\r\n lng: number;\r\n}\r\n\r\n// ref: https://developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions\r\ninterface Marker {\r\n clickable: boolean;\r\n draggable: boolean;\r\n icon: {\r\n url: string;\r\n size: {\r\n width: number;\r\n height: number;\r\n },\r\n scaledSize: {\r\n width: number;\r\n height: number;\r\n }\r\n };\r\n position: Position;\r\n data: MapLocationBlockViewModel;\r\n}\r\n\r\n// ref: https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions\r\ninterface MapOptions {\r\n\r\n tilt?: number;\r\n zoom?: number; // The initial Map zoom level. Valid values: Integers between 0 - 18.\r\n minZoom?: number;\r\n maxZoom?: number;\r\n zoomControl?: boolean; // The enabled/disabled state of the Zoom control.\r\n zoomControlOptions?: {\r\n position: 'BOTTOM_CENTER' | 'BOTTOM_LEFT' | 'BOTTOM_RIGHT' | 'LEFT_BOTTOM' | 'LEFT_CENTER' | 'LEFT_TOP' | 'RIGHT_BOTTOM' | 'RIGHT_CENTER' | 'RIGHT_TOP' | 'TOP_CENTER' | 'TOP_LEFT' | 'TOP_RIGHT';\r\n },\r\n mapTypeControl: boolean;\r\n scaleControl: boolean;\r\n streetViewControl: boolean;\r\n rotateControl: boolean;\r\n fullscreenControl: boolean;\r\n disableDefaultUI: boolean;\r\n draggable: boolean;\r\n clickableIcons: boolean;\r\n scrollwheel?: boolean;\r\n disableDoubleClickZoom?: boolean;\r\n keyboardShortcuts?: boolean;\r\n styles: any[];\r\n}\r\n\r\n@Component({\r\n components: { GmapMap, GmapMarker, GmapInfoWindow }\r\n})\r\nexport default class GoogleMapsBlock extends AspectRatioBlockContainer {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: MapBlockViewModel;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n center: Position = { lat: 55.838395, lng: 12.402816 };\r\n infoWindow: {\r\n activeMarker: Marker | null,\r\n position: Position | null,\r\n open: boolean\r\n } = {\r\n activeMarker: null,\r\n position: null,\r\n open: false\r\n }\r\n\r\n defaultZoom: number = 6;\r\n\r\n markerClicked(marker: Marker) {\r\n this.infoWindow.activeMarker = marker;\r\n this.infoWindow.position = marker.position;\r\n this.infoWindow.open = true;\r\n }\r\n\r\n hideInfoWindow() {\r\n this.infoWindow.open = false;\r\n this.infoWindow.position = null;\r\n this.infoWindow.activeMarker = null;\r\n }\r\n\r\n get markers(): Marker[] {\r\n const markerOffice = require(this.isOprema ? '@/assets/icons/map-marker-turquoise.svg' : '@/assets/icons/map-marker-blue.svg');\r\n const markerOther = require(this.isOprema ? '@/assets/icons/map-marker-black.svg' : '@/assets/icons/map-marker-green.svg');\r\n return (this.content.mapLocations)\r\n .map(({ content }) => content as MapLocationBlockViewModel)\r\n .map(x => ({\r\n clickable: true,\r\n draggable: false,\r\n icon: {\r\n url: x.locationType === 'Office'\r\n ? markerOffice\r\n : markerOther,\r\n size: {\r\n width: 20,\r\n height: 20\r\n },\r\n scaledSize: {\r\n width: 20,\r\n height: 20\r\n }\r\n },\r\n position: {\r\n lat: parseFloat(x.gpsLatitude),\r\n lng: parseFloat(x.gpsLongitude)\r\n },\r\n data: x\r\n } as Marker));\r\n }\r\n\r\n styles =\r\n [\r\n {\r\n featureType: 'administrative',\r\n elementType: 'all',\r\n stylers: [\r\n {\r\n visibility: 'off'\r\n }\r\n ]\r\n },\r\n {\r\n featureType: 'landscape',\r\n elementType: 'all',\r\n stylers: [\r\n {\r\n visibility: 'on'\r\n },\r\n {\r\n color: this.isOprema ? '#c0dfe7' : '#c5d2e0'\r\n }\r\n ]\r\n },\r\n {\r\n featureType: 'landscape',\r\n elementType: 'geometry',\r\n stylers: [\r\n {\r\n visibility: 'on'\r\n }\r\n ]\r\n },\r\n {\r\n featureType: 'landscape',\r\n elementType: 'labels',\r\n stylers: [\r\n {\r\n visibility: 'off'\r\n }\r\n ]\r\n },\r\n {\r\n featureType: 'poi',\r\n elementType: 'all',\r\n stylers: [\r\n {\r\n visibility: 'off'\r\n }\r\n ]\r\n },\r\n {\r\n featureType: 'road',\r\n elementType: 'all',\r\n stylers: [\r\n {\r\n visibility: 'off'\r\n }\r\n ]\r\n },\r\n {\r\n featureType: 'transit',\r\n elementType: 'all',\r\n stylers: [\r\n {\r\n visibility: 'off'\r\n }\r\n ]\r\n },\r\n {\r\n featureType: 'water',\r\n elementType: 'all',\r\n stylers: [\r\n {\r\n color: '#ffffff'\r\n }\r\n ]\r\n }\r\n ];\r\n\r\n get options(): MapOptions {\r\n return {\r\n maxZoom: this.content.maxZoom ? this.content.maxZoom : 9,\r\n minZoom: this.content.minZoom ? this.content.minZoom : 4,\r\n zoomControl: true,\r\n mapTypeControl: false,\r\n scaleControl: false,\r\n streetViewControl: false,\r\n rotateControl: false,\r\n fullscreenControl: false,\r\n disableDefaultUI: true,\r\n draggable: true,\r\n clickableIcons: true,\r\n scrollwheel: false,\r\n disableDoubleClickZoom: true,\r\n keyboardShortcuts: false,\r\n styles: this.styles\r\n };\r\n }\r\n\r\n get isOprema() {\r\n return serverContextService?.isOprema;\r\n }\r\n\r\n async getMap() {\r\n return await this.$refs.map.$mapPromise;\r\n }\r\n\r\n async setBoundsByMarkers() {\r\n const map = await this.getMap();\r\n\r\n var bounds = new window.google.maps.LatLngBounds();\r\n\r\n for (const marker of this.markers) {\r\n bounds.extend(marker.position);\r\n }\r\n\r\n map.fitBounds(bounds);\r\n map.panToBounds(bounds);\r\n\r\n // fitBounds will zoom in as much as possible, so we zoom back out if thats the case\r\n setTimeout(() => {\r\n if (map.getZoom() > this.defaultZoom) {\r\n map.setZoom(this.defaultZoom);\r\n }\r\n }, 500);\r\n }\r\n\r\n async syncCenterLocationWithUser() {\r\n if (!navigator.geolocation) return;\r\n\r\n const map = await this.getMap();\r\n\r\n navigator.geolocation.getCurrentPosition(({ coords }) => {\r\n map.setCenter({\r\n lat: coords.latitude,\r\n lng: coords.longitude\r\n });\r\n });\r\n }\r\n\r\n async mounted() {\r\n await this.$gmapApiPromiseLazy();\r\n\r\n if (this.markers.length) {\r\n this.setBoundsByMarkers();\r\n } else {\r\n this.syncCenterLocationWithUser();\r\n }\r\n }\r\n\r\n $refs!: {\r\n map: any;\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!./GoogleMapsBlock.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!./GoogleMapsBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GoogleMapsBlock.vue?vue&type=template&id=60ff22f8&\"\nimport script from \"./GoogleMapsBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./GoogleMapsBlock.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!./CategoryBlockItem.vue?vue&type=style&index=0&id=5ac999c7&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!./CategoryBlockItem.vue?vue&type=style&index=0&id=5ac999c7&lang=less&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{staticClass:\"o-chrome-container flex flex-col bg-white py-40\",class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock }},[(_vm.headline)?_c('SmartHeadline',{staticClass:\"text-15 md:text-20 text-center mb-30\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.headline)+\" \")]):_vm._e(),_c('div',{staticClass:\"relative\"},[(_vm.rendered && _vm.result)?_c('Swiper',{class:'swiper-' + _vm.id,attrs:{\"id\":_vm.id,\"instance-name\":_vm.id,\"options\":_vm.sliderOptions}},_vm._l((_vm.result.recommendedCategories),function(category,index){return _c('SwiperSlide',{key:index,staticClass:\"c-recommendation-category--item\"},[_c('Interceptor',{staticClass:\"h-full\",attrs:{\"threshold\":0.05},on:{\"visible\":function($event){return _vm.handleSlideVisible(category)}},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar viewed = ref.viewed;\nreturn [(viewed)?_c('CultureAwareRouterLink',{staticClass:\"bg-gray-300 hover:bg-gray-400 u-trans u-trans-bg h-full flex flex-col pt-25 md:pt-30 pb-20 md:pb-25\",attrs:{\"to\":category.url},nativeOn:{\"click\":function($event){return _vm.handleClickCategory(category)}}},[_c('div',{staticClass:\"w-80 h-80 md:w-100 md:h-100 rounded-full relative overflow-hidden mx-auto mb-15 md:mb-22\"},_vm._l((category.images),function(image,imageIndex){return _c('div',{key:imageIndex,staticClass:\"flex absolute w-40 md:w-50 h-40 md:h-50 min-w-30 c-recommendation-category--item-img bg-white\",class:{\n 'left-0': imageIndex === 0 || imageIndex === 3,\n 'right-0': imageIndex === 1 || imageIndex === 2,\n 'top-0': imageIndex === 0 || imageIndex === 1,\n 'bottom-0': imageIndex === 2 || imageIndex === 3,\n 'c-recommendation-category--item-img--even': imageIndex === 1 || imageIndex === 3,\n }},[_c('img',{directives:[{name:\"on-error\",rawName:\"v-on-error\"}],staticClass:\"responsive-icon m-auto\",attrs:{\"src\":_vm.resizeImageByPath(image.uri).x1,\"srcset\":((_vm.resizeImageByPath(image.uri).x1) + \" 1x, \" + (_vm.resizeImageByPath(image.uri).x2) + \" 2x\"),\"loading\":\"lazy\",\"alt\":category.displayName}})])}),0),_c('div',{staticClass:\"font-bold text-15 text-center px-10 md:px-20 hyphenate\"},[_vm._v(\" \"+_vm._s(category.displayName)+\" \")]),_c('div',{staticClass:\"flex text-9 md:text-12 leading-large mt-auto\"},[_c('div',{staticClass:\"w-1/2 text-center\"},[_c('div',{staticClass:\"font-bold\"},[_vm._v(\" \"+_vm._s(_vm.$localeNumberFilter.get(category.productCount))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm.$dictionary.get('Category.Recommendations.ProductsCount'))+\" \")])]),_c('div',{staticClass:\"w-1/2 text-center\"},[_c('div',{staticClass:\"font-bold\"},[_vm._v(\" \"+_vm._s(_vm.$localeNumberFilter.get(category.brandCount))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm.$dictionary.get('Category.Recommendations.BrandsCount'))+\" \")])])])]):_vm._e()]}}],null,true)})],1)}),1):_c('div',{staticClass:\"c-recommendation-category--item\"}),_c('button',{staticClass:\"faded-custom-swiper-button-prev hidden md:block theme-text-linkcolor\",class:_vm.prevButtonSelector,attrs:{\"slot\":\"button-prev\",\"type\":\"button\"},slot:\"button-prev\"},[_c('CIcon',{attrs:{\"name\":\"arrow-thin-left\",\"width\":\"25\",\"height\":\"25\"}})],1),_c('button',{staticClass:\"faded-custom-swiper-button-next hidden md:block theme-text-linkcolor\",class:_vm.nextButtonSelector,attrs:{\"slot\":\"button-next\",\"type\":\"button\"},slot:\"button-next\"},[_c('CIcon',{attrs:{\"name\":\"arrow-thin-right\",\"width\":\"25\",\"height\":\"25\"}})],1)],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\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { CategoryRecommendationsBlockViewModel } from '@/types/contentServerContract';\r\nimport { RecommendedCategoriesViewModel, RecommendedCategoryViewObject } from '@/types/apiServerContract';\r\nimport loggingService from '@/core/logging.service';\r\nimport Api from '@/project/http/Api.service';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport breakpointService from '@/core/responsive/breakpoints/breakpoints.service';\r\nimport responsiveProductImageService from '@/project/product/image/responsiveProductImage.service';\r\nimport { debounce } from 'lodash';\r\nimport GTMService from '@/project/tracking/gtm/GTM.service';\r\n\r\n@Component({\r\n components: { SmartHeadline }\r\n})\r\nexport default class CategoryRecommendationsBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n })\r\n content!: CategoryRecommendationsBlockViewModel;\r\n\r\n @Prop({\r\n required: false,\r\n type: Boolean,\r\n default: false\r\n })\r\n isFirstBlock!: boolean;\r\n\r\n rendered: boolean = false;\r\n activeBreakpoint: string = '';\r\n result: RecommendedCategoriesViewModel | null = null;\r\n debouncedTrackCategoryViewed = debounce(this.doTrackCategoryViewed, 500);\r\n viewedCategories: { name: string, id: string }[] = [];\r\n\r\n get sliderOptions() {\r\n return {\r\n spaceBetween: 12,\r\n slidesPerView: 'auto',\r\n slidesPerGroup: 1,\r\n slidesPerGroupAuto: true,\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 get id() {\r\n return new Date().valueOf();\r\n }\r\n\r\n get prevButtonSelector() {\r\n return 'custom-swiper-button-prev-' + this.id;\r\n }\r\n\r\n 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.$nextTick(() => this.rendered = true);\r\n }\r\n }\r\n\r\n get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n async getCategoryData() {\r\n try {\r\n this.result = await Api.recommendations.recommendByCategory({\r\n categoryIdFilterPositiveList: this.content.categoryIdFilterPositiveList,\r\n categoryIdFilterNegativeList: this.content.categoryIdFilterNegativeList,\r\n brandIdFilterList: this.content.brandIdFilterList,\r\n displayedAtLocation: this.content.displayLocation,\r\n periodDays: this.content.interval,\r\n popularityType: this.content.popularity,\r\n categoryCount: this.content.categoryCount\r\n });\r\n } catch (e) {\r\n loggingService.error(e);\r\n }\r\n }\r\n\r\n get headline(): string | undefined {\r\n return this.content?.headline;\r\n }\r\n\r\n resizeImageByPath(path: string): { x1: string, x2: string } {\r\n return {\r\n x1: responsiveProductImageService.formatImageUrl(path, responsiveProductImageService.ImageSizePlaceholderValues.W86),\r\n x2: responsiveProductImageService.formatImageUrl(path, responsiveProductImageService.ImageSizePlaceholderValues.W172)\r\n };\r\n }\r\n\r\n handleClickCategory(category:RecommendedCategoryViewObject) {\r\n GTMService.trackCreativeClick(`recommendedCategory:${category.displayName}`, `recommendedCategory:${category.categoryId}`);\r\n }\r\n\r\n handleSlideVisible(category:RecommendedCategoryViewObject) {\r\n this.viewedCategories.push({ name: `recommendedCategory:${category.displayName}`, id: `recommendedCategory:${category.categoryId}` });\r\n this.debouncedTrackCategoryViewed();\r\n }\r\n\r\n doTrackCategoryViewed() {\r\n const categories = [...this.viewedCategories];\r\n this.viewedCategories = [];\r\n GTMService.trackCreativeView(categories);\r\n }\r\n\r\n created() {\r\n this.getCategoryData();\r\n }\r\n\r\n mounted() {\r\n this.activeBreakpoint = breakpointService.getActiveBreakpoint();\r\n breakpointService.addListener(this.handleBreakpointChange);\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","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!./CategoryRecommendationsBlock.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!./CategoryRecommendationsBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CategoryRecommendationsBlock.vue?vue&type=template&id=0e109f89&\"\nimport script from \"./CategoryRecommendationsBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./CategoryRecommendationsBlock.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CategoryRecommendationsBlock.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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"h-full\",class:{ 'flex flex-col': _vm.shouldUseFlexBox && _vm.hasTextContent,\n 'flex w-full': _vm.shouldUseFlexBox && !_vm.hasTextContent,\n 'overflow-hidden': !_vm.hasTextContent },style:(_vm.styleForParentContainer)},[(_vm.showCaptionAsContentTitle && _vm.content && _vm.content.caption)?_c('SmartHeadline',{staticClass:\"text-18 md:text-34 mb-10\",attrs:{\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.content.caption)+\" \")]):_vm._e(),(_vm.content)?_c('section',{ref:\"element\",staticClass:\"relative\",class:_vm.elementClasses,style:(_vm.styleForImageBackground)},[(_vm.content.vimeoVideoId || _vm.content.video)?_c('div',{class:{\n 'absolute inset-0': _vm.hasNoVideoOrVideoHasBeenLoaded,\n 'relative flex flex-col h-full flex-1': !_vm.content.vimeoVideoId\n },style:(_vm.videoContainerStyle)},[(_vm.content.video)?_c('video',{ref:\"videoMount\",staticClass:\"video flex-1\",class:{'video--loaded absolute inset-0': _vm.loadingVideo === false},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\",staticClass:\"video\",class:{'video--loaded absolute inset-0': _vm.loadingVideo === false}}):_vm._e()]):_vm._e(),(_vm.hasTextContent || _vm.hasNoVideoOrVideoHasBeenLoaded)?_c('section',{staticClass:\"content-wrapper flex flex-col h-full w-full justify-center\",class:{ 'has-controls': _vm.showHtmlCustomControls,\n 'playing': _vm.isPlaying,\n 'my-auto': _vm.isHeroBanner && _vm.hasTextContent,\n 'wide-banner md:py-20 md:pl-70 md:pr-10': _vm.isWithinWideBannerAspectRatio,\n 'py-60 md:py-20 lg:py-30': (!_vm.isWithinWideBannerAspectRatio && !_vm.isBackgroundImageBehaviorImageDimensions) },style:(_vm.contentWrapperStyle)},[(_vm.showShim)?_c('section',{staticClass:\"absolute inset-0 pointer-events-none\",style:(_vm.shimColor)}):_vm._e(),(_vm.renderContent)?_c('div',{staticClass:\"flex flex-col justify-center\",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._v(\" \"+_vm._s(_vm.content.caption)+\" \")]):_vm._e(),(_vm.content.header)?_c('SmartHeadline',{directives:[{name:\"font-content-sync\",rawName:\"v-font-content-sync\",value:(_vm.headerFontSyncData),expression:\"headerFontSyncData\"}],staticClass:\"text-wrap-pretty\",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._v(\" \"+_vm._s(_vm.content.header)+\" \")]):_vm._e(),(_vm.content.subheader)?_c('p',{staticClass:\"leading-normal whitespace-pre-line\",style:(_vm.colorStyle(_vm.content.subheaderColor))},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.content.subheader)}})]):_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,\"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,\"on-click-event\":_vm.clickHandler},on:{\"click\":_vm.clickOpenVideoOverlay}}):_vm._e()],1)])]):_vm._e(),(_vm.showHtmlCustomControls)?_c('div',{staticClass:\"video-controls flex justify-center z-1\",class:{ 'mt-20': _vm.renderContent }},[_c('button',{staticClass:\"controls\",on:{\"click\":function($event){return _vm.toggleVideoState()}}},[(!_vm.isPlaying)?[_c('CIcon',{staticClass:\"play\",attrs:{\"name\":\"play\",\"width\":\"30\",\"height\":\"30\"}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Play\")])]:[_c('CIcon',{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._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\r\nimport { Vue, Component, Prop, Watch } from 'vue-property-decorator';\r\nimport { ContentWidth, HeroBannerViewModel, HorizontalAlignment, SubheaderFontSize, Media } 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 videoFullscreenOverlayService from '@/project/modals/overlays/VimeoVideoFullscreenOverlay.service';\r\nimport responsiveImageService from '@/core/responsive/image/responsiveImage.service';\r\nimport serverContextService from '@/core/serverContext.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 ImageTextVideoBlockNew 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 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 get shouldUseFlexBox() {\r\n return this.useFlexBox && !this.isMobile;\r\n }\r\n\r\n video: VimeoPlayer | VideoElm | null = null;\r\n isPlaying: boolean = false;\r\n loadingVideo: boolean = true;\r\n contentBackgroundColor: string = '';\r\n vimeoVideoAspectRatio: { width: number, height: number } | null = null;\r\n backgroundImageWidth: number | null = null;\r\n rendered: boolean = false;\r\n\r\n get isWithinWideBannerAspectRatio() {\r\n return this.aspectRatio >= wideBannerAspectRatio;\r\n }\r\n\r\n get isMobile() {\r\n return breakpointState.isBreakpointActive(MAX_SM);\r\n }\r\n\r\n get hasTextContent(): boolean {\r\n // By purpose: dont look at callToAction\r\n return !!(this.content?.header || this.content?.subheader || this.content?.caption);\r\n }\r\n\r\n get elementClasses(): string[] {\r\n const classes: string[] = [];\r\n if (this.content?.vimeoVideoId || this.content?.video || this.showBackgroundImage) {\r\n classes.push('has-video-or-image');\r\n }\r\n if (this.shouldUseFlexBox && this.hasTextContent) {\r\n classes.push('flex flex-col flex-1');\r\n }\r\n if (this.isHeroBanner && this.hasTextContent) {\r\n classes.push('flex');\r\n }\r\n if ((this.shouldUseFlexBox && !this.hasTextContent) || (this.hasTextContent && !this.showBackgroundImage)) {\r\n classes.push('h-full');\r\n }\r\n if (this.showBackgroundImage && (!this.isHeroBanner && !this.isBackgroundImageBehaviorImageDimensions)) {\r\n classes.push('min-h-280 md:min-h-350 lg:min-h-400');\r\n }\r\n if (this.showBackgroundImage) {\r\n classes.push('md:h-full');\r\n }\r\n return classes;\r\n }\r\n\r\n get isBackgroundImageBehaviorCover(): boolean {\r\n return this.content?.backgroundImageBehavior === 'cover';\r\n }\r\n\r\n get isBackgroundImageBehaviorImageDimensions(): boolean {\r\n return this.content?.backgroundImageBehavior === 'imageDimensions';\r\n }\r\n\r\n get styleForParentContainer(): Partial {\r\n const styling: Partial = {};\r\n if (this.video) {\r\n styling.backgroundColor = this.backgroundColorStyle.backgroundColor;\r\n const elWidth = this.$el?.clientWidth || 0;\r\n const minHeight = elWidth / ((this.vimeoVideoAspectRatio && this.vimeoVideoAspectRatio.width / this.vimeoVideoAspectRatio.height) || 16 / 9);\r\n styling.minHeight = `${minHeight}px`;\r\n }\r\n return styling;\r\n }\r\n\r\n get styleForImageBackground(): Partial | null {\r\n const styling: Partial = {};\r\n if (this.content?.backgroundImage) {\r\n const backgroundImageBehavior: string = this.content.backgroundImageBehavior;\r\n let backgroundSize: string = 'cover';\r\n let aspectRatio: null | number = this.isMobile ? this.content.backgroundImage.width / this.content.backgroundImage.height : null;\r\n\r\n if (this.isBackgroundImageBehaviorImageDimensions) {\r\n // Set min-height if HalfWidthBlock has very little text next to an image\r\n const elWidth = this.$el?.clientWidth || 0;\r\n const imageAspectRatio = this.content.backgroundImage.width / this.content.backgroundImage.height;\r\n const minHeight = elWidth / imageAspectRatio;\r\n styling.minHeight = `${minHeight}px`;\r\n backgroundSize = 'contain';\r\n } else if (backgroundImageBehavior === 'cover') {\r\n aspectRatio = null;\r\n } else if (backgroundImageBehavior === 'alignTop') {\r\n this.content.backgroundImage.focalPoint.top = 0;\r\n backgroundSize = '100% auto';\r\n } else if (backgroundImageBehavior === 'center') {\r\n backgroundSize = '100% auto';\r\n }\r\n\r\n let newBackgroundWidth = this.content.backgroundImage.width;\r\n let newBackgroundHeight = this.content.backgroundImage.height;\r\n // Upscale image from element width, because we use background-size: cover that \"might\" (most likely will) scale the image a bit.\r\n // Using a low number (e.g. 1.2) makes images look bad in most cases\r\n if (this.backgroundImageWidth !== null) {\r\n const upsizeFactor = 1.5;\r\n const doResize = this.content.backgroundImage.width > this.backgroundImageWidth;\r\n const allowUpscale: boolean = backgroundImageBehavior === 'cover' && this.content.backgroundImage.width > this.backgroundImageWidth * upsizeFactor;\r\n\r\n if (allowUpscale && doResize) {\r\n newBackgroundWidth = Math.round(this.backgroundImageWidth * upsizeFactor);\r\n newBackgroundHeight = Math.round(this.content.backgroundImage.height / this.content.backgroundImage.width * this.backgroundImageWidth * upsizeFactor);\r\n }\r\n }\r\n\r\n const backgroundImageUrl = this.formatImageUrl(this.content.backgroundImage, newBackgroundWidth, newBackgroundHeight, 80);\r\n styling.flex = '1';\r\n styling.backgroundSize = backgroundSize;\r\n styling.backgroundPosition = `${100 * this.content.backgroundImage.focalPoint.left}% ${100 * this.content.backgroundImage.focalPoint.top}%`;\r\n styling.backgroundRepeat = 'no-repeat';\r\n // @ts-ignore\r\n styling.aspectRatio = aspectRatio;\r\n if (this.rendered) {\r\n styling.backgroundImage = `url(${backgroundImageUrl})`;\r\n }\r\n }\r\n styling.backgroundColor = this.backgroundColorStyle.backgroundColor;\r\n if (this.content?.vimeoVideoId && this.vimeoVideoAspectRatio !== null) {\r\n styling.height = '100%';\r\n } else if (this.isHeroBanner && this.content) {\r\n if (!this.hasTextContent && this.content.backgroundImage) {\r\n // Hero banner without text\r\n // @ts-ignore\r\n styling.aspectRatio = this.content.backgroundImage.width / this.content.backgroundImage.height;\r\n } else if (this.content.subheader.length < 80) {\r\n // Force old aspect ratio to Hero Banner if there is only a limited amount of text\r\n const paddingPct = (1 / this.realAspectRatio) * 100;\r\n // @ts-ignore\r\n styling.aspectRatio = `calc(${paddingPct}% - ${this.margin}px)`;\r\n }\r\n }\r\n return styling;\r\n }\r\n\r\n formatImageUrl(image: Media, width: number, height: number, quality?: number): string {\r\n const imageUrl = image.url;\r\n const focalPoint = image.focalPoint;\r\n const firstSeparator = !imageUrl || imageUrl.indexOf('?') === -1 ? '?' : '&';\r\n const focal = focalPoint ? `¢er=${focalPoint.top},${focalPoint.left}` : '';\r\n const qualityFormatted = quality ? `&quality=${quality}` : '';\r\n const format = image.extension ? `&format=${image.extension}` : '';\r\n return `${this.absoluteImageUrl(imageUrl)}${firstSeparator}width=${width}&height=${height}${format}${focal}${qualityFormatted}`;\r\n }\r\n\r\n absoluteImageUrl(imageUrl: string): string {\r\n return responsiveImageService.getBaseUrl() + imageUrl;\r\n }\r\n\r\n get realAspectRatio(): number {\r\n if (this.shouldUseFlexBox) return 0;\r\n if (this.content?.backgroundImage && this.content.backgroundImageBehavior !== 'cover') {\r\n return this.content.backgroundImage.width / this.content.backgroundImage.height;\r\n }\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.width / this.vimeoVideoAspectRatio.height) : this.aspectRatio;\r\n }\r\n\r\n get realWidthOnScreen(): number {\r\n // For mobile, width is controlled from within.\r\n return this.isMobile ? 100 : this.widthOnScreen;\r\n }\r\n\r\n 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 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 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 async mounted() {\r\n this.loadingVideo = !!(this.content?.video || this.content?.vimeoVideoId);\r\n if (!this.content) return; // For normal blocks (not ad) it will always be not null\r\n this.rendered = false;\r\n if (this.content.backgroundImage) {\r\n this.backgroundImageWidth = this.$el.clientWidth;\r\n }\r\n this.initVideo();\r\n this.$nextTick(() => this.rendered = true);\r\n }\r\n\r\n initVideo() {\r\n if (this.content?.video) {\r\n this.loadingVideo = true;\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 this.loadingVideo = true;\r\n this.vimeoVideoAspectRatio = null;\r\n this.video = null;\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: this.content.showVideoControls,\r\n title: false,\r\n byline: false,\r\n portrait: false,\r\n color: ((this.isOprema ? tailwind.theme.colors.opremayellow['500'] : tailwind.theme.colors.blue['500']) || '').replace('#', ''),\r\n autopause: !this.content.isBackgroundVideo // Ensure that all videos on a page will autoplay\r\n };\r\n this.$nextTick(() => {\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('error', (e) => {\r\n console.log('vimeo video error', e);\r\n });\r\n this.video.on('loaded', () => {\r\n this.getVimeoVideoAspectRatio();\r\n });\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 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 async getVimeoVideoAspectRatio() {\r\n setTimeout(() => {\r\n this.delayedVideoAspectRatio();\r\n this.loadingVideo = false;\r\n }, 200); // 200 seems to be the magic number after the video is loaded.\r\n }\r\n\r\n async delayedVideoAspectRatio() {\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: width, height: height };\r\n }\r\n }\r\n\r\n get isOprema() {\r\n return serverContextService?.isOprema;\r\n }\r\n\r\n 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 get hasNoVideoOrVideoHasBeenLoaded(): boolean {\r\n if (this.content?.vimeoVideoId || this.content?.video) {\r\n return this.loadingVideo === false && this.vimeoVideoAspectRatio !== null && this.rendered;\r\n }\r\n return true;\r\n }\r\n\r\n 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 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 get backgroundColorStyle(): { backgroundColor: string } {\r\n let result = 'transparent';\r\n\r\n if (this.content && this.isColorDefined(this.content.backgroundColor)) {\r\n result = this.hexToRgbWithDefault(this.content.backgroundColor);\r\n }\r\n\r\n return ({\r\n backgroundColor: result\r\n });\r\n }\r\n\r\n get contentWrapperStyle(): { backgroundColor: string } {\r\n let result = 'transparent';\r\n\r\n if (this.content && !this.content.backgroundImage && this.isColorDefined(this.content.backgroundColor)) {\r\n result = this.hexToRgbWithDefault(this.content.backgroundColor);\r\n }\r\n\r\n return ({\r\n backgroundColor: result\r\n });\r\n }\r\n\r\n 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 // get backgroundImageFormat() {\r\n // return extensionIsGifOrUndefined(this.content?.backgroundImage);\r\n // }\r\n\r\n 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 get ctaColor(): string | null {\r\n return this.content?.callToActionColor || null;\r\n }\r\n\r\n 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 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 get alignRight(): boolean {\r\n return this.content?.contentAligmentValue === HorizontalAlignment.Right; // Left is default\r\n }\r\n\r\n 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 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 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 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 get shimColor(): Partial {\r\n return { backgroundColor: this.content?.shimColor, opacity: '0.3' };\r\n }\r\n\r\n get videoContainerMoreNarrowThanVideo() {\r\n return this.realAspectRatio < videoAspectRatio;\r\n }\r\n\r\n get videoContainerStyle(): Partial {\r\n if (!this.content) return {};\r\n else if (this.content.vimeoVideoId && !this.isHeroBanner) return {};\r\n else if (this.content.vimeoVideoId && this.isHeroBanner) {\r\n return this.vimeoVideoAspectRatio ? {\r\n // @ts-ignore\r\n aspectRatio: this.vimeoVideoAspectRatio.width / this.vimeoVideoAspectRatio.height\r\n } : {};\r\n }\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 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 get showHtmlCustomControls() {\r\n return this.content && this.loadingVideo === false && this.video && this.content.isBackgroundVideo === false && this.content.showVideoControls === false;\r\n }\r\n\r\n get showCaptionAsContentTitle() {\r\n return this.content?.captionLocation === 'Top';\r\n }\r\n\r\n get showBackgroundImage(): boolean {\r\n return !!(this.content?.backgroundImage?.url ?? false);\r\n }\r\n\r\n 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 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 get showCallToActionBlock(): boolean {\r\n return !this.showCallToActionButton && (!!this.content?.callToAction?.url ?? false);\r\n }\r\n\r\n get showCallToActionVideoOverlayButton(): boolean {\r\n return !!(this.content?.overlayVimeoVideoId && this.content?.overlayVimeoCta);\r\n }\r\n\r\n get isTakeOverBanner() {\r\n return this.isFirstBlock && themeService.isTakeOverEnabled;\r\n }\r\n\r\n 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!./ImageTextVideoBlockNew.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!./ImageTextVideoBlockNew.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ImageTextVideoBlockNew.vue?vue&type=template&id=28389042&scoped=true&\"\nimport script from \"./ImageTextVideoBlockNew.vue?vue&type=script&lang=ts&\"\nexport * from \"./ImageTextVideoBlockNew.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ImageTextVideoBlockNew.vue?vue&type=style&index=0&id=28389042&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 \"28389042\",\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:\"w-full\",class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock, 'o-container--bleed': _vm.parentAlias }},[_c('div',{class:{ 'py-35 px-40 has-background': _vm.backgroundColor, 'px-10 sm:px-0': !_vm.backgroundColor },style:(_vm.style)},[_c('div',{staticClass:\"w-full break-words\"},[(_vm.content.headline)?_c('smart-headline',{staticClass:\"mb-10\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.content.headline)+\" \")]):_vm._e(),_c('section',{directives:[{name:\"delegate-html-links\",rawName:\"v-delegate-html-links\"},{name:\"delegate-on-img-error\",rawName:\"v-delegate-on-img-error\"}],ref:\"htmlContent\",staticClass:\"wysiwyg text-block\",domProps:{\"innerHTML\":_vm._s(_vm.bodyText(_vm.content.bodyText))}}),(_vm.content.callToAction)?_c('call-to-action',{staticClass:\"cta--rounded mt-20\",attrs:{\"hex-color\":_vm.content.callToActionColor,\"text\":_vm.content.callToAction.name,\"href\":_vm.content.callToAction.url,\"target\":_vm.content.callToAction.target}}):_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 { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { FullWidthTextBlockViewModel } from '@/types/contentServerContract';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport tableHtmlService from './tableHtml.service';\r\nimport { hexToRgbValues, luma } from '@/core/color/color.service';\r\nimport tailwind from '@/styling/tailwind.config';\r\n\r\n@Component({\r\n components: { SmartHeadline }\r\n})\r\nexport default class FullWidthTextBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: FullWidthTextBlockViewModel;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n @Prop({\r\n required: false,\r\n type: String\r\n }) parentAlias!: string;\r\n\r\n get backgroundColor() {\r\n return this.content.customBackgroundColor\r\n ? this.content.customBackgroundColor\r\n : this.content.backgroundColor ? '#' + this.content.backgroundColor : undefined;\r\n }\r\n\r\n get textColor() {\r\n if (!this.backgroundColor) return undefined;\r\n const { red, green, blue } = hexToRgbValues(this.backgroundColor);\r\n const isDarkBackground = luma(red, green, blue) <= 0.5;\r\n return isDarkBackground ? tailwind.theme.colors.white : tailwind.theme.colors.black;\r\n }\r\n\r\n get style(): Partial {\r\n return {\r\n backgroundColor: this.backgroundColor,\r\n color: this.textColor\r\n };\r\n }\r\n\r\n get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n bodyText(html: string): string {\r\n return tableHtmlService.wrapTableInOuterDivs(html);\r\n }\r\n\r\n $refs!: Vue['$refs'] & {\r\n htmlContent: HTMLElement\r\n }\r\n\r\n mounted() {\r\n tableHtmlService.registerTableOverflow(this.$refs.htmlContent);\r\n }\r\n\r\n beforeDestroy() {\r\n tableHtmlService.unregisterTableOverflow(this.$refs.htmlContent);\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!./FullWidthTextBlock.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!./FullWidthTextBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FullWidthTextBlock.vue?vue&type=template&id=4a0341ec&\"\nimport script from \"./FullWidthTextBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./FullWidthTextBlock.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',{staticClass:\"relative w-full overflow-visible\"},[(_vm.content.headline && _vm.campaigns.length)?_c('SmartHeadline',{staticClass:\"mb-10\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.content.headline)+\" \")]):_vm._e(),_c('Swiper',{class:'swiper-' + _vm.id,attrs:{\"id\":_vm.id,\"instance-name\":_vm.id,\"options\":_vm.sliderOptions}},_vm._l((_vm.campaigns),function(campaign,index){return _c('SwiperSlide',{key:index,staticClass:\"c-campaigns--wrapper pt-10\"},[_c('CampaignTeaser',{attrs:{\"content\":campaign,\"icon-in-image\":true,\"force-image-thumb\":_vm.anyCampaignWithImageOrIcon}})],1)}),1),_c('button',{staticClass:\"custom-swiper-button-prev hidden md:block\",class:_vm.prevButtonSelector,attrs:{\"slot\":\"button-prev\",\"type\":\"button\"},slot:\"button-prev\"},[_c('CIcon',{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('CIcon',{attrs:{\"name\":\"arrow-thin-right\",\"width\":\"25\",\"height\":\"25\"}})],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\r\nimport { CampaignsViewModel } from '@/types/contentServerContract';\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport CampaignTeaser from '@/project/app/content-pages/CampaignTeaser.vue';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\n\r\n@Component({\r\n components: { CampaignTeaser, SmartHeadline }\r\n})\r\nexport default class LatestCampaignsBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: CampaignsViewModel;\r\n\r\n @Prop({\r\n required: false,\r\n default: false,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n get campaigns() {\r\n if (!this.content.firstCampaign) {\r\n return [...this.content.campaigns];\r\n }\r\n return [this.content.firstCampaign, ...this.content.campaigns];\r\n }\r\n\r\n get anyCampaignWithImageOrIcon(): boolean {\r\n return !!this.campaigns.find(c => c.image?.url || (c.showIcon && c.iconUrl));\r\n }\r\n\r\n get id() {\r\n return 'latest-campaigns-block-' + new Date().valueOf();\r\n }\r\n\r\n get prevButtonSelector() {\r\n return 'custom-swiper-button-prev-' + this.id;\r\n }\r\n\r\n get nextButtonSelector() {\r\n return 'custom-swiper-button-next-' + this.id;\r\n }\r\n\r\n get sliderOptions() {\r\n return {\r\n spaceBetween: 20,\r\n slidesPerView: 'auto',\r\n slidesPerGroup: 1,\r\n loop: false,\r\n loopFillGroupWithBlank: false,\r\n watchSlidesVisibility: true,\r\n watchOverflow: true,\r\n setWrapperSize: false,\r\n autoHeight: false,\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!./LatestCampaignsBlock.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!./LatestCampaignsBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LatestCampaignsBlock.vue?vue&type=template&id=82656472&scoped=true&\"\nimport script from \"./LatestCampaignsBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./LatestCampaignsBlock.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LatestCampaignsBlock.vue?vue&type=style&index=0&id=82656472&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 \"82656472\",\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:\"tabbed-content\"},[_c('Tabs',{attrs:{\"header-class\":\"mb-15\"}},_vm._l((_vm.content.tabs),function(tab,index){return _c('Tab',{key:index,attrs:{\"name\":tab.content.headline,\"keep-alive\":tab.content.keepAlive}},[_c('block-list',{attrs:{\"blocks\":tab.content.blocks,\"enable-container\":false}})],1)}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { TabbedContentBlockViewModel } from '@/types/contentServerContract';\r\nimport Tabs from '@/core/ui-components/tabs/Tabs.vue';\r\nimport Tab from '@/core/ui-components/tabs/Tab.vue';\r\n\r\n@Component({\r\n components: { Tabs, Tab }\r\n})\r\nexport default class TabbedContentBlock extends Vue {\r\n @Prop({ required: true, type: Object })\r\n content!: TabbedContentBlockViewModel;\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!./TabbedContentBlock.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!./TabbedContentBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TabbedContentBlock.vue?vue&type=template&id=6c83d80c&\"\nimport script from \"./TabbedContentBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./TabbedContentBlock.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!./BrandRecommendationsBlock.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!./BrandRecommendationsBlock.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 _c('div',[(_vm.headline)?_c('SmartHeadline',{staticClass:\"mb-10 only-xs:ml-20 only-xs:mb-20\",class:[{ 'mt-20': _vm.isFirstBlock }, _vm.headlineClasses],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('CIcon',{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('CIcon',{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.$dictionary.get('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: String,\r\n default: 'text-18 md:text-36 font-regular'\r\n })\r\n headlineClasses!: string;\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 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 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 get id() {\r\n return new Date().valueOf();\r\n }\r\n\r\n get prevButtonSelector() {\r\n return 'custom-swiper-button-prev-' + this.id;\r\n }\r\n\r\n 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 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=589c5ca0&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=589c5ca0&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 \"589c5ca0\",\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.messages.length > 0)?_c('div',[_vm._t(\"default\",function(){return [_c('ul',{staticClass:\"text-red-500 text-12 font-medium list-reset\"},_vm._l((_vm.messages),function(message,ix){return _c('li',{key:ix,staticClass:\"mt-15\"},[_vm._v(\" \"+_vm._s(_vm.getMessage(message.message))+\" \"),(_vm.errorId)?[_vm._v(\" [ \"+_vm._s(_vm.errorId)+\"] \")]:_vm._e()],2)}),0)]},{\"messages\":_vm.messages,\"deleteMessage\":_vm.deleteMessageAtIndex})],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport bus from '@/core/bus';\r\nimport { ClientMessage, ValidationErrorEvent, ValidationErrorEventKey } from '@/core/messages/types';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\n\r\n@Component\r\nexport default class WebApiMessage extends Vue {\r\n messages: ClientMessage[] = [];\r\n errorId: string = '';\r\n @Prop({\r\n required: true\r\n })\r\n id!: string;\r\n\r\n created() {\r\n bus.on(ValidationErrorEventKey, this.onMessages);\r\n }\r\n\r\n deleteMessageAtIndex(index: number) {\r\n this.messages.splice(index, 1);\r\n }\r\n\r\n onMessages(validationErrorEvent: ValidationErrorEvent) {\r\n if (validationErrorEvent.messagesId === this.id) {\r\n this.messages = validationErrorEvent.messages;\r\n this.errorId = validationErrorEvent.errorId;\r\n validationErrorEvent.handled();\r\n }\r\n }\r\n\r\n 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 destroyed() {\r\n bus.off(ValidationErrorEventKey, this.onMessages);\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!./WebApiMessage.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!./WebApiMessage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WebApiMessage.vue?vue&type=template&id=b56bf54e&\"\nimport script from \"./WebApiMessage.vue?vue&type=script&lang=ts&\"\nexport * from \"./WebApiMessage.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',{staticClass:\"pt-20\",class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock }},[_c('div',{staticClass:\"o-grid\",class:{ '-row-gutter': false }},_vm._l((_vm.filteredBlocks),function(block,index){return _c('section',{key:block._uid,staticClass:\"o-grid--item w-full md:w-1/2 mb-20\"},[_c('ContentBlockContainer',{attrs:{\"index\":index,\"alias\":block.alias,\"content\":block.content,\"width-on-screen\":50,\"aspect-ratio\":710/480,\"parent-alias\":_vm.alias,\"is-first-block\":_vm.isFirstBlock,\"use-flex-box\":_vm.isSiblingVimeoVideo(index)},on:{\"contentLoadError\":function($event){return _vm.contentLoadError(block._uid)}}})],1)}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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 { HalfWidthBlocksViewModel, HeroBannerViewModel, JsonContent } from '@/types/contentServerContract';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport ContentBlockContainer from '@/project/app/blocks/ContentBlockContainer.vue';\r\n\r\ninterface JsonContentWithUniqueKey extends JsonContent{\r\n _uid: number;\r\n}\r\n\r\n@Component({\r\n components: { ContentBlockContainer }\r\n})\r\nexport default class HalfWidthBlocks extends Vue {\r\n failingBlocks: number[] = [];\r\n\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: HalfWidthBlocksViewModel;\r\n\r\n @Prop(String) alias!: string;\r\n\r\n @Prop({ required: true, type: Boolean })\r\n isFirstBlock!: boolean;\r\n\r\n // Vimeo videos are not allowed to be cropped, therefor we always respect their aspect ratio\r\n // and then the sibling has to use flexbox to align to its height\r\n isSiblingVimeoVideo(index: number) {\r\n const siblingIndex = index % 2 === 0 ? index + 1 : index - 1;\r\n const sibling = this.blocks[siblingIndex]?.content as HeroBannerViewModel;\r\n return sibling && !!sibling.vimeoVideoId;\r\n }\r\n\r\n get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n get blocks(): JsonContentWithUniqueKey[] {\r\n return this.content?.blocks?.map((b, ix) => {\r\n return ({\r\n ...b,\r\n _uid: ix\r\n });\r\n }) ?? [];\r\n }\r\n\r\n get filteredBlocks(): JsonContentWithUniqueKey[] {\r\n return this.blocks.filter(b => !this.failingBlocks.includes(b._uid));\r\n }\r\n\r\n contentLoadError(uid: number) {\r\n this.failingBlocks.push(uid);\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!./HalfWidthBlocks.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!./HalfWidthBlocks.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HalfWidthBlocks.vue?vue&type=template&id=ede80ffa&\"\nimport script from \"./HalfWidthBlocks.vue?vue&type=script&lang=ts&\"\nexport * from \"./HalfWidthBlocks.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!./CondensedProductList.vue?vue&type=style&index=0&id=589c5ca0&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=589c5ca0&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!./LatestCampaignsBlock.vue?vue&type=style&index=0&id=82656472&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!./LatestCampaignsBlock.vue?vue&type=style&index=0&id=82656472&lang=less&scoped=true&\"","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 }","\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","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!./BrandsBlock.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!./BrandsBlock.vue?vue&type=style&index=0&lang=less&\"","module.exports = __webpack_public_path__ + \"img/map-marker-black.440a8478.svg\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock }},[_c('div',{staticClass:\"flex flex-col\",class:[{ 'bg-white': !_vm.backgroundColor, 'p-20 md:p-30 lg:p-40': _vm.isInHalfWidth === false && _vm.content.headline, 'p-10 lg:p-20': _vm.isInHalfWidth === true && _vm.content.headline }, _vm.wrapperClass],style:(_vm.style)},[_c('div',[(_vm.content.headline)?_c('SmartHeadline',{staticClass:\"ml-15 md:ml-0 font-regular\",class:{'my-30 text-18 md:text-36': !_vm.isInHalfWidth, 'my-10 text-16 md:text-24': _vm.isInHalfWidth},attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.content.headline)+\" \")]):_vm._e()],1),_c('div',{staticClass:\"my-auto\"},[_c('div',{staticClass:\"flex flex-wrap justify-center\",class:_vm.pointsClass},_vm._l((_vm.content.uniqueSellingPointItems),function(item,ix){return _c('UniqueSellingPointItem',{key:ix,class:[_vm.itemClasses, {'my-30 px-20 md:px-30': !_vm.isInHalfWidth, 'my-10 px-10': _vm.isInHalfWidth}],attrs:{\"content\":item.content,\"text-style\":_vm.itemTextStyle}})}),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, Component, Prop } from 'vue-property-decorator';\r\nimport { UniqueSellingPointBlocksViewModel } from '@/types/contentServerContract';\r\nimport UniqueSellingPointItem from './UniqueSellingPointItem.vue';\r\nimport { hexToRgbValues, luma } from '@/core/color/color.service';\r\nimport tailwind from '@/styling/tailwind.config';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\n\r\n@Component({\r\n components: { SmartHeadline, UniqueSellingPointItem }\r\n})\r\nexport default class UniqueSellingPointBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: UniqueSellingPointBlocksViewModel;\r\n\r\n @Prop({ required: true, type: Boolean })\r\n isFirstBlock!: boolean;\r\n\r\n @Prop({ type: Boolean })\r\n isInHalfWidth!: boolean;\r\n\r\n @Prop({ type: String })\r\n wrapperClass!: string;\r\n\r\n @Prop({ type: String })\r\n pointsClass!: string;\r\n\r\n get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n get backgroundColor() {\r\n return this.content.customBackgroundColor\r\n ? this.content.customBackgroundColor\r\n : this.content.backgroundColor ? '#' + this.content.backgroundColor : undefined;\r\n }\r\n\r\n get textColor() {\r\n if (!this.backgroundColor) return undefined;\r\n const { red, green, blue } = hexToRgbValues(this.backgroundColor);\r\n const isDarkBackground = luma(red, green, blue) <= 0.5;\r\n return isDarkBackground ? tailwind.theme.colors.white : tailwind.theme.colors.black;\r\n }\r\n\r\n get itemTextStyle(): Partial | undefined {\r\n return this.textColor ? { color: this.textColor } : undefined;\r\n }\r\n\r\n get style(): Partial {\r\n return {\r\n backgroundColor: this.backgroundColor,\r\n color: this.textColor\r\n };\r\n }\r\n\r\n get itemClasses(): string {\r\n let classes: string = '';\r\n if (this.isInHalfWidth) {\r\n if (this.content.uniqueSellingPointItems.length % 2 === 0) {\r\n classes = 'w-1/2';\r\n } else {\r\n classes = 'w-1/2 xl:w-1/3';\r\n }\r\n } else if (this.content.uniqueSellingPointItems.length % 5 === 0) {\r\n classes = 'sm:w-1/2 md:w-1/3 lg:w-1/5';\r\n } else if (this.content.uniqueSellingPointItems.length % 4 === 0) {\r\n classes = 'sm:w-1/2 md:w-1/4';\r\n } else {\r\n classes = 'sm:w-1/2 md:w-1/3';\r\n }\r\n return classes;\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!./UniqueSellingPointBlock.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!./UniqueSellingPointBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UniqueSellingPointBlock.vue?vue&type=template&id=675fe463&\"\nimport script from \"./UniqueSellingPointBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./UniqueSellingPointBlock.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('transition',{attrs:{\"mode\":\"out-in\",\"tag\":\"div\",\"enter-active-class\":\"animated fadeIn u-anim-dur-350\",\"leave-active-class\":\"animated fadeOut u-anim-dur-250\"}},[(!_vm.success)?_c('article',{key:\"in-progress\",class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock }},[_c('smart-headline',{staticClass:\"text-18 md:text-34\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.content.headline)+\" \")]),_c('p',{staticClass:\"my-10\"},[(_vm.content.subtitle)?[_vm._v(\" \"+_vm._s(_vm.content.subtitle)+\" \")]:[_vm._v(\" \"+_vm._s(_vm.$dictionary.get('Information.CancelNewsletter.Subtitle'))+\" \")]],2),_c('ValidationObserver',{attrs:{\"tag\":\"section\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar handleSubmit = ref.handleSubmit;\nreturn [_c('form',{staticClass:\"bg-white px-20 py-15 mt-15\",on:{\"submit\":function($event){$event.preventDefault();return handleSubmit(_vm.submit)}}},[_c('p',{staticClass:\"font-bold text-15\"},[_vm._v(\" \"+_vm._s(_vm.$dictionary.get('Information.CancelNewsletter.Email'))+\" \")]),_c('input-text',{staticClass:\"mt-20\",attrs:{\"name\":\"email\",\"type\":\"text\",\"label\":_vm.$dictionary.get('Information.CancelNewsletter.Email'),\"rules\":\"required|email\"},model:{value:(_vm.email),callback:function ($$v) {_vm.email=$$v},expression:\"email\"}}),_c('web-api-message',{attrs:{\"id\":\"sendapplicationform\"}}),_c('call-to-action',{staticClass:\"mt-20\",attrs:{\"disabled\":_vm.loading,\"text\":_vm.$dictionary.get('Information.SendApplication'),\"type\":\"submit\"}})],1)]}}],null,false,3151175511)})],1):_c('article',{key:\"success\",class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock }},[_c('smart-headline',{staticClass:\"text-18 md:text-34\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.$dictionary.get('Information.CancelNewsletter.SuccesTitle'))+\" \")]),_c('p',{staticClass:\"my-10 whitespace-pre-line bg-white p-20\"},[_vm._v(\" \"+_vm._s(_vm.$dictionary.get('Information.CancelNewsletter.SuccesSubtitle'))+\" \")])],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\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { CancelNewsletterBlockViewModel } from '@/types/contentServerContract';\r\n\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport WebApiMessage from '@/core/messages/WebApiMessage.vue';\r\nimport Api from '@/project/http/Api.service';\r\nimport loggingService from '@/core/logging.service';\r\n\r\n@Component({\r\n components: { SmartHeadline, WebApiMessage }\r\n})\r\nexport default class CancelNewsletterBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: CancelNewsletterBlockViewModel;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n loading: boolean = false;\r\n success: boolean = false;\r\n email: string = '';\r\n\r\n reset() {\r\n this.email = '';\r\n }\r\n\r\n async submit() {\r\n this.loading = true;\r\n\r\n try {\r\n await Api.newsletter.unsubscribe(this.email, 'sendapplicationform');\r\n this.success = true;\r\n } catch (e) {\r\n loggingService.error(e);\r\n } finally {\r\n this.loading = 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!./CancelNewsletterBlock.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!./CancelNewsletterBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CancelNewsletterBlock.vue?vue&type=template&id=bd4bc72c&\"\nimport script from \"./CancelNewsletterBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./CancelNewsletterBlock.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","module.exports = __webpack_public_path__ + \"img/map-marker-green.0918c2e5.svg\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.content)?_c('article',{staticClass:\"c-campaign-list__item\"},[_c('div',{staticClass:\"bg-white h-full pb-20 relative flex flex-col\"},[_c('div',{staticClass:\"mb-20\",class:{ 'border border-white': _vm.forceImageThumb && !(_vm.content.image && _vm.content.image.url) }},[(_vm.forceImageThumb || _vm.content.image && _vm.content.image.url)?_c('ResponsiveImage',{attrs:{\"image-url\":_vm.content.image && _vm.content.image.url || '',\"focal-point\":_vm.content.image && _vm.content.image.focalPoint,\"aspect-ratio\":325/183,\"width-on-screen\":{ xs: 50,md: 33, lg: 25}}}):_vm._e()],1),_c('div',{staticClass:\"absolute w-34 h-34\",class:{'-top-10 -left-10': !_vm.iconInImage, 'top-5 left-5': _vm.iconInImage}},[(_vm.content.showIcon && _vm.content.iconUrl)?_c('div',{staticClass:\"relative select-none\"},[_c('CIcon',{staticClass:\"w-34 h-34\",attrs:{\"name\":_vm.defaultCampaignIcon,\"fill\":true,\"original\":true}}),_c('div',{staticClass:\"campaign-image__icon absolute inset-0 p-5 flex items-center justify-center\"},[(_vm.content.iconUrl)?_c('img',{directives:[{name:\"on-error\",rawName:\"v-on-error\"}],attrs:{\"src\":_vm.content.iconUrl,\"alt\":\"campaign-icon\"}}):_vm._e()])],1):_vm._e()]),_c('CultureAwareRouterLink',{staticClass:\"absolute inset-0 z-0 text-hidden-indent\",attrs:{\"to\":_vm.content.campaignUrl}},[_vm._v(\" \"+_vm._s(_vm.content.campaignName)+\" \")]),(_vm.content.campaignName)?_c('CultureAwareRouterLink',{staticClass:\"px-20\",attrs:{\"to\":_vm.content.campaignUrl}},[_c('SmartHeadline',{attrs:{\"level\":\"h3\"}},[_vm._v(\" \"+_vm._s(_vm.content.campaignName)+\" \")])],1):_vm._e(),_c('p',{staticClass:\"px-20 mb-10\",domProps:{\"innerHTML\":_vm._s(_vm.content.teaser)}}),_c('p',{staticClass:\"mt-auto px-20 mb-10\"},[(_vm.content.endDate)?[_vm._v(\" \"+_vm._s(_vm.$dictionary.get('Campaigns.EndDate', [_vm.content.endDate]))+\" \")]:_vm._e()],2),_c('div',{staticClass:\"px-20 relative z-1\"},[_c('CallToAction',{staticClass:\"w-full\",attrs:{\"href\":_vm.content.campaignUrl,\"text\":_vm.buttonText}})],1)],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\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { CampaignBlockViewModel } from '@/types/contentServerContract';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\n\r\n@Component({\r\n components: { SmartHeadline }\r\n})\r\nexport default class CampaignTeaser extends Vue {\r\n @Prop({ required: true, type: Object }) content!: CampaignBlockViewModel;\r\n @Prop({ type: Boolean, default: false }) iconInImage!: boolean;\r\n @Prop({ type: Boolean, default: false }) forceImageThumb!: boolean;\r\n\r\n get buttonText():string {\r\n return this.content.buttonText || dictionaryService.get('Campaigns.DefaultButtonText');\r\n }\r\n\r\n get defaultCampaignIcon() {\r\n return this.content.iconUrl ? '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!./CampaignTeaser.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!./CampaignTeaser.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CampaignTeaser.vue?vue&type=template&id=57ac20d2&scoped=true&\"\nimport script from \"./CampaignTeaser.vue?vue&type=script&lang=ts&\"\nexport * from \"./CampaignTeaser.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CampaignTeaser.vue?vue&type=style&index=0&id=57ac20d2&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 \"57ac20d2\",\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:\"o-chrome-container flex flex-col bg-white py-40\",class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock }},[(_vm.headline)?_c('SmartHeadline',{staticClass:\"text-15 md:text-20 text-center mb-30\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.headline)+\" \")]):_vm._e(),_c('div',{staticClass:\"relative\"},[(_vm.recommendedBrands.length && _vm.rendered)?[(_vm.content.isSimpleView)?[(_vm.content.isSimpleView)?_c('div',{staticClass:\"flex flex-row flex-wrap overflow-hidden justify-between h-25 md:h-35 mb-10\"},_vm._l((_vm.recommendedBrands),function(brand,index){return _c('div',{key:index,staticClass:\"c-recommendation-brand-simple--item h-25 md:h-35 mb-5 mx-3 sm:mx-10 lg:mx-20 first:ml-0 last:mr-0\"},[_c('Interceptor',{staticClass:\"h-full flex\",attrs:{\"threshold\":0.05},on:{\"visible\":function($event){return _vm.handleSlideVisible(brand)}},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar viewed = ref.viewed;\nreturn [(viewed)?_c('CultureAwareRouterLink',{staticClass:\"flex m-auto\",attrs:{\"to\":_vm.getBrandUrl(brand)},nativeOn:{\"click\":function($event){return _vm.handleClickBrand(brand)}}},[_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(!brand.imageLoadFailed),expression:\"!brand.imageLoadFailed\"}],attrs:{\"src\":brand.brandLogo.uri,\"alt\":brand.brandName,\"loading\":\"lazy\"},on:{\"error\":function($event){return _vm.imageLoadError(brand)}}}),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(brand.imageLoadFailed),expression:\"brand.imageLoadFailed\"}],staticClass:\"m-auto min-h-15 min-w-15 text-18\"},[_vm._v(\" \"+_vm._s(brand.brandName)+\" \")])]):_vm._e()]}}],null,true)})],1)}),0):_vm._e()]:[_c('Swiper',{class:'swiper-' + _vm.id,attrs:{\"id\":_vm.id,\"instance-name\":_vm.id,\"options\":_vm.sliderOptions}},_vm._l((_vm.recommendedBrands),function(brand,index){return _c('SwiperSlide',{key:index,staticClass:\"c-recommendation-brand--item\"},[_c('Interceptor',{staticClass:\"h-full\",attrs:{\"threshold\":0.05},on:{\"visible\":function($event){return _vm.handleSlideVisible(brand)}},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar viewed = ref.viewed;\nreturn [(viewed)?_c('CultureAwareRouterLink',{staticClass:\"bg-gray-300 hover:bg-gray-400 u-trans u-trans-bg h-full flex flex-col pt-10 md:pt-10 pb-20 md:pb-25\",attrs:{\"to\":_vm.getBrandUrl(brand)},nativeOn:{\"click\":function($event){return _vm.handleClickBrand(brand)}}},[_c('div',{staticClass:\"flex px-10 md:w-160 h-60 m-auto\"},[_c('img',{directives:[{name:\"on-error\",rawName:\"v-on-error\"}],staticClass:\"m-auto max-w-full max-h-full\",attrs:{\"src\":brand.brandLogo.uri,\"alt\":brand.brandName,\"loading\":\"lazy\"}})]),_c('div',{staticClass:\"hidden\"},[_vm._v(\" \"+_vm._s(brand.brandName)+\" \")]),_c('div',{staticClass:\"flex text-9 md:text-12 leading-large mt-auto\"},[_c('div',{staticClass:\"w-1/2 text-center\"},[_c('div',{staticClass:\"font-bold\"},[_vm._v(\" \"+_vm._s(_vm.$localeNumberFilter.get(brand.productCount))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm.$dictionary.get('Brand.Recommendations.ProductCount'))+\" \")])]),_c('div',{staticClass:\"w-1/2 text-center\"},[_c('div',{staticClass:\"font-bold\"},[_vm._v(\" \"+_vm._s(_vm.$localeNumberFilter.get(brand.categoryCount))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm.$dictionary.get('Brand.Recommendations.CategoryCount'))+\" \")])])])]):_vm._e()]}}],null,true)})],1)}),1),_c('button',{staticClass:\"faded-custom-swiper-button-prev hidden md:block theme-text-linkcolor\",class:_vm.prevButtonSelector,attrs:{\"slot\":\"button-prev\",\"type\":\"button\"},slot:\"button-prev\"},[_c('CIcon',{attrs:{\"name\":\"arrow-thin-left\",\"width\":\"25\",\"height\":\"25\"}})],1),_c('button',{staticClass:\"faded-custom-swiper-button-next hidden md:block theme-text-linkcolor\",class:_vm.nextButtonSelector,attrs:{\"slot\":\"button-next\",\"type\":\"button\"},slot:\"button-next\"},[_c('CIcon',{attrs:{\"name\":\"arrow-thin-right\",\"width\":\"25\",\"height\":\"25\"}})],1)]]:_c('div',{class:{'c-recommendation-brand--item': _vm.content.isSimpleView === false, 'c-recommendation-brand-simple--item h-150': _vm.content.isSimpleView === 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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 { BrandRecommendationsBlockViewModel } from '@/types/contentServerContract';\r\nimport {\r\n RecommendedBrandsViewModel,\r\n RecommendedBrandViewObject\r\n} from '@/types/apiServerContract';\r\nimport loggingService from '@/core/logging.service';\r\nimport Api from '@/project/http/Api.service';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport breakpointService from '@/core/responsive/breakpoints/breakpoints.service';\r\nimport ResponsiveIcon from '@/core/responsive/image/ResponsiveIcon.vue';\r\nimport responsiveProductImageService from '@/project/product/image/responsiveProductImage.service';\r\nimport { debounce } from 'lodash';\r\nimport GTMService from '@/project/tracking/gtm/GTM.service';\r\nexport interface RecommendedBrandViewObjectExtended extends RecommendedBrandViewObject {\r\n imageLoadFailed?:boolean;\r\n}\r\n@Component({\r\n components: { ResponsiveIcon, SmartHeadline }\r\n})\r\nexport default class BrandRecommendationsBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n })\r\n content!: BrandRecommendationsBlockViewModel;\r\n\r\n @Prop({\r\n required: false,\r\n type: Boolean,\r\n default: false\r\n })\r\n isFirstBlock!: boolean;\r\n\r\n rendered: boolean = false;\r\n activeBreakpoint: string = '';\r\n result: RecommendedBrandsViewModel | null = null;\r\n debouncedTrackBrandViewed = debounce(this.doTrackBrandViewed, 500);\r\n viewedBrands: { name: string, id: string, creative?: string }[] = [];\r\n\r\n get sliderOptions() {\r\n return {\r\n spaceBetween: 12,\r\n slidesPerView: 'auto',\r\n slidesPerGroup: 1,\r\n slidesPerGroupAuto: true,\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 get id() {\r\n return new Date().valueOf();\r\n }\r\n\r\n get prevButtonSelector() {\r\n return 'custom-swiper-button-prev-' + this.id;\r\n }\r\n\r\n 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.$nextTick(() => this.rendered = true);\r\n }\r\n }\r\n\r\n get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n async getBrandData() {\r\n try {\r\n this.result = await Api.recommendations.recommendPopularBrands({\r\n categoryIdFilterPositiveList: this.content.categoryIdFilterPositiveList,\r\n categoryIdFilterNegativeList: this.content.categoryIdFilterNegativeList,\r\n brandIdFilterList: this.content.brandIdFilterList,\r\n displayedAtLocation: this.content.displayLocation,\r\n periodDays: this.content.interval,\r\n popularityType: this.content.popularity,\r\n brandCount: this.content.brandCount,\r\n useDiverseRecommendations: this.content.useDiverseRecommendations\r\n });\r\n } catch (e) {\r\n loggingService.error(e);\r\n }\r\n }\r\n\r\n getBrandUrl(brand: RecommendedBrandViewObject): string {\r\n return `/brands/${brand.brandName.toLowerCase()}`;\r\n }\r\n\r\n get headline(): string | undefined {\r\n return this.content?.headline;\r\n }\r\n\r\n get recommendedBrands(): RecommendedBrandViewObjectExtended[] {\r\n return this.result?.recommendedBrands || [];\r\n }\r\n\r\n resizeImageByPath(path: string): string {\r\n return responsiveProductImageService.formatImageUrl(path, responsiveProductImageService.ImageSizePlaceholderValues.W86);\r\n }\r\n\r\n handleClickBrand(brand:RecommendedBrandViewObject) {\r\n GTMService.trackCreativeClick(brand.brandName, brand.brandName, undefined);\r\n }\r\n\r\n handleSlideVisible(brand:RecommendedBrandViewObject) {\r\n this.viewedBrands.push({ name: brand.brandName, id: brand.brandName, creative: undefined });\r\n this.debouncedTrackBrandViewed();\r\n }\r\n\r\n doTrackBrandViewed() {\r\n const brands = [...this.viewedBrands];\r\n this.viewedBrands = [];\r\n GTMService.trackCreativeView(brands);\r\n }\r\n\r\n imageLoadError(brand) {\r\n brand.imageLoadFailed = true;\r\n this.$forceUpdate();\r\n }\r\n\r\n mounted() {\r\n this.getBrandData();\r\n this.activeBreakpoint = breakpointService.getActiveBreakpoint();\r\n breakpointService.addListener(this.handleBreakpointChange);\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","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!./BrandRecommendationsBlock.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!./BrandRecommendationsBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BrandRecommendationsBlock.vue?vue&type=template&id=0b99be1a&\"\nimport script from \"./BrandRecommendationsBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./BrandRecommendationsBlock.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BrandRecommendationsBlock.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"],"sourceRoot":""}