{"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?fd9b","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?f2d1","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?d2c3","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?59dd","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?0708","webpack:///./src/project/app/blocks/AdnuntiusHeroBannerBlock.vue?4c14","webpack:///./src/project/app/blocks/TextBlock.vue?fdcf","webpack:///./src/project/app/blocks/TextBlock.vue","webpack:///./src/project/app/blocks/TextBlock.vue?d537","webpack:///./src/project/app/blocks/TextBlock.vue?1b9a","webpack:///./src/project/app/blocks/tableHtml.service.ts","webpack:///./src/project/app/content-pages/CampaignTeaser.vue?1e40","webpack:///./src/project/app/blocks/categories/CategoryBlockItem.vue?5cf8","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?4cb2","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?a9e2","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/ImageTextVideoBlockNew.vue?4604","webpack:///./src/project/app/blocks/TextWithImageBlock.vue?4b50","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/LatestCampaignsBlock.vue?7c5d","webpack:///./src/project/app/blocks/OnePlusTwoBlocks.vue?afb4","webpack:///./src/project/app/blocks/AdnuntiusHeroBannerBlock.vue?2fee","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/BrandsBlock.vue?4f8d","webpack:///./src/assets/icons/map-marker-turquoise.svg","webpack:///./src/project/app/blocks/CategoryRecommendationsBlock.vue?5358","webpack:///./src/project/app/blocks/ContentBlockContainer.vue?92d2","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?8315","webpack:///./src/project/app/content-pages/NewsArticleTeaser.vue","webpack:///./src/project/app/content-pages/NewsArticleTeaser.vue?e58d","webpack:///./src/project/app/content-pages/NewsArticleTeaser.vue?76cb","webpack:///./src/project/app/blocks/QuoteBlock.vue?da2f","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/project/app/blocks/LatestNewsBlock.vue?9986","webpack:///./src/project/app/blocks/HeroBannerBlock.vue?5191","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?3683","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/project/app/blocks/OnePlusTwoBlocks.vue?54c2","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/app/blocks/google-maps/GoogleMapsBlock.vue?e6cd","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?f006","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?6c83","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?df1b","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?9781","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?d8fa","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/app/content-pages/NewsArticleTeaser.vue?8f85","webpack:///./src/core/messages/WebApiMessage.vue?0aa0","webpack:///./src/core/messages/WebApiMessage.vue","webpack:///./src/core/messages/WebApiMessage.vue?5af9","webpack:///./src/core/messages/WebApiMessage.vue?0b74","webpack:///./src/project/app/blocks/HalfWidthBlocks.vue?3dda","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/assets/icons/map-marker-black.svg","webpack:///./src/project/app/blocks/UniqueSellingPointBlock.vue?b2d8","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?90bc","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?ff26","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?e84a","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","isFirstBlock","trackingListName","content","useListView","listViewPageSize","productBackgroundColor","_e","staticRenderFns","result","undefined","recommendations","recommend","categoryIdFilterPositiveList","categoryIdFilterNegativeList","displayedAtLocation","displayLocation","intervalDays","interval","popularityType","popularity","categoryId","productId","getQueryParam","wid","productCount","recommendationType","type","allowFillIfNecessary","brandId","hasImages","stockFilter","showFeedProducts","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","isJpg","backgroundColorStyle","iconBackgroundColor","iconUrl","width","height","_v","_s","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","imageUrl","_f","getCategoryIdFromUrl","regMatcher","matchingRegEx","match","replace","categoriesRegEx","RegExp","isLoading","BRAND","BRAND_OVERVIEW","categoryIdFromUrl","path","customer","brandTiles","isLoggedIn","getBrandTiles","directives","rawName","ref","domProps","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","$event","apply","arguments","categoryDisplayName","campaignUrl","getUrlForMenuItem","getPageUrl","AdnuntiusPixels","header","loading","productIds","product","simpleByItemId","getProducts","id","sliderOptions","news","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","hidden","contentLoadError","adnuntiusTrackingData","adContentBlockViewModel","aspectRatio","on","imageLoaded","getAdContent","setTimeout","setThemeLoaded","getBundledPersonalizedContent","isBackgroundVideo","vimeoVideoId","overlayVimeoVideoId","overlayVimeoCta","applyTheme","lineItemId","creativeId","parentBlockAlias","isTakeOverEnabled","marginColor","imageLeft","Math","floor","getScrollbarWidth","transform","scrollBarWidth","imageRight","ImageTextVideoBlock","_b","$attrs","isHalfWidthBlock","isHeroBanner","UniqueSellingPointBlock","AllowedBlocks","alias","parentAlias","$emit","isAdUnitContent","validator","value","includes","ImageTextVideoBlockNew","TextBlock","JotFormBlock","GoogleMapsBlock","CancelNewsletterBlock","newsImageFormat","date","teaser","SmartParagraph","quote","author","staticStyle","allowTransparency","allowFullscreen","allowScrolling","jotformSrc","jotFormId","window","addEventListener","handleIFrameMessage","removeEventListener","data","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","blockAlignmentRight","largeBlock","halfWidthBlocksOne","halfWidthBlocksTwo","largeBlockAlignmentValue","Left","halfWidthBlocks","ContentBlockContainer","center","defaultZoom","options","marker","groupName","markerClicked","pixelOffset","infoWindow","position","open","hideInfoWindow","expression","activeMarker","address","postalCodeAndCity","country","phoneNumber","email","mobileAspectRatio","isBreakpointActive","isMobile","widthOnScreen","aspectRatioMargins","activeBpDef","bpDef","paddingPct","realAspectRatio","margin","lat","lng","styles","featureType","elementType","stylers","visibility","isOprema","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","rendered","category","handleSlideVisible","viewed","handleClickCategory","imageIndex","resizeImageByPath","uri","displayName","brandCount","activeBreakpoint","debouncedTrackCategoryViewed","doTrackCategoryViewed","viewedCategories","slidesPerGroupAuto","newBreakpoint","getActiveBreakpoint","$nextTick","recommendByCategory","brandIdFilterList","periodDays","categoryCount","formatImageUrl","trackCreativeClick","push","trackCreativeView","getCategoryData","addListener","handleBreakpointChange","removeListener","ResponsiveIcon","shouldUseFlexBox","hasTextContent","showCaptionAsContentTitle","caption","shouldApplyBannerTextLimits","video","showBackgroundImage","isBackgroundImageBehaviorCover","hasNoVideoOrVideoHasBeenLoaded","loadingVideo","extension","showHtmlCustomControls","isPlaying","isWithinWideBannerAspectRatio","alignRight","contentClass","subheader","colorStyle","captionColor","headerColor","headerHeadlineLevel","subheaderSizeClass","subheaderColor","ctaColor","clickHandler","clickOpenVideoOverlay","renderContent","toggleVideoState","semiTransparencyPercentage","videoAspectRatio","wideBannerAspectRatio","contentBackgroundColor","vimeoVideoAspectRatio","backgroundImageWidth","useFlexBox","backgroundImageBehavior","styling","backgroundImage","backgroundSize","top","newBackgroundWidth","newBackgroundHeight","upsizeFactor","doResize","allowUpscale","round","backgroundImageUrl","flex","backgroundPosition","left","backgroundRepeat","quality","firstSeparator","focal","qualityFormatted","format","absoluteImageUrl","getBaseUrl","forceVimeoAspectRatio","$el","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","hex","alpha","hexToRgbWithDefault","semiTransparent","makeContentBackgroundTransparent","shouldShowContentBackground","translateY","level","hexColor","EETBlack","Right","widthCls","OneThird","adImages","backgroundImages","img","isMatchingImageAspectRatio","allowedDelta","abs","adnuntiusImages","srcset","join","sort","imageA","imageB","sizes","realWidthOnScreen","shimColor","opacity","videoContainerMoreNarrowThanVideo","captionLocation","adImageProps","showCallToActionButton","show","Function","immediate","SpinnerOverlay","CallToAction","campaign","anyCampaignWithImageOrIcon","firstCampaign","campaigns","c","showIcon","autoHeight","CampaignTeaser","tab","keepAlive","blocks","Tabs","Tab","messages","_t","message","getMessage","errorId","bus","onMessages","validationErrorEvent","messagesId","handled","msgOrLabel","exists","get","off","block","_uid","isSiblingVimeoVideo","failingBlocks","siblingIndex","sibling","b","uid","isInHalfWidth","wrapperClass","pointsClass","itemClasses","itemTextStyle","classes","uniqueSellingPointItems","UniqueSellingPointItem","success","subtitle","handleSubmit","preventDefault","submit","model","callback","$$v","newsletter","unsubscribe","WebApiMessage","forceImageThumb","xs","md","lg","iconInImage","defaultCampaignIcon","campaignName","endDate","buttonText","ResponsiveProductImage","recommendedBrands","getBrandUrl","handleClickBrand","imageLoadFailed","brandLogo","imageLoadError","isSimpleView","debouncedTrackBrandViewed","doTrackBrandViewed","viewedBrands","recommendPopularBrands","toLowerCase","creative","$forceUpdate","getBrandData"],"mappings":"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","file":"js/basic-blocks.832a8c58.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,\"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._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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, { UrlQueryKey } from '@/core/urlHelper.service';\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 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 private result: ProductTileViewModel | null = null;\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 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 hasImages: this.content.hasImages,\r\n stockFilter: this.content.stockFilter,\r\n showFeedProducts: this.content.showFeedProducts\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 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=829aa3e8&\"\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.isJpg},style:(_vm.backgroundColorStyle(_vm.content.iconBackgroundColor))},[_c('img',{staticClass:\"self-center h-full\",class:{'max-w-usp-icon max-h-usp-icon': !_vm.isJpg},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.isJpg},style:(_vm.backgroundColorStyle(_vm.content.iconBackgroundColor))},[_c('img',{staticClass:\"self-center h-full\",class:{'c-usp-item__icon-svg': !_vm.isJpg},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 isJpg() {\r\n return this.iconUrl.indexOf('.jpg') !== -1 || this.iconUrl.indexOf('.jpeg') !== -1;\r\n }\r\n\r\n private get width() {\r\n return this.isJpg ? 80 : 40;\r\n }\r\n\r\n private get height() {\r\n return this.isJpg ? 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=5f089585&\"\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 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=86e73c1a&\"\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('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)+\" \")]):_vm._e(),(_vm.content.linkText)?_c('div',{staticClass:\"hidden md:inline-block\"},[_c('call-to-action',{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:\"brand-item my-15 md:my-30\"},[_c('culture-aware-router-link',{staticClass:\"brand-link flex items-center justify-center\",attrs:{\"to\":{ name: _vm.brandPageName, params: { brandName: brand.brandName } }}},[_c('img',{staticClass:\"brand-logo\",attrs:{\"src\":brand.imageUrl,\"alt\":brand.brandName}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm._f(\"t\")('BrandHero.BrandLogo.SeeAllProductsFrom'))+\" \"+_vm._s(brand.brandName))])])],1)})],2),_c('div',{staticClass:\"md:hidden\"},[_c('call-to-action',{staticClass:\"cta--blue-light\",attrs:{\"text\":_vm.content.linkText,\"href\":{ name: _vm.brandPageName }}})],1)]):_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\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\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: CustomerBrandTileViewObject[] = [];\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 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=673cb0b1&scoped=true&\"\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&id=673cb0b1&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 \"673cb0b1\",\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=71520eee&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=71520eee&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 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","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=5ee7ce3c&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=5ee7ce3c&lang=less&scoped=true&\"","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('c-icon',{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=71520eee&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=71520eee&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 \"71520eee\",\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\"},[_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('c-icon',{attrs:{\"name\":\"arrow-thin-left\",\"width\":\"25\",\"height\":\"25\"}})],1),_c('button',{staticClass:\"custom-swiper-button-next hidden md:block\",class:_vm.nextButtonSelector,attrs:{\"slot\":\"button-next\",\"type\":\"button\"},slot:\"button-next\"},[_c('c-icon',{attrs:{\"name\":\"arrow-thin-right\",\"width\":\"25\",\"height\":\"25\"}})],1)],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 { NewsPageViewModel } from '@/types/contentServerContract';\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport NewsArticleTeaser from '@/project/app/content-pages/NewsArticleTeaser.vue';\r\n\r\n@Component({\r\n components: { NewsArticleTeaser }\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=3d6bd27c&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=3d6bd27c&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 \"3d6bd27c\",\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=93f6d074&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=93f6d074&lang=less&scoped=true&\"","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!./LatestCampaignsBlock.vue?vue&type=style&index=0&id=55b5d080&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=55b5d080&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!./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',{staticClass:\"center-banner\",class:{ 'o-container': _vm.isTakeOverBanner, 'o-container--bleed' : _vm.isFirstBlock, hidden: _vm.contentLoadError }},[_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 [(_vm.adContentBlockViewModel)?_c('ImageTextVideoBlock',{attrs:{\"content\":_vm.adContentBlockViewModel,\"content-load-error\":_vm.contentLoadError,\"width-on-screen\":100,\"aspect-ratio\":_vm.aspectRatio,\"is-first-block\":_vm.isFirstBlock,\"should-apply-banner-text-limits\":true,\"click-handler\":click},on:{\"loaded\":function($event){return _vm.imageLoaded()}}}):_vm._e()]}}])})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } 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\ninterface ExtendedAdContentBlockViewModel extends AdContentBlockViewModel {\r\n isBackgroundVideo?: boolean;\r\n}\r\n@Component({\r\n components: { AdnuntiusPixels, ImageTextVideoBlock }\r\n})\r\nexport default class AdnuntiusHeroBannerBlock extends Vue {\r\n private adContentBlockViewModel: ExtendedAdContentBlockViewModel | null = null;\r\n private contentLoadError = false;\r\n private adnuntiusTrackingData: AdnuntiusTrackingData | null = null;\r\n\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 get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n private created() {\r\n this.getAdContent(this.content.settings.selectedAdUnitIdContent.adUnitId);\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 private async getAdContent(adUnitId: string) {\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 this.adContentBlockViewModel = adContentBlockViewModel;\r\n\r\n if (this.isFirstBlock) {\r\n themeService.applyTheme(this.adContentBlockViewModel);\r\n }\r\n\r\n if (this.adContentBlockViewModel.lineItemId && this.adContentBlockViewModel.creativeId) {\r\n this.adnuntiusTrackingData = {\r\n lineItemId: this.adContentBlockViewModel.lineItemId,\r\n creativeId: this.adContentBlockViewModel.creativeId,\r\n parentBlockAlias: 'personalizedContentHero'\r\n };\r\n }\r\n } catch {\r\n this.contentLoadError = true;\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.adContentBlockViewModel?.marginColor) return undefined;\r\n\r\n return {\r\n backgroundColor: this.adContentBlockViewModel?.marginColor\r\n };\r\n }\r\n\r\n private get leftImage() {\r\n return this.adContentBlockViewModel?.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.adContentBlockViewModel?.imageLeft) return undefined;\r\n\r\n return {\r\n transform: `translateX(calc((100vw - 1440px) / 2 - ${this.adContentBlockViewModel.imageLeft.width}px - ${this.scrollBarWidth}px))`\r\n };\r\n }\r\n\r\n private get rightImage() {\r\n return this.adContentBlockViewModel?.imageRight?.url;\r\n }\r\n\r\n private get rightImagePosition(): Partial | undefined {\r\n if (!this.adContentBlockViewModel?.imageRight) return undefined;\r\n\r\n return {\r\n transform: `translateX(calc((1440px - 100vw) / 2 + ${this.adContentBlockViewModel.imageRight.width}px + ${this.scrollBarWidth}px))`\r\n };\r\n }\r\n\r\n private get renderedPixelUrl() {\r\n return this.adContentBlockViewModel?.renderedPixelUrl;\r\n }\r\n\r\n private get viewPixelUrl() {\r\n return this.adContentBlockViewModel?.viewPixelUrl;\r\n }\r\n\r\n private get visiblePixelUrl() {\r\n return this.adContentBlockViewModel?.visiblePixelUrl;\r\n }\r\n\r\n private get clickPixelUrl() {\r\n return this.adContentBlockViewModel?.clickPixelUrl;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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=06b95b6c&\"\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!./BrandsBlock.vue?vue&type=style&index=0&id=673cb0b1&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!./BrandsBlock.vue?vue&type=style&index=0&id=673cb0b1&lang=less&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/map-marker-turquoise.d2be1daf.svg\";","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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}},'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._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { 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\nconst UniqueSellingPointBlock = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './UniqueSellingPointBlock.vue');\r\n\r\nconst AllowedBlocks: BlockName[] = ['heroBanner', 'personalizedContent', 'halfWidthBlock', 'textBlock', 'jotFormBlock', 'map', 'cancelNewsletterBlock', 'uniqueSellingPointBlock'];\r\n\r\n@Component({\r\n components: { UniqueSellingPointBlock, ImageTextVideoBlock, ImageTextVideoBlockNew, AdnuntiusPixels, TextBlock, JotFormBlock, GoogleMapsBlock, CancelNewsletterBlock }\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 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 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 if (this.isAdUnitContent) {\r\n this.getAdContent((this.content as PersonalizedContentBlockViewModel).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=4ddee021&\"\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('c-icon',{staticClass:\"logo\",attrs:{\"name\":\"logo\"}})],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\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\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","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=f0727e44&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=f0727e44&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 \"f0727e44\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{staticClass:\"h-full p-30 md:p-40\",class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock },style:(_vm.style)},[_c('div',{staticClass:\"flex\"},[_c('div',{staticClass:\"flex flex-shrink-0\"},[_c('c-icon',{staticClass:\"hidden md:block\",attrs:{\"name\":\"quote\",\"height\":\"30\",\"width\":\"64\"}}),_c('c-icon',{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=0c9d8553&\"\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","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=3d6bd27c&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=3d6bd27c&lang=less&scoped=true&\"","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('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('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('c-icon',{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=09d9fd25&\"\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('ResponsiveIcon',{staticClass:\"m-auto\",attrs:{\"image-url\":_vm.resizeImageByPath(image.uri),\"height\":100,\"width\":100,\"alt-text\":category.displayName}})],1)}),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('c-icon',{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('c-icon',{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 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\n\r\n@Component({\r\n components: { ResponsiveIcon, 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): string {\r\n return responsiveProductImageService.formatImageUrl(path, '86');\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=7df2cb5a&\"\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 }},[(_vm.showCaptionAsContentTitle && _vm.content.caption)?_c('SmartHeadline',{staticClass:\"text-18 md:text-34 mb-10\",attrs:{\"style-as-h1\":_vm.isFirstBlock}},[(!_vm.shouldApplyBannerTextLimits)?[_vm._v(\" \"+_vm._s(_vm.content.caption)+\" \")]:[_c('SmartParagraph',{attrs:{\"content\":_vm.content.caption,\"max-characters\":20}})]],2):_vm._e(),(_vm.content)?_c('section',{ref:\"element\",staticClass:\"relative\",class:{ 'has-video-or-image' : _vm.content.vimeoVideoId || _vm.content.video || _vm.showBackgroundImage,\n 'flex flex-col flex-1': _vm.shouldUseFlexBox && _vm.hasTextContent,\n 'flex': _vm.isHeroBanner && _vm.hasTextContent,\n 'h-full': _vm.shouldUseFlexBox && !_vm.hasTextContent,\n 'h-full': _vm.hasTextContent && !_vm.showBackgroundImage,\n 'min-h-280': _vm.showBackgroundImage && _vm.isBackgroundImageBehaviorCover && !(_vm.isHeroBanner && !_vm.hasTextContent),\n 'md:min-h-350 lg:min-h-400': _vm.showBackgroundImage && !(_vm.isHeroBanner && !_vm.hasTextContent),\n 'md:h-full': _vm.showBackgroundImage },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 xl:py-60': !_vm.isWithinWideBannerAspectRatio },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.shouldApplyBannerTextLimits)?[_vm._v(\" \"+_vm._s(_vm.content.caption)+\" \")]:[_c('smart-paragraph',{attrs:{\"content\":_vm.content.caption,\"max-characters\":20}})]],2):_vm._e(),(_vm.content.header)?_c('SmartHeadline',{directives:[{name:\"font-content-sync\",rawName:\"v-font-content-sync\",value:(_vm.headerFontSyncData),expression:\"headerFontSyncData\"}],class:{ 'mb-10': _vm.content.subheader, 'sm:mb-15': _vm.content.subheader && !_vm.isWithinWideBannerAspectRatio },style:(_vm.colorStyle(_vm.content.headerColor)),attrs:{\"level\":_vm.headerHeadlineLevel,\"style-as-h1\":true}},[(!_vm.shouldApplyBannerTextLimits)?[_vm._v(\" \"+_vm._s(_vm.content.header)+\" \")]:[_c('smart-paragraph',{attrs:{\"content\":_vm.content.header,\"max-characters\":30}})]],2):_vm._e(),(_vm.content.subheader)?_c('p',{staticClass:\"leading-normal whitespace-pre-line\",class:_vm.subheaderSizeClass,style:(_vm.colorStyle(_vm.content.subheaderColor))},[(!_vm.shouldApplyBannerTextLimits)?[_vm._v(\" \"+_vm._s(_vm.content.subheader)+\" \")]:[_c('SmartParagraph',{attrs:{\"content\":_vm.content.subheader,\"max-characters\":180}})]],2):_vm._e(),(_vm.showCallToActionButton)?_c('CallToAction',{staticClass:\"cta--rounded\",class:{ 'mt-15': _vm.isWithinWideBannerAspectRatio, 'mt-20': !_vm.isWithinWideBannerAspectRatio },attrs:{\"hex-color\":_vm.ctaColor,\"text\":_vm.content.callToAction.name,\"href\":_vm.content.callToAction.url,\"target\":_vm.content.callToAction.target,\"max-characters\":_vm.shouldApplyBannerTextLimits ? 30 : -1,\"on-click-event\":_vm.clickHandler}}):(_vm.showCallToActionVideoOverlayButton)?_c('CallToAction',{staticClass:\"cta--rounded\",class:{ 'mt-15': _vm.isWithinWideBannerAspectRatio, 'mt-20': !_vm.isWithinWideBannerAspectRatio },attrs:{\"hex-color\":_vm.ctaColor,\"text\":_vm.content.overlayVimeoCta,\"max-characters\":_vm.shouldApplyBannerTextLimits ? 30 : -1,\"on-click-event\":_vm.clickHandler},on:{\"click\":_vm.clickOpenVideoOverlay}}):_vm._e()],1)])]):_vm._e(),(_vm.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('c-icon',{staticClass:\"play\",attrs:{\"name\":\"play\",\"width\":\"30\",\"height\":\"30\"}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Play\")])]:[_c('c-icon',{staticClass:\"pause\",attrs:{\"name\":\"pause\",\"width\":\"30\",\"height\":\"30\"}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Pause\")])]],2)]):_vm._e(),(_vm.loadingVideo)?_c('div',{staticClass:\"absolute inset-0\"},[_c('SpinnerOverlay',{attrs:{\"show\":\"\"}})],1):_vm._e()]):_vm._e(),(_vm.showCallToActionBlock)?_c('CultureAwareRouterLink',{staticClass:\"absolute inset-0\",attrs:{\"to\":_vm.content.callToAction.url,\"target\":_vm.content.callToAction.target},nativeOn:{\"click\":function($event){return _vm.clickHandler()}}}):_vm._e()],1):_c('section',{staticClass:\"relative\",style:(_vm.aspectRatioStyling)},[_c('div',{staticClass:\"absolute inset-0\"},[_c('SpinnerOverlay',{attrs:{\"show\":!_vm.contentLoadError}})],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 type: Boolean,\r\n default: false\r\n }) shouldApplyBannerTextLimits!: boolean;\r\n\r\n @Prop({\r\n required: true,\r\n type: Number\r\n }) widthOnScreen!: number;\r\n\r\n @Prop({\r\n required: true,\r\n type: Number\r\n }) aspectRatio!: number;\r\n\r\n @Prop()\r\n forceVimeoAspectRatio!: number;\r\n\r\n @Prop({\r\n required: false,\r\n type: Object\r\n }) aspectRatioMargins!: { [bp: string]: number };\r\n\r\n private get shouldUseFlexBox() {\r\n return this.useFlexBox && !this.isMobile;\r\n }\r\n\r\n private video: VimeoPlayer | VideoElm | null = null;\r\n private isPlaying: boolean = false;\r\n private loadingVideo: boolean = 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 return !!(this.content?.header || this.content?.subheader || this.content?.caption || this.content?.callToAction?.url);\r\n }\r\n\r\n private get isBackgroundImageBehaviorCover(): boolean {\r\n return this.content?.backgroundImageBehavior === 'cover';\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 (backgroundImageBehavior === 'cover') {\r\n aspectRatio = null;\r\n } else if (backgroundImageBehavior === 'alignTop') {\r\n this.content.backgroundImage.focalPoint.top = 0;\r\n backgroundSize = 'contain';\r\n } else if (backgroundImageBehavior === 'center') {\r\n backgroundSize = 'contain';\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 styling.backgroundColor = this.backgroundColorStyle.backgroundColor;\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 if (this.content?.vimeoVideoId && this.vimeoVideoAspectRatio !== null) {\r\n // @ts-ignore\r\n styling.aspectRatio = this.vimeoVideoAspectRatio.width / this.vimeoVideoAspectRatio.height;\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 subheaderSizeClass(): string {\r\n if (!this.subheaderSize) return '';\r\n\r\n return this.subheaderSize === 'small' ? 'text-15' : this.video ? 'text-18' : 'text-22';\r\n }\r\n\r\n private get subheaderSize(): undefined | 'small' | 'large' {\r\n if (!this.content) return undefined;\r\n\r\n if (breakpointState.isBreakpointActive(MAX_MD)) {\r\n return 'small';\r\n }\r\n\r\n return this.content.subheaderFontSizeValue === SubheaderFontSize.Normal ? 'small' : 'large';\r\n }\r\n\r\n private get adnuntiusImages() : AdImage[] {\r\n const adImages = (this.content as any as AdContentBlockViewModel).backgroundImages;\r\n if (!adImages || adImages.length === 0) {\r\n return [];\r\n }\r\n\r\n // Take the ones matching aspect-ratio\r\n return adImages\r\n .filter(img => isMatchingImageAspectRatio(img, this.realAspectRatio));\r\n\r\n function isMatchingImageAspectRatio(image: AdImage, aspectRatio: number): boolean {\r\n // Allow for 5 percentage in difference, to be a bit relaxed. Image will overflow correctly\r\n const allowedDelta = aspectRatio * 0.05;\r\n return Math.abs(image.width / image.height - aspectRatio) <= allowedDelta;\r\n }\r\n }\r\n\r\n private get adImageProps(): object | null {\r\n if (this.adnuntiusImages.length === 0) {\r\n return null;\r\n }\r\n\r\n // Src-set\r\n const srcset = this.adnuntiusImages\r\n .map(img => `${img.url} ${img.width}w`)\r\n .join(', ');\r\n\r\n // src. Take largest\r\n const src = this.adnuntiusImages\r\n .sort((imageA, imageB) => imageA.width - imageB.width)[this.adnuntiusImages.length - 1].url;\r\n\r\n // Sizes\r\n const sizes = `${this.realWidthOnScreen}vw`;\r\n\r\n return {\r\n srcset,\r\n src,\r\n sizes\r\n };\r\n }\r\n\r\n private get shimColor(): Partial {\r\n return { backgroundColor: this.content?.shimColor, opacity: '0.3' };\r\n }\r\n\r\n private get 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 if (this.content.vimeoVideoId) return {};\r\n\r\n return this.videoContainerMoreNarrowThanVideo ? ({\r\n width: 100 + '%',\r\n height: '100%',\r\n left: '50%',\r\n transform: 'translateX(-50%)'\r\n }) : ({\r\n ...(!!(this.content.vimeoVideoId) && { height: 100 * videoAspectRatio + '%' }),\r\n width: '100%',\r\n top: '50%',\r\n transform: 'translateY(-50%)'\r\n });\r\n }\r\n\r\n private get shouldShowContentBackground(): boolean {\r\n return this.showBackgroundImage || !!((this.content as any as AdContentBlockViewModel)?.backgroundImages?.length > 0) || !!this.content?.vimeoVideoId;\r\n }\r\n\r\n private get 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=93f6d074&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=93f6d074&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 \"93f6d074\",\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 o-container--bleed\",class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock }},[_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 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=c5a1c9fe&\"\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\"},[_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('c-icon',{attrs:{\"name\":\"arrow-thin-left\",\"width\":\"25\",\"height\":\"25\"}})],1),_c('button',{staticClass:\"custom-swiper-button-next hidden md:block\",class:_vm.nextButtonSelector,attrs:{\"slot\":\"button-next\",\"type\":\"button\"},slot:\"button-next\"},[_c('c-icon',{attrs:{\"name\":\"arrow-thin-right\",\"width\":\"25\",\"height\":\"25\"}})],1)],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 { CampaignsViewModel } from '@/types/contentServerContract';\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport CampaignTeaser from '@/project/app/content-pages/CampaignTeaser.vue';\r\n\r\n@Component({\r\n components: { CampaignTeaser }\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=55b5d080&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=55b5d080&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 \"55b5d080\",\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\":\"ml-20 md:ml-0 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=656495a6&\"\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&\"","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=f0727e44&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=f0727e44&lang=less&scoped=true&\"","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","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","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('c-icon',{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 ResponsiveProductImage from '@/project/product/image/ResponsiveProductImage.vue';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport ResponsiveIcon from '@/core/responsive/image/ResponsiveIcon.vue';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\n\r\n@Component({\r\n components: { ResponsiveIcon, SmartHeadline, ResponsiveProductImage }\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=5ee7ce3c&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=5ee7ce3c&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 \"5ee7ce3c\",\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 justify-center\"},_vm._l((_vm.recommendedBrands),function(brand,index){return _c('div',{key:index,staticClass:\"c-recommendation-brand-simple--item mb-10\"},[_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 px-10 md:px-15 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\"}],staticClass:\"m-auto max-h-35 min-h-15 min-w-15 md:max-w-100\",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:\"font-bold text-15 text-center px-10 md:px-20 hyphenate\"},[_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('c-icon',{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('c-icon',{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-90': _vm.content.isSimpleView === true}})],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { CategoryRecommendationsBlockViewModel } 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 BrandRecommendationsBlockViewModel extends Omit {\r\n brandCount: number;\r\n isSimpleView: boolean;\r\n}\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 displayedAtLocation: this.content.displayLocation,\r\n periodDays: this.content.interval,\r\n popularityType: this.content.popularity,\r\n brandCount: this.content.brandCount\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, '86');\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=567f0baf&\"\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":""}