{"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?8e76","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?2185","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?0283","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?cbaf","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?cd51","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?2d3e","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?7b04","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?5682","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?d130","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?b0ad","webpack:///./src/project/app/blocks/SmallImageTextBlock.vue?77ea","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?1a5e","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?908d","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?c443","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?b472","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?42ec","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?0866","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?4b5c","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?93c6","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?83fb","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?d6dc","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?6b8e","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?6cba","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?38dd","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?5c92","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?32a4","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?a68e","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?7da1","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?1f26","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?db00","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?dbb9","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?7591","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?b9a5","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?d82a","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?4551","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","marginColor","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","styles","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","onMessages","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.bd04c58b.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\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 if (!this.primaryBanner.adContent?.marginColor) return undefined;\r\n\r\n return {\r\n backgroundColor: this.primaryBanner.adContent?.marginColor\r\n };\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=690ca00e&\"\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 { AdContentBlockViewModel } from '@/types/apiServerContract';\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\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: AdContentBlockViewModel | 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\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=31233008&\"\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})],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 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=b018deb2&\"\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":""}