{"version":3,"sources":["webpack:///./src/project/app/blocks/UniqueSellingPointItem.vue?227b","webpack:///./src/project/app/blocks/TextWithImageBlock.vue?c337","webpack:///./src/assets/icons/map-marker-blue.svg","webpack:///./src/project/app/blocks/ProductRecommendationsBlock.vue?5e09","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?4e6c","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?23dd","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?ec91","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/categories/CategoryBlockItem.vue?127b","webpack:///./src/project/app/blocks/AdnuntiusHeroBannerBlock.vue?4c14","webpack:///./src/project/app/blocks/TextBlock.vue?19b8","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/content-pages/NewsArticleTeaser.vue?7616","webpack:///./src/project/app/blocks/tableHtml.service.ts","webpack:///./src/project/app/blocks/categories/CategoryBlockItem.vue?0a60","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?cba8","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?3fb7","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?a16f","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?9b73","webpack:///./src/project/app/blocks/SmallImageTextBlock.vue?830a","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?0849","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?7c5b","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/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?a2ce","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?3834","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/LatestCampaignsBlock.vue?1e9c","webpack:///./src/project/app/blocks/LatestNewsBlock.vue?fcd0","webpack:///./src/project/app/blocks/QuoteBlock.vue?40fb","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?d90c","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?b7b2","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?6b2e","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?60f9","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?0e73","webpack:///./src/project/spinners/SpinnerElement.vue","webpack:///./src/project/spinners/SpinnerElement.vue?4c07","webpack:///./src/project/spinners/SpinnerElement.vue?f339","webpack:///./src/project/app/content-pages/CampaignTeaser.vue?1777","webpack:///./src/project/app/blocks/google-maps/GoogleMapsBlock.vue?a996","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/CategoryRecommendationsBlock.vue?7cc5","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?a0c0","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?2735","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?3889","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?8125","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?7447","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?0ca4","webpack:///./src/core/messages/WebApiMessage.vue","webpack:///./src/core/messages/WebApiMessage.vue?5af9","webpack:///./src/core/messages/WebApiMessage.vue?0b74","webpack:///./src/project/product/condensed/CondensedProductList.vue?d3bb","webpack:///./src/project/app/blocks/HalfWidthBlocks.vue?a882","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/spinners/SpinnerOverlay.vue?d550","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/ImageTextVideoBlockNew.vue?9e53","webpack:///./src/project/app/blocks/BrandsBlock.vue?e90c","webpack:///./src/assets/icons/map-marker-black.svg","webpack:///./src/project/app/blocks/UniqueSellingPointBlock.vue?b81e","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?f97c","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?1b2f","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?d02b","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","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","directives","rawName","value","imageLoadFailed","expression","imageUrl","on","$event","imageLoadError","_f","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","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","get","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.a7ead96c.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!./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 private content!: ProductRecommendationsBlockViewModel;\r\n\r\n @Prop({\r\n required: false,\r\n type: Boolean,\r\n default: false\r\n })\r\n private 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 private productId!: string | undefined;\r\n\r\n @Prop({\r\n required: false,\r\n type: String\r\n })\r\n private searchTerm!: string | undefined;\r\n\r\n @Prop({\r\n required: false,\r\n type: String\r\n })\r\n private noResultText!: string | undefined;\r\n\r\n private result: ProductTileViewModel | null = null;\r\n resultFailed: boolean = false;\r\n\r\n private get products(): ProductTileViewObject[] {\r\n return this.result ? this.result.products : [];\r\n }\r\n\r\n private get listViewPageSize(): undefined | number {\r\n return this.content.useListView ? 4 : undefined;\r\n }\r\n\r\n private 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 private get headline(): string | undefined {\r\n return this.content?.headline;\r\n }\r\n\r\n private 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 private 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=1871b512&\"\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',{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,\"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',{staticClass:\"self-center h-full\",class:{'c-usp-item__icon-svg': !_vm.isPixelImage},attrs:{\"src\":_vm.iconUrl,\"width\":_vm.width,\"height\":_vm.height,\"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\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 private get iconUrl() {\r\n return this.content.icon?.url;\r\n }\r\n\r\n private get headline() {\r\n return this.content?.headline;\r\n }\r\n\r\n private get text() {\r\n return this.content?.shortText;\r\n }\r\n\r\n private get linkUrl() {\r\n return this.content.link?.url;\r\n }\r\n\r\n private get linkTarget() {\r\n return this.content.link?.target;\r\n }\r\n\r\n private get linkName() {\r\n return this.content.link?.name;\r\n }\r\n\r\n private 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 private get width() {\r\n return this.isPixelImage ? 80 : 40;\r\n }\r\n\r\n private 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 private 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=286d9f23&\"\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 private get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n private 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 private 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 private 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 private categoryItems: CategoryItemViewModel[] = [];\r\n\r\n private created() {\r\n this.getCategoryItems(this.content.settings?.selectedAdUnitIdContent?.adUnitId);\r\n }\r\n\r\n private 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=08b79c32&\"\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._f(\"t\")('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 private brands: CustomerBrandTileViewObjectExtended[] = [];\r\n\r\n private get brandPageName() {\r\n return PageName.BRAND;\r\n }\r\n\r\n private get brandOverviewPageName() {\r\n return PageName.BRAND_OVERVIEW;\r\n }\r\n\r\n private 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 private 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=9e3ec46a&\"\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!./CategoryBlockItem.vue?vue&type=style&index=0&id=4034c70f&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=4034c70f&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!./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\"}],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 { 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 private get backgroundColor() {\r\n return this.content.backgroundColor ? `#${this.content.backgroundColor}` : null;\r\n }\r\n\r\n private 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 private mounted() {\r\n tableHtmlService.registerTableOverflow(this.$refs.htmlContent);\r\n }\r\n\r\n private 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=b8c0db08&\"\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!./NewsArticleTeaser.vue?vue&type=style&index=0&id=a5d6e7ac&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=a5d6e7ac&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._f(\"t\")('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 private categoryUrl: string | null = null;\r\n\r\n private get icon(): string {\r\n return this.content.icon.url;\r\n }\r\n\r\n private 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 private get renderedPixelUrl() {\r\n return this.content?.renderedPixelUrl;\r\n }\r\n\r\n private get viewPixelUrl() {\r\n return this.content?.viewPixelUrl;\r\n }\r\n\r\n private get visiblePixelUrl() {\r\n return this.content?.visiblePixelUrl;\r\n }\r\n\r\n private 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=4034c70f&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=4034c70f&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 \"4034c70f\",\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 private products: ProductTileViewObject[] = [];\r\n private loading: boolean = false;\r\n\r\n private 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 private 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=9509971e&\"\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 private get news() {\r\n return [this.content.firstNews, ...this.content.news];\r\n }\r\n\r\n private get id() {\r\n return 'latest-news-block-' + new Date().valueOf();\r\n }\r\n\r\n private get prevButtonSelector() {\r\n return 'custom-swiper-button-prev-' + this.id;\r\n }\r\n\r\n private get nextButtonSelector() {\r\n return 'custom-swiper-button-next-' + this.id;\r\n }\r\n\r\n private 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=59e799eb&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=59e799eb&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 \"59e799eb\",\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\"}],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 private get headlineColor() {\r\n return this.content.headlineColor ?? null;\r\n }\r\n\r\n private get subHeadlineColor() {\r\n return this.content.subHeadlineColor ?? null;\r\n }\r\n\r\n private get textColor() {\r\n return this.content.textColor ?? null;\r\n }\r\n\r\n private 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=5db8850b&\"\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\",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\",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 private 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=65f619fc&\"\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 { AdContentBlockViewModel } from '@/types/apiServerContract';\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\n\r\nexport interface ExtendedAdContentBlockViewModel extends AdContentBlockViewModel {\r\n isBackgroundVideo?: boolean;\r\n}\r\ninterface AdnuntiusBannerObject {\r\n adContent: ExtendedAdContentBlockViewModel | null;\r\n trackingData: AdnuntiusTrackingData | null;\r\n loadError: boolean;\r\n isFirst?: boolean;\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 private created() {\r\n this.loadAdContent();\r\n }\r\n\r\n private 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 private 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 private get isTakeOverBanner() {\r\n return themeService.isTakeOverEnabled;\r\n }\r\n\r\n private get aspectRatio() {\r\n return this.isTakeOverBanner ? (1440 / 680) : (1440 / 480);\r\n }\r\n\r\n private 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 private get leftImage() {\r\n return this.primaryBanner.adContent?.imageLeft?.url;\r\n }\r\n\r\n private get scrollBarWidth() {\r\n return Math.floor(scrollService.getScrollbarWidth() / 2);\r\n }\r\n\r\n private 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 private get rightImage() {\r\n return this.primaryBanner.adContent?.imageRight?.url;\r\n }\r\n\r\n private 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=74da5e92&\"\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 private uniqueSellingPointsMobileClasses: string[] = [];\r\n\r\n private 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 private 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 private hexToRgbWithDefault(hex: string, alpha?: number): string {\r\n if (!isValidHexColor(hex)) return tailwind.theme.colors.black;\r\n return hexToRgb(hex, alpha);\r\n }\r\n\r\n isColorDefined(color: string): boolean {\r\n return color?.length === 7 ?? false; // #233445\r\n }\r\n\r\n private get isMobile() {\r\n return breakpointState.isBreakpointActive(MAX_SM);\r\n }\r\n\r\n private 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=00d41348&\"\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 private active: boolean = this.selected;\r\n\r\n public toggle(active: boolean) {\r\n this.active = active;\r\n\r\n if (active && this.hash) {\r\n if (urlHelperService.getHash() !== this.hash) {\r\n urlHelperService.setHash(this.hash);\r\n }\r\n }\r\n }\r\n\r\n public get isActive() {\r\n return this.active;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Tab.vue?vue&type=template&id=661915bb&\"\nimport script from \"./Tab.vue?vue&type=script&lang=ts&\"\nexport * from \"./Tab.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","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 private contentLoadError = false;\r\n private adContentBlockViewModel: AdContentBlockViewModel | null = null;\r\n private 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 private get isHeroBanner(): boolean {\r\n return this.alias === 'heroBanner';\r\n }\r\n\r\n private get isAdUnitContent(): boolean {\r\n return this.alias === 'personalizedContent';\r\n }\r\n\r\n private get isHalfWidthBlock(): boolean {\r\n return this.alias === 'halfWidthBlock';\r\n }\r\n\r\n private get isTextBlock(): boolean {\r\n return this.alias === 'textBlock';\r\n }\r\n\r\n private get isJotFormBlock(): boolean {\r\n return this.alias === 'jotFormBlock';\r\n }\r\n\r\n private get isMapBlock(): boolean {\r\n return this.alias === 'map';\r\n }\r\n\r\n private get isCancelNewsletterBlock(): boolean {\r\n return this.alias === 'cancelNewsletterBlock';\r\n }\r\n\r\n private get isUniqueSellingPointBlock(): boolean {\r\n return this.alias === 'uniqueSellingPointBlock';\r\n }\r\n\r\n private get isSimpleUspBlock(): boolean {\r\n return this.alias === 'simpleUspBlock';\r\n }\r\n\r\n private get renderedPixelUrl() {\r\n return this.adContentBlockViewModel?.renderedPixelUrl;\r\n }\r\n\r\n private get viewPixelUrl() {\r\n return this.adContentBlockViewModel?.viewPixelUrl;\r\n }\r\n\r\n private get visiblePixelUrl() {\r\n return this.adContentBlockViewModel?.visiblePixelUrl;\r\n }\r\n\r\n private get clickPixelUrl() {\r\n return this.adContentBlockViewModel?.clickPixelUrl;\r\n }\r\n\r\n private 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 private 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=7c7a3730&\"\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._f(\"t\")('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 private news!: News;\r\n\r\n private 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=a5d6e7ac&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=a5d6e7ac&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 \"a5d6e7ac\",\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!./LatestCampaignsBlock.vue?vue&type=style&index=0&id=86e9ec32&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=86e9ec32&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=59e799eb&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=59e799eb&lang=less&scoped=true&\"","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\"}],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 private get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n private 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 private 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 private 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=3b4d1429&\"\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 private 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 private level!: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\r\n\r\n render(h: CreateElement) {\r\n const data = {\r\n ...this.$props,\r\n class: {\r\n h1: this.styleAsH1\r\n }\r\n };\r\n return h(this.level, data, this.$slots.default);\r\n }\r\n}\r\n","var render, staticRenderFns\nimport script from \"./SmartHeadline.vue?vue&type=script&lang=ts&\"\nexport * from \"./SmartHeadline.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SmartHeadline.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SmartHeadline.vue?vue&type=script&lang=ts&\"","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 private get jotformSrc() {\r\n return `https://form.jotform.com/${this.content.jotFormId}`;\r\n }\r\n\r\n public $refs!: {\r\n jotform: any\r\n }\r\n\r\n private mounted() {\r\n window.addEventListener('message', this.handleIFrameMessage, false);\r\n }\r\n\r\n public beforeDestroy() {\r\n window.removeEventListener('message', this.handleIFrameMessage);\r\n }\r\n\r\n private 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=01292be5&\"\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 private activeTab: Tab | null = null;\r\n\r\n private tabs: Tab[] = []\r\n\r\n @Prop(String) headerClass!: string\r\n @Prop(String) contentClass!: string\r\n\r\n public toggle(name: string) {\r\n if (this.activeTab && this.activeTab.name !== name) {\r\n this.$emit('changed', name);\r\n }\r\n\r\n for (const tab of this.tabs) {\r\n if (tab.name === name) {\r\n this.activeTab = tab;\r\n tab.toggle(true);\r\n } else {\r\n tab.toggle(false);\r\n }\r\n }\r\n bus.emit(ProductTrackerProcessBatchKey);\r\n }\r\n\r\n private setup() {\r\n this.tabs = this.$children.filter(x => x.$options.name === 'Tab') as Tab[];\r\n if (this.tabs.length === 0) {\r\n return;\r\n }\r\n\r\n const hash = urlHelperService.getHash();\r\n if (hash) {\r\n const activeTab = this.tabs.find(x => x.hash === hash);\r\n if (activeTab) {\r\n this.activeTab = activeTab;\r\n activeTab.toggle(true);\r\n }\r\n }\r\n\r\n if (!this.activeTab) {\r\n for (const tab of this.tabs) {\r\n if (tab.isActive) {\r\n this.activeTab = tab;\r\n break;\r\n }\r\n }\r\n\r\n // Always show atleast 1 tab\r\n if (!this.activeTab) {\r\n const activeTab = this.tabs[0];\r\n this.activeTab = activeTab;\r\n activeTab.toggle(true);\r\n }\r\n }\r\n\r\n this.$emit('init', this.activeTab.name);\r\n }\r\n\r\n mounted() {\r\n this.setup();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Tabs.vue?vue&type=template&id=475bab18&\"\nimport script from \"./Tabs.vue?vue&type=script&lang=ts&\"\nexport * from \"./Tabs.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","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","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=d5f3b642&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=d5f3b642&lang=less&scoped=true&\"","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 protected get isMobile() {\r\n return breakpointState.isBreakpointActive(MAX_SM);\r\n }\r\n\r\n protected 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 protected 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 protected 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 protected 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 private center: Position = { lat: 55.838395, lng: 12.402816 };\r\n private 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 private defaultZoom: number = 6;\r\n\r\n private 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 private 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 private 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 private 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 private 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 private async getMap() {\r\n return await this.$refs.map.$mapPromise;\r\n }\r\n\r\n private 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 private 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 public $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=240d1736&\"\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","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\"),\"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._f(\"localeNumber\")(category.productCount))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Category.Recommendations.ProductsCount'))+\" \")])]),_c('div',{staticClass:\"w-1/2 text-center\"},[_c('div',{staticClass:\"font-bold\"},[_vm._v(\" \"+_vm._s(_vm._f(\"localeNumber\")(category.brandCount))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('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\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 private content!: CategoryRecommendationsBlockViewModel;\r\n\r\n @Prop({\r\n required: false,\r\n type: Boolean,\r\n default: false\r\n })\r\n private isFirstBlock!: boolean;\r\n\r\n rendered: boolean = false;\r\n activeBreakpoint: string = '';\r\n private result: RecommendedCategoriesViewModel | null = null;\r\n private debouncedTrackCategoryViewed = debounce(this.doTrackCategoryViewed, 500);\r\n private viewedCategories: { name: string, id: string }[] = [];\r\n\r\n private 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 private get id() {\r\n return new Date().valueOf();\r\n }\r\n\r\n private get prevButtonSelector() {\r\n return 'custom-swiper-button-prev-' + this.id;\r\n }\r\n\r\n private get nextButtonSelector() {\r\n return 'custom-swiper-button-next-' + this.id;\r\n }\r\n\r\n handleBreakpointChange() {\r\n const newBreakpoint = breakpointService.getActiveBreakpoint();\r\n if (newBreakpoint !== this.activeBreakpoint) {\r\n this.activeBreakpoint = newBreakpoint;\r\n this.rendered = false;\r\n this.$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 private 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 private 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 private handleClickCategory(category:RecommendedCategoryViewObject) {\r\n GTMService.trackCreativeClick(`recommendedCategory:${category.displayName}`, `recommendedCategory:${category.categoryId}`);\r\n }\r\n\r\n private 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 private doTrackCategoryViewed() {\r\n const categories = [...this.viewedCategories];\r\n this.viewedCategories = [];\r\n GTMService.trackCreativeView(categories);\r\n }\r\n\r\n private 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=6555ef18&\"\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 private get shouldUseFlexBox() {\r\n return this.useFlexBox && !this.isMobile;\r\n }\r\n\r\n private video: VimeoPlayer | VideoElm | null = null;\r\n private isPlaying: boolean = false;\r\n private loadingVideo: boolean = true;\r\n private contentBackgroundColor: string = '';\r\n private vimeoVideoAspectRatio: { width: number, height: number } | null = null;\r\n private backgroundImageWidth: number | null = null;\r\n private rendered: boolean = false;\r\n\r\n private get isWithinWideBannerAspectRatio() {\r\n return this.aspectRatio >= wideBannerAspectRatio;\r\n }\r\n\r\n private get isMobile() {\r\n return breakpointState.isBreakpointActive(MAX_SM);\r\n }\r\n\r\n private 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 private 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 private 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 private absoluteImageUrl(imageUrl: string): string {\r\n return responsiveImageService.getBaseUrl() + imageUrl;\r\n }\r\n\r\n public 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 private 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 private get margin() {\r\n if (!this.aspectRatioMargins) return 0;\r\n\r\n const activeBpDef = Object.keys(this.aspectRatioMargins).find(bpDef => breakpointState.isBreakpointActive(bpDef));\r\n const result = activeBpDef ? this.aspectRatioMargins[activeBpDef] : 0;\r\n return result;\r\n }\r\n\r\n private get aspectRatioStyling(): Partial {\r\n if (this.shouldUseFlexBox) return {};\r\n\r\n const paddingPct = (1 / this.realAspectRatio) * 100;\r\n return ({\r\n paddingBottom: `calc(${paddingPct}% - ${this.margin}px)`\r\n });\r\n }\r\n\r\n private get renderContent() {\r\n return !this.loadingVideo && !this.showCaptionAsContentTitle &&\r\n (this.content?.caption !== '' || this.content?.header !== '' || this.content?.subheader !== '' || this.content?.callToAction !== null);\r\n }\r\n\r\n private 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 private onContentChange(content: HeroBannerViewModel | undefined) {\r\n if (!content) return;\r\n // Set defaults for properties. Width and subheader-font varies depending on whether hero or not\r\n content.contentAligmentValue = content.contentAligmentValue ?? HorizontalAlignment.Left;\r\n content.contentWidthValue = content.contentWidthValue ?? (this.isHeroBanner ? ContentWidth.TwoThird : ContentWidth.FullWidth);\r\n content.subheaderFontSizeValue = content.subheaderFontSizeValue ?? (this.isHeroBanner ? SubheaderFontSize.Large : SubheaderFontSize.Normal);\r\n }\r\n\r\n private async getVimeoVideoAspectRatio() {\r\n 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 private 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 private get headerFontSyncData(): object {\r\n // Minimum is controlled by current subheader size\r\n const minSize = this.subheaderSize === 'small' ? 15 : 22;\r\n return [\r\n [MIN_LG, { min: minSize, max: 34 }],\r\n [MIN_MD, { min: minSize, max: 22 }],\r\n [MIN_XS, { min: minSize, max: 18 }]\r\n ];\r\n }\r\n\r\n private 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 private toggleVideoState() {\r\n if (!this.video) return;\r\n\r\n if (this.isPlaying) {\r\n try {\r\n this.video.pause();\r\n } catch (e) {\r\n loggingService.error(e);\r\n }\r\n } else {\r\n try {\r\n this.video.play();\r\n } catch (e) {\r\n loggingService.error(e);\r\n }\r\n }\r\n\r\n this.isPlaying = !this.isPlaying;\r\n }\r\n\r\n private hexToRgbWithDefault(hex: string, alpha?: number): string {\r\n if (!isValidHexColor(hex)) return tailwind.theme.colors.black;\r\n return hexToRgb(hex, alpha);\r\n }\r\n\r\n private 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 private 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 private get backgroundContentColorStyle(): Partial {\r\n if (!this.content || this.loadingVideo) return {};\r\n\r\n const backgroundColor = this.content.contentBackgroundColor;\r\n const semiTransparent = this.content.makeContentBackgroundTransparent;\r\n\r\n let result = 'transparent';\r\n\r\n if (this.shouldShowContentBackground && this.isColorDefined(backgroundColor)) {\r\n result = this.hexToRgbWithDefault(backgroundColor, semiTransparent ? semiTransparencyPercentage : undefined);\r\n }\r\n\r\n this.contentBackgroundColor = result;\r\n\r\n return ({\r\n backgroundColor: result\r\n });\r\n }\r\n\r\n // private get backgroundImageFormat() {\r\n // return extensionIsGifOrUndefined(this.content?.backgroundImage);\r\n // }\r\n\r\n private get contentTakeoverTransformStyle(): Partial {\r\n // Take over banner is 200px taller than normal banners, so we have to push content down by half (100)\r\n // to ensure it is centered correctly\r\n const translateY = this.isTakeOverBanner && !this.isMobile ? 100 : 0;\r\n\r\n return ({\r\n transform: `translateY(${translateY}px)`\r\n });\r\n }\r\n\r\n private get ctaColor(): string | null {\r\n return this.content?.callToActionColor || null;\r\n }\r\n\r\n private get headerHeadlineLevel(): string {\r\n let level;\r\n\r\n if (this.isFirstBlock && !this.content?.caption && this.content?.header) {\r\n level = 'h1';\r\n } else if ((this.isFirstBlock && this.content?.caption && this.content?.header) || (!this.isFirstBlock && !this.content?.caption && this.content?.header)) {\r\n level = 'h2';\r\n } else {\r\n level = 'h3';\r\n }\r\n\r\n return level;\r\n }\r\n\r\n isColorDefined(color: string): boolean {\r\n return color?.length === 7 ?? false; // #233445\r\n }\r\n\r\n private colorStyle(hexColor: string): object {\r\n const EETBlack = tailwind.theme.colors.black;\r\n return ({\r\n color: this.contentBackgroundColor === 'white' ? EETBlack : hexColor ? this.hexToRgbWithDefault(hexColor) : EETBlack\r\n });\r\n }\r\n\r\n private get alignRight(): boolean {\r\n return this.content?.contentAligmentValue === HorizontalAlignment.Right; // Left is default\r\n }\r\n\r\n private get contentClass(): string {\r\n if (!this.content) return '';\r\n\r\n let widthCls = 'w-full'; // Default for mobile\r\n if (!this.isMobile) {\r\n switch (this.content.contentWidthValue) {\r\n case ContentWidth.OneThird:\r\n widthCls = 'w-1/3';\r\n break;\r\n case ContentWidth.TwoThird:\r\n widthCls = 'w-2/3';\r\n break;\r\n case ContentWidth.FullWidth:\r\n widthCls = 'w-full';\r\n break;\r\n }\r\n }\r\n return `${widthCls}`;\r\n }\r\n\r\n private get subheaderSize(): undefined | 'small' | 'large' {\r\n if (!this.content) return undefined;\r\n\r\n if (breakpointState.isBreakpointActive(MAX_MD)) {\r\n return 'small';\r\n }\r\n\r\n return this.content.subheaderFontSizeValue === SubheaderFontSize.Normal ? 'small' : 'large';\r\n }\r\n\r\n private get adnuntiusImages() : AdImage[] {\r\n const adImages = (this.content as any as AdContentBlockViewModel).backgroundImages;\r\n if (!adImages || adImages.length === 0) {\r\n return [];\r\n }\r\n\r\n // Take the ones matching aspect-ratio\r\n return adImages\r\n .filter(img => isMatchingImageAspectRatio(img, this.realAspectRatio));\r\n\r\n function isMatchingImageAspectRatio(image: AdImage, aspectRatio: number): boolean {\r\n // Allow for 5 percentage in difference, to be a bit relaxed. Image will overflow correctly\r\n const allowedDelta = aspectRatio * 0.05;\r\n return Math.abs(image.width / image.height - aspectRatio) <= allowedDelta;\r\n }\r\n }\r\n\r\n private get adImageProps(): object | null {\r\n if (this.adnuntiusImages.length === 0) {\r\n return null;\r\n }\r\n\r\n // Src-set\r\n const srcset = this.adnuntiusImages\r\n .map(img => `${img.url} ${img.width}w`)\r\n .join(', ');\r\n\r\n // src. Take largest\r\n const src = this.adnuntiusImages\r\n .sort((imageA, imageB) => imageA.width - imageB.width)[this.adnuntiusImages.length - 1].url;\r\n\r\n // Sizes\r\n const sizes = `${this.realWidthOnScreen}vw`;\r\n\r\n return {\r\n srcset,\r\n src,\r\n sizes\r\n };\r\n }\r\n\r\n private get shimColor(): Partial {\r\n return { backgroundColor: this.content?.shimColor, opacity: '0.3' };\r\n }\r\n\r\n private get videoContainerMoreNarrowThanVideo() {\r\n return this.realAspectRatio < videoAspectRatio;\r\n }\r\n\r\n private get videoContainerStyle(): Partial {\r\n if (!this.content) return {};\r\n 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 private get shouldShowContentBackground(): boolean {\r\n return this.showBackgroundImage || !!((this.content as any as AdContentBlockViewModel)?.backgroundImages?.length > 0) || !!this.content?.vimeoVideoId;\r\n }\r\n\r\n private get 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 private get showCaptionAsContentTitle() {\r\n return this.content?.captionLocation === 'Top';\r\n }\r\n\r\n private get showBackgroundImage(): boolean {\r\n return !!(this.content?.backgroundImage?.url ?? false);\r\n }\r\n\r\n private get showShim(): boolean {\r\n return !!this.content?.shimColor && (!!this.content.vimeoVideoId || !!this.content.video || this.showBackgroundImage || !!this.adImageProps);\r\n }\r\n\r\n private get showCallToActionButton(): boolean {\r\n // Show button if there are no overlayVimeoVideoId (then another button should be shown)\r\n return !!(this.content?.callToAction?.name ?? false);\r\n }\r\n\r\n private get showCallToActionBlock(): boolean {\r\n return !this.showCallToActionButton && (!!this.content?.callToAction?.url ?? false);\r\n }\r\n\r\n private get showCallToActionVideoOverlayButton(): boolean {\r\n return !!(this.content?.overlayVimeoVideoId && this.content?.overlayVimeoCta);\r\n }\r\n\r\n private get isTakeOverBanner() {\r\n return this.isFirstBlock && themeService.isTakeOverEnabled;\r\n }\r\n\r\n private async clickOpenVideoOverlay() {\r\n if (this.content?.overlayVimeoVideoId) {\r\n if (this.video) {\r\n // Pauses video background while playing overlay video\r\n this.video.pause();\r\n }\r\n await videoFullscreenOverlayService.show(this.content.overlayVimeoVideoId, true);\r\n if (this.video) {\r\n // Starts video background again, after video overlay has been closed\r\n this.video.play();\r\n }\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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=6ecafc08&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=6ecafc08&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 \"6ecafc08\",\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\"}],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\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 private 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 private 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 private get style(): Partial {\r\n return {\r\n backgroundColor: this.backgroundColor,\r\n color: this.textColor\r\n };\r\n }\r\n\r\n private get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n private 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 private mounted() {\r\n tableHtmlService.registerTableOverflow(this.$refs.htmlContent);\r\n }\r\n\r\n private 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=02aaaf54&\"\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 private 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 private get anyCampaignWithImageOrIcon(): boolean {\r\n return !!this.campaigns.find(c => c.image?.url || (c.showIcon && c.iconUrl));\r\n }\r\n\r\n private get id() {\r\n return 'latest-campaigns-block-' + new Date().valueOf();\r\n }\r\n\r\n private get prevButtonSelector() {\r\n return 'custom-swiper-button-prev-' + this.id;\r\n }\r\n\r\n private get nextButtonSelector() {\r\n return 'custom-swiper-button-next-' + this.id;\r\n }\r\n\r\n private 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=86e9ec32&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=86e9ec32&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 \"86e9ec32\",\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 private 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=bff44b92&\"\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._f(\"t\")('Product.Relations.ShowMore'),\"icon\":\"plus-big\"},on:{\"click\":_vm.handleNextPage}})],1):_vm._e()],2)]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Component from 'vue-class-component';\r\nimport { Prop, Vue } from 'vue-property-decorator';\r\nimport ProductListTracker from '@/project/tracking/gtm/ProductListTracker.vue';\r\nimport { ProductTileViewObject } from '@/types/apiServerContract';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport { ProductRelationType } from './constants';\r\nimport breakpointState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\nimport { MIN_LG } from '@/core/config/breakpointConfig';\r\nimport breakpointService from '@/core/responsive/breakpoints/breakpoints.service';\r\n\r\n@Component({\r\n components: { ProductListTracker, SmartHeadline }\r\n})\r\nexport default class CondensedProductList extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Array\r\n })\r\n products!: ProductTileViewObject[];\r\n\r\n @Prop({\r\n required: true,\r\n type: String\r\n }) trackingListName!: string;\r\n\r\n @Prop({\r\n required: false,\r\n type: String,\r\n default: null\r\n }) headline!: string | null;\r\n\r\n @Prop({\r\n required: false,\r\n type: 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 private get listViewProducts() {\r\n return this.products.filter((p, index) => this.listViewPageSize === undefined || index < this.page * this.listViewPageSize);\r\n }\r\n\r\n handleNextPage() {\r\n this.page++;\r\n }\r\n\r\n private get productColor() {\r\n if (!this.productBgColor) return '';\r\n\r\n switch (this.productBgColor.toLowerCase()) {\r\n case 'white':\r\n return 'bg-white';\r\n case 'gray':\r\n return 'bg-gray-300';\r\n }\r\n }\r\n\r\n private get id() {\r\n return new Date().valueOf();\r\n }\r\n\r\n private get prevButtonSelector() {\r\n return 'custom-swiper-button-prev-' + this.id;\r\n }\r\n\r\n private get nextButtonSelector() {\r\n return 'custom-swiper-button-next-' + this.id;\r\n }\r\n\r\n handleBreakpointChange() {\r\n const newBreakpoint = breakpointService.getActiveBreakpoint();\r\n if (newBreakpoint !== this.activeBreakpoint) {\r\n this.activeBreakpoint = newBreakpoint;\r\n this.rendered = false;\r\n this.setSlidesPerView();\r\n this.$nextTick(() => this.rendered = true);\r\n }\r\n }\r\n\r\n mounted() {\r\n this.activeBreakpoint = breakpointService.getActiveBreakpoint();\r\n breakpointService.addListener(this.handleBreakpointChange);\r\n this.setSlidesPerView();\r\n this.$nextTick(() => {\r\n this.rendered = true;\r\n });\r\n }\r\n\r\n destroyed() {\r\n breakpointService.removeListener(this.handleBreakpointChange);\r\n }\r\n\r\n setSlidesPerView() {\r\n this.slidesPerView = breakpointState.isBreakpointActive(MIN_LG) ? 6 : 'auto';\r\n }\r\n\r\n private get sliderOptions() {\r\n return {\r\n spaceBetween: 10,\r\n slidesPerView: this.slidesPerView,\r\n slidesPerGroup: 1,\r\n loop: false,\r\n loopFillGroupWithBlank: false,\r\n watchSlidesVisibility: true,\r\n watchOverflow: true,\r\n setWrapperSize: true,\r\n navigation: {\r\n nextEl: '.' + this.nextButtonSelector,\r\n prevEl: '.' + this.prevButtonSelector\r\n },\r\n grabCursor: true,\r\n instanceName: this.id,\r\n observer: true,\r\n observeParents: true,\r\n observeSlideChildren: true\r\n };\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CondensedProductList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CondensedProductList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CondensedProductList.vue?vue&type=template&id=255bca5b&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=255bca5b&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 \"255bca5b\",\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 private messages: ClientMessage[] = [];\r\n private errorId: string = '';\r\n @Prop({\r\n required: true\r\n })\r\n private id!: string;\r\n\r\n private created() {\r\n bus.on(ValidationErrorEventKey, this.onMessages);\r\n }\r\n\r\n private 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 private getMessage(msgOrLabel: string): string {\r\n if (dictionaryService.exists(msgOrLabel)) {\r\n return dictionaryService.get(msgOrLabel);\r\n }\r\n return msgOrLabel;\r\n }\r\n\r\n private 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=5e361244&\"\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","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=255bca5b&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=255bca5b&lang=less&scoped=true&\"","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 private 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 private 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 private 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 private get filteredBlocks(): JsonContentWithUniqueKey[] {\r\n return this.blocks.filter(b => !this.failingBlocks.includes(b._uid));\r\n }\r\n\r\n private 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=721001a6&\"\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","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!./ImageTextVideoBlockNew.vue?vue&type=style&index=0&id=6ecafc08&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=6ecafc08&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!./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 private get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n private 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 private 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 private get itemTextStyle(): Partial | undefined {\r\n return this.textColor ? { color: this.textColor } : undefined;\r\n }\r\n\r\n private get style(): Partial {\r\n return {\r\n backgroundColor: this.backgroundColor,\r\n color: this.textColor\r\n };\r\n }\r\n\r\n private 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=1369ca5d&\"\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._f(\"t\")('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._f(\"t\")('Information.CancelNewsletter.Email'))+\" \")]),_c('input-text',{staticClass:\"mt-20\",attrs:{\"name\":\"email\",\"type\":\"text\",\"label\":_vm._f(\"t\")('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._f(\"t\")('Information.SendApplication'),\"type\":\"submit\"}})],1)]}}],null,false,3275895775)})],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._f(\"t\")('Information.CancelNewsletter.SuccesTitle'))+\" \")]),_c('p',{staticClass:\"my-10 whitespace-pre-line bg-white p-20\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('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 private loading: boolean = false;\r\n private success: boolean = false;\r\n private email: string = '';\r\n\r\n private reset() {\r\n this.email = '';\r\n }\r\n\r\n private 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=14aafb6b&\"\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._f(\"t\")('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 private 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=d5f3b642&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=d5f3b642&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 \"d5f3b642\",\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},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}})]),_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._f(\"localeNumber\")(brand.productCount))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Brand.Recommendations.ProductCount'))+\" \")])]),_c('div',{staticClass:\"w-1/2 text-center\"},[_c('div',{staticClass:\"font-bold\"},[_vm._v(\" \"+_vm._s(_vm._f(\"localeNumber\")(brand.categoryCount))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('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\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 private content!: BrandRecommendationsBlockViewModel;\r\n\r\n @Prop({\r\n required: false,\r\n type: Boolean,\r\n default: false\r\n })\r\n private isFirstBlock!: boolean;\r\n\r\n rendered: boolean = false;\r\n activeBreakpoint: string = '';\r\n private result: RecommendedBrandsViewModel | null = null;\r\n private debouncedTrackBrandViewed = debounce(this.doTrackBrandViewed, 500);\r\n private viewedBrands: { name: string, id: string, creative?: string }[] = [];\r\n\r\n private 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 private get id() {\r\n return new Date().valueOf();\r\n }\r\n\r\n private get prevButtonSelector() {\r\n return 'custom-swiper-button-prev-' + this.id;\r\n }\r\n\r\n private get nextButtonSelector() {\r\n return 'custom-swiper-button-next-' + this.id;\r\n }\r\n\r\n handleBreakpointChange() {\r\n const newBreakpoint = breakpointService.getActiveBreakpoint();\r\n if (newBreakpoint !== this.activeBreakpoint) {\r\n this.activeBreakpoint = newBreakpoint;\r\n this.rendered = false;\r\n this.$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 private 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 private getBrandUrl(brand: RecommendedBrandViewObject): string {\r\n return `/brands/${brand.brandName.toLowerCase()}`;\r\n }\r\n\r\n private get headline(): string | undefined {\r\n return this.content?.headline;\r\n }\r\n\r\n private 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 private handleClickBrand(brand:RecommendedBrandViewObject) {\r\n GTMService.trackCreativeClick(brand.brandName, brand.brandName, undefined);\r\n }\r\n\r\n private 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 private doTrackBrandViewed() {\r\n const brands = [...this.viewedBrands];\r\n this.viewedBrands = [];\r\n GTMService.trackCreativeView(brands);\r\n }\r\n\r\n private 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=39120b7e&\"\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":""}