{"version":3,"sources":["webpack:///./Avensia.Common/Features/Shared/SharedComponents/molecules/ImageVideoBackground.tsx","webpack:///./Avensia.Common/Features/Shared/SharedComponents/atoms/Breadcrumbs.tsx","webpack:///./Avensia.Common/Features/Shared/Page/PageContent.tsx","webpack:///./Avensia.Common/Features/Shared/Video/VideoSource.tsx","webpack:///./Avensia.Common/Features/Shared/Video/VideoPlayer.tsx","webpack:///./Avensia.Common/Features/Shared/Icons/Chevron.tsx","webpack:///./Avensia.Common/Features/Shared/Icons/Play.tsx","webpack:///./Avensia.Common/Features/Shared/Icons/Glyphs/ChevronRight_12x12.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Glyphs/ChevronRight_16x16.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Glyphs/ChevronRight_24x24.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Sound.tsx","webpack:///./Avensia.Common/Features/Shared/SharedComponents/atoms/Slider.tsx","webpack:///./Avensia.Common/Features/Shared/Video/SoundControls.tsx","webpack:///./Avensia.Common/Features/Shared/Video/TimeControls.tsx","webpack:///./Avensia.Common/Features/Shared/Icons/Pause.tsx","webpack:///./Avensia.Common/Features/Shared/Video/PlayControls.tsx","webpack:///./Avensia.Common/Features/Shared/Icons/Maximize.tsx","webpack:///./Avensia.Common/Features/Shared/Icons/Minimize.tsx","webpack:///./Avensia.Common/Features/Shared/Video/MaximizeControls.tsx","webpack:///./Avensia.Common/Features/Shared/Video/Video.tsx","webpack:///./Avensia.Common/Features/Shared/Icons/glyphs/Play_12x12.svg","webpack:///./Avensia.Common/Features/Shared/Icons/glyphs/Play_24x24.svg","webpack:///./Avensia.Common/Features/Shared/Icons/glyphs/Sound_34x24.svg","webpack:///./Avensia.Common/Features/Shared/Icons/glyphs/SoundMuted_34x24.svg","webpack:///./Avensia.Common/Features/Shared/Icons/glyphs/Pause_24x24.svg","webpack:///./Avensia.Common/Features/Shared/Icons/glyphs/Maximize_24x24.svg","webpack:///./Avensia.Common/Features/Shared/Icons/glyphs/Minimize_24x24.svg","webpack:///./Avensia.Common/Features/Product/ProductTags/index.tsx","webpack:///./Avensia.Common/Features/Product/ProductFeature/index.tsx","webpack:///./Avensia.Common/Features/Product/ImageGallery/DesktopImageGallery.tsx","webpack:///./Avensia.Common/Features/Product/ImageGallery/MobileImageGallery.tsx","webpack:///./Avensia.Common/Features/Product/ProductFeatureList/index.tsx","webpack:///./Avensia.Common/Features/Shared/SharedComponents/atoms/InputField.tsx","webpack:///./Avensia.Common/Features/Shared/distance-calculations.ts","webpack:///./Avensia.Common/Features/Shared/Icons/glyphs/Store_12x12.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Glyphs/washcare/Dripdry.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Glyphs/washcare/Dryclpetr.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Glyphs/washcare/Dryflat.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Glyphs/washcare/Handwash.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Glyphs/washcare/IronH.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Glyphs/washcare/IronL.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Glyphs/washcare/IronM.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Glyphs/washcare/Linedry.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Glyphs/washcare/Nobleach.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Glyphs/washcare/Nodrycl.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Glyphs/washcare/NoIron.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Glyphs/washcare/Notumble.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Glyphs/washcare/Nowash.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Glyphs/washcare/TumbleH.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Glyphs/washcare/TumbleL.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Glyphs/washcare/TumbleM.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Glyphs/washcare/Temp-Wash.svg","webpack:///./Avensia.Common/Features/Shared/Icons/Store.tsx","webpack:///./Avensia.Common/Features/Shared/SharedComponents/molecules/FillableCircles.tsx","webpack:///./Avensia.Common/Features/Product/Reviews.tsx","webpack:///./Avensia.Common/Features/Product/ProductActivities/index.tsx","webpack:///./Avensia.Common/Features/Product/ExtendedData/index.tsx","webpack:///./Avensia.Common/Features/Product/PreviousPurchase/index.tsx","webpack:///./Avensia.Common/Features/Product/Sizes.tsx","webpack:///./Avensia.Common/Features/Product/ProductAccordion/ReviewCard.tsx","webpack:///./Avensia.Common/Features/Product/ProductAccordion/ReviewsContent.tsx","webpack:///./Avensia.Common/Features/Shared/Icons/WashCareIcons.tsx","webpack:///./Avensia.Common/Features/Product/WashAndCare/index.tsx","webpack:///./Avensia.Common/Features/Product/ProductAccordion/MaterialsContent.tsx","webpack:///./Avensia.Common/Features/Product/ProductAccordion/SustainabilityContent.tsx","webpack:///./Avensia.Common/Features/Product/ProductAccordion/index.tsx","webpack:///./Avensia.Common/Features/Product/StoreAvailabilityModal/OpeningHours.tsx","webpack:///./Avensia.Common/Features/Product/StoreAvailabilityModal/StoreInformation.tsx","webpack:///./Avensia.Common/Features/Product/StoreAvailabilityModal/StoreAvailabilityCard.tsx","webpack:///./Avensia.Common/Features/Product/StoreAvailabilityModal/SearchStores.tsx","webpack:///./Avensia.Common/Features/Product/StoreAvailabilityModal/index.tsx","webpack:///./Avensia.Common/Features/Product/SizeGuideModal/index.tsx","webpack:///./Avensia.Common/Features/Product/Variation/index.tsx"],"names":["AspectImageVideoBackground","props","children","image","paddingTop","videoSources","borderRadius","breakPoint","className","preset","isMobile","gotVideo","length","css","background","url","size","position","autoPlay","loop","muted","playsInline","coverContent","sources","ViewportSizeVideoBackground","fixedVideo","height","compose","hasVideo","Div","width","clipPath","overflow","AutoSizeVideoBackground","BaseWrap","div","textDecoration","display","flexDirection","padding","xy","VerticalWrap","transform","justifyContent","writingMode","alignItems","x","HorizontalWrap","flexWrap","overflowX","overflowY","scrollbarWidth","ListWrap","ListItem","gap","BreadCrumbLink","whiteSpace","vertical","breadcrumbs","white","opaqueColor","isCompact","isProductPage","monochrome","black","halfTransparentColor","rgbaFilters","white50","black50","containerRef","current","scrollLeft","offsetWidth","Wrapper","ref","itemType","itemScope","map","crumb","index","array","key","color","itemProp","to","title","text","content","String","window","location","protocol","host","TopLabel","margin","top","bottom","ReadMoreWrap","marginTop","ReadMore","span","a11ygrey","cursor","textTransform","fontSize","fontWeight","TopContentHeading","wordBreak","BreadcrumbWrapper","rowGap","marginLeft","marginRight","TopContentWideWrapper","TopContentWide","TopContent","TopContentButton","TopContentIntro","p","TopContentWrap","TopContentChildren","label","heading","headingSize","modalButtonText","modalButtonClick","modalButtonIconAfter","intro","handleReadMore","readMoreLabel","Small","onClick","iconAfter","theme","WhiteToBlack","render","this","type","videoType","src","Component","videoRef","playerRef","hlsSource","find","device","isSupported","hls","loadSource","attachMedia","on","Events","MANIFEST_PARSED","play","canPlayType","volume","onEnded","style","zIndex","left","objectFit","objectPosition","filter","source","i","Right12x12","Down12x12","Up12x12","Right16x16","Right24x24","Play12x12","Play24x24","React","ChevronRight12x12","createElement","defaultProps","module","exports","default","ChevronRight16x16","ChevronRight24x24","Sound34x24","SoundMuted34x24","SliderInput","input","appearance","backgroundColor","y","min","max","value","updateValue","onChange","e","parseFloat","target","Wrap","Sound","Muted","mediaRef","setMuted","setVolume","selectedValue","selectedVolume","newVolume","Math","adjustVolume","currentTime","setCurrentTime","duration","setDuration","interval","setInterval","readyState","clearInterval","selectedTime","newTime","skipToTime","Pause24x24","Play","Pause","isPlaying","pause","Maximize24x24","Minimize24x24","isMaximized","updateIsMaximized","document","onfullscreenchange","fullscreenElement","exitFullscreen","parentElement","requestFullscreen","alignSelf","VideoStopped","VideoStartedWrap","paddingBottom","VideoStartedWrapDesktop","TimeControlWrapMobile","ButtonsWrapDesktop","ButtonsWrapMobile","PlusIcon","Plus","OuterBase","OuterMobile","OuterDesktop","Inner","previewImage","previewImagePreset","previewVideoSources","videoStarted","stopVideo","buttonsInControls","setIsPlaying","setIsMaximized","VideoStartedWrapElement","Outer","VideoPlayer","id","event","currentTarget","buttonInControls","Video","TransparentWhite","InlineWrap","extraLightGrey","flexBasis","flexGrow","ReadMoreLabel","BgTag","upperCase","tags","nrToDisplay","slice","marginBottom","tag","D14_M14","readMoreClick","Overlay","Image","img","ContentWrap","Heading","fontStyle","lineHeight","FeatureImage","ProductFeature","state","currentBreakpoint","feature","deviceImage","backgroundImage","backgroundImageSmallScreen","backgroundVideoSources","imageFilter","blue","icon","D16_M16","D130_M130","ZoomWrap","pointerEvents","overscrollBehaviorY","ZoomedImage","ZoomOverlay","ZoomImage","transition","timingFunction","property","WrapRation","ResourceWrap","VideoWrap","TagsAndImageOverlay","TagsWrap","FavoriteWrap","boxShadow","SlideItem","ThumbnailImage","FavoriteIcon","FavoriteFullIcon","CarouselWrapper","CarouselImagesWrap","CarouselImagesContainer","NavNextIcon","NavPrevIcon","DesktopImageGallery","swiperRef","resources","isFavorited","toggleFavorited","headerOffset","currentItem","setCurrentItem","showZoom","setShowZoom","hasBeenClicked","setHasBeenClicked","isHovering","setIsHovering","intervalId","setIntervalId","itemCount","isMounted","slideTo","imageUrl","ItemZoom","item","ItemThumb","opacity","onMouseEnter","onMouseLeave","videoUrl","Item","code","slidePrev","newCurrentItem","slidesPerView","spaceBetween","showNav","sliderRef","onIndexChange","activeIndex","pagination","freeMode","cssMode","videoThumbnail","slideNext","ShowZoomWrap","ShowZoomIcon","ZoomContainer","SwiperVideo","SwiperImage","TagsOverlay","ShowZoomedWrap","ShowZoomedIcon","MobileImageGallery","loadedImages","setLoadedImages","zoomContainerRef","zoomImageContainerRef","zoomImageRefs","scrollIntoView","behavior","block","inline","onLoad","imageRef","elm","pagingItemCount","overflowHidden","paginationContainerCss","videoUrlSmallScreen","BigContentWrap","justifyItems","alignContent","BigIconWrap","textAlign","BigParagraphWrap","BigParagraph","CenterContent","SwiperWrap","features","smallLayout","totalCount","skipGridOffSet","slidesPerGroup","parallax","alternativeNav","listHeading","showSwirl","pagingIconColor","TwelveToTwentyThree","SixteenToNine","FullWidth","SearchBorderStyle","SearchInputElement","border","fontFamily","SearchInput","placeholderText","onUpdate","iconBefore","paddingX","paddingY","borderStyle","Surrounding","Underline","undefined","placeholder","ToggleLabel","outlineStyle","ToggleInput","ToggleSwitch","right","Toggle","initialValue","setValue","stateInitialValue","transitionDuration","brandColors","green","checked","currentValue","crowFliesDistanceToStore","store","lat","latitude","coords","long","cos","PI","longitude","sqrt","sortByCrowFliesDistance","stores","sort","a","b","aDist","bDist","fetchDrivingDistances","service","google","maps","DistanceMatrixService","getDistanceMatrix","Promise","resolve","reject","origins","LatLng","destinations","travelMode","TravelMode","DRIVING","unitSystem","UnitSystem","METRIC","response","status","DistanceMatrixStatus","OK","rows","Error","elements","distance","storeCallback","distanceMatrixPromises","all","filterByDistance","then","storeDistances","catch","filterByCrowFliesDistance","Store12x12","Dripdry","Dryclpetr","Dryflat","Handwash","IronH","IronL","IronM","Linedry","Nobleach","Nodrycl","NoIron","Notumble","Nowash","TumbleH","TumbleL","TumbleM","TempWash","circleNumbers","CircleWrap","Filled","Circle","yellow","Unfilled","numberToFill","number","InnerFlexColumn","labels","rating","numberOfReviews","flexColumn","InnerElement","description","D12_M12","reviews","ButtonWrapper","Text","productActivities","selectedActivityIndex","setSelectedActivityIndex","activity","name","selected","productText","DescriptionWrap","DescriptionBodyWrap","Html","DescriptionBody","ManufacturingWrap","ManufacturingData","ItemNumberWrap","ItemNumberData","letterSpacing","FavStyled","FavFullStyled","ButtonWrap","ProductActivitiesWrap","ProductDescriptionIntro","FavoIcon","descriptionExpanded","setDescriptionExpanded","Viewport","scrollToRef","descriptionLabel","reviewsLabel","D64_M40","productTitle","productTags","ProductTags","productDescription","D32_M24","body","manufacturingInformation","maxHeight","component","html","itemNumber","manufacturingCountryLabel","country","manufacturingFactoryLabel","factory","infoUrl","A","useDefaultLinkColor","readLessLabel","saveToWishlistLabel","loggedIn","Feedback","onSaveToWishlist","successText","pendingText","Header","BaseLine","ProductsWrap","Product","ProductImageWrap","ProductName","ProductSize","PreviousPurchase","products","topMargin","product","displayName","alt","ratio","ThreeToFour","ItemThumbLarge","sizeLabel","SizeTagsContainer","SelectableSizes","sizes","selectedSizeCode","setSelectedSize","enabled","centralStockAvailability","TransparentDisabled","sizeName","disabled","strikeThrough","AvailableSizes","availableSizes","Object","entries","entry","isAvailable","Author","Answer","P","Minus","ReviewTime","review","reviewLabels","author","score","inputDate","Date","utc1","UTC","getFullYear","getMonth","getDate","utc2","result","floor","year","years","ago","months","month","days","day","dateDiff","date","question_answers","questionAnswer","selectedOption","options","option","fitOption","fitSmall","fitNormal","fitBig","sizeFitLabel","pros","cons","extract","SummaryWrap","Data","ReviewsWrap","ShowMore","Percentage","Bar","BottomContent","Container","borderCollapse","borderSpacing","Row","Column","paddingRight","Column2","connect","testFreaksClientId","appShellData","apiKeys","recalculateHeight","reviewsSummary","setReviewsSummary","customerReviews","setCustomerReviews","numberOfReviewsShown","setNumberOfReviewsShown","nextPageUrl","setNextPageUrl","fetchReviews","reviewsUrl","fetch","customerReviewsResponse","json","customerReviewsJson","concat","next_page_url","getOption","answers","answer","count","percent","getOptionLevel","getOptionCount","reviewsResponse","reviewsJson","your_review_answers","your_avg_score","your_review_count","your_review_url","D96_M48","gotReviewAnswers","fit","_review","currentNumber","viewMore","IconDripdry","IconDryclpetr","IconDryflat","IconHandwash","IconIronH","IconIronL","IconIronM","IconLinedry","IconNobleach","IconNodrycl","IconNoIron","IconNotumble","IconNowash","IconTumbleH","IconTumbleL","IconTumbleM","IconTempWash","WashIcon","PartHeading","CompositionWrap","borderTop","CompositionHeadingWrap","CompositionItemWrap","CareInstructionsWrap","CareInstructionsHeadingWrap","CareInstructionsItemWrap","CareInstructionWashItemWrap","CareInstructionWashItemText","CareInstructionsItem","compositionLabel","compositions","careLabel","careInstructions","compositionBins","composition","materials","material","percentage","washItems","wash","careInstruction","textHeading","textIntro","linkText","linkUrl","Big","Intro","HtmlBody","MainTag","Tag","ItemImage","ItemLink","Link","sustainability","mainIntro","mainBody","SwiperList","contentItems","contentItem","CmsListItem","reduce","tagString","Divider","DividerLine","DeliveryHeadingWrap","Plus16","SectionInner","SectionContent","AccordionSection","expanded","wrapperRef","sectionId","resetExpandedSection","contentShown","setContentShown","currentHeight","setHeight","shouldTranslateHeight","isShown","willChange","requestAnimationFrame","offsetHeight","abs","updateOffsetHeight","materialsAndCareLabel","sustainabilityLabel","reviewCount","deliveryAndReturnsLabel","deliveryAndReturns","expandedSection","scrollToSectionRef","recalculateReviewsHeight","setRecalculateReviewsHeight","recalculateHeightState","Table","table","Tr","tr","Td","td","openingHours","Tbody","openingHour","hours","D14_M14_L130","OpeningHoursHeading","OpeningHoursExceptionsHeading","ContactWrap","OpeningHoursOuter","OpeningHoursWrap","flex","basis","ContactData","ContactDataText","ContactButton","openingHoursExceptions","phoneNumber","directionsLink","show","heightTest","isOpen","setIsOpen","contact","findStore","BlackToWhite","StoreDataWrap","StoreDataItem1","StoreDataItem1Row","StoreDataItem1Text","StoreDataItem2","StoreDataItem2Row","PlusRotaded","MoreInformationMobile","MoreInformationDesktop","SelectedStore","AvailableSizesMobile","storeAvailability","isSelected","moreInformationShown","setMoreInformationShown","availableSizesShown","setAvailableSizesShown","lightGrey","D20_M16","D120_M120","selectedStore","address","Br","zipCode","city","infoShown","moreInformation","availabilityStatus","availabilityLabel","availability","openHours","deviantOpenHours","directions","openingHoursDeviating","SearchInputWrap","ToggleWrap","Map","Location","updateResults","setOnlyShowIfInStock","showSpinner","searchPlaceholder","searchInStockToggle","Loader","visible","ModalScrollableContentContainer","Modal","ModalIntro","UI","googleMapsApiKey","dispatch","setSelectedStore","modalIsShown","hideModal","setStoreAvailability","onlyShowIfInStock","isPositionChecked","setIsPositionChecked","positionAllowedByClient","setPositionAllowedByClient","selectedStoreId","setSelectedStoreId","storeAvailabilityInStock","findIndex","storesLoaded","setStoresLoaded","setShowSpinner","collectStoreData","storeIds","ids","URL","search","r","storesWithIds","hasOwnProperty","push","getStores","navigator","geolocation","getCurrentPosition","filteredStores","storeAvailabilityJson","cookieStoreId","widthInColumns","textAboveHeading","closeModal","textAboveLine","resultsNear","toString","results","searchPlaceHolder","searchString","noStoresInStock","Content","Tabs","sizeInformation","tabs","tab","SizeGuide","sizeGuide","tabText","Measurement","measurement","selectedTab","setSelectedTab","D20_M20","activeTab","switchToTab","FlexElement","MainInfo","SizeSelector","SizeSelectorText","SizeGuideText","AddToCart","BackInventoryWrap","BackInventoryText","AddToCartButton","AddToCartIcon","UspItem","UspItemCheck","Check","ProductMarkingsWrap","ProductMarkingSplitter","BreadcrumbWrap","ProductDataWrap","MarkingsAndReviews","MainHeading","VariationLink","VariationLinkImage","ExtendedDataGridWrap","FeatureBlocksGridWrap","AccordionGridWrap","RecommendationsGridWrap","ItemInventory","WebInventoryInfoWrap","SelectedStoreInfoWrap","SelectedStoreInfoCity","StoreInfoWrap","StoreInfoText","ChangeStore","ShopIcon","StoreIcon","Variation","wishlist","culture","currency","market","usps","wishlistPageLocation","pages","currentUser","isLoggedIn","toggleWishlistItem","colorProductCode","currentCategory","addToCart","quantity","ticket","openAccountBox","deliveryUsps","variations","preSelectedSizeCode","previousPurchases","selectedStoreStatus","sizeBackupStoreAvailabilities","scrollToDetailsRef","scrollToReviewsRef","setFavourite","categoryName","statusCode","toggleWishlist","selectedSize","sizeGuideModalIsShown","setSizeGuideModalIsShown","storeAvailabilityModalIsShown","setStoreAvailabilityModalIsShown","expandedAccordion","setExpandedAccordion","price","inStock","contextDisplayData","productContextDisplayData","compositeItem","head","schema","getElementById","appendChild","aggregateRating","numOfReviews","schemaContent","barCode","sellingPrice","innerHTML","JSON","stringify","sentFromBackupStore","availableOnline","gotSizeInformation","markings","productMarkings","marking","Page","offsetTop","D40_M32","Price","microData","listPrice","comparePrice","displayPriceLabels","fontSizePrevPrice","rowBreakMainPrice","featureHighlightTags","readDetails","variation","replaceState","toLowerCase","mainImage","selectSize","comingSoon","addedToCart","failedText","addToCartFailed","Huge","red","inventoryOnline","showStoreInventoryStatus","changeStore","inventoryInStore","backupInventoryText","storeAvailabilityLabels","fitsWithPreviousPurchases","productDetails","reviewsLarge","reviewsNormal","reviewsSmall","reviewsSize","removeFromWishList","saveToWishList","compareProductLabel","compareWithOtherGarment","readMore","readLess","manufacturingCountry","manufacturingFactory","onCompareProduct","featureBlocks","productFeatures","ProductFeatureList","featureListHeading","accordionMaterial","careAdvice","accordionSustainability","accordionReviews","accordionDeliveryAndReturns","recommendations","recommendationsTitle"],"mappings":"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","file":"assets/15.chunk.a1ed699858781179e989.js","sourcesContent":["import React from 'react';\r\nimport { AspectRatioInner, AspectRatioOuter, OverlayNotABackdrop } from 'Shared/SharedComponents/atoms/AspectRatio';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { setImageBackground, Preset } from 'Shared/image-background';\r\nimport VideoSourceType from 'Shared/ViewModels/VideoSourceViewModel.type';\r\nimport VideoPlayer from 'Shared/Video/VideoPlayer'\r\nimport { isCompact } from 'Shared/Viewport';\r\n\r\ntype BasePropTypes = {\r\n children?: React.ReactNode;\r\n image?: { url?: string };\r\n videoSources?: VideoSourceType[];\r\n breakPoint: number;\r\n preset?: Preset;\r\n};\r\n\r\ntype ImageVideoBackgroundPropTypes = BasePropTypes & {\r\n borderRadius?: number;\r\n paddingTop: string;\r\n className?: string;\r\n};\r\n\r\ntype ViewportSizeVideoBackgroundPropTypes = BasePropTypes & {\r\n fixedVideo?: boolean;\r\n borderRadius?: number;\r\n height?: string;\r\n gradientBg?: boolean;\r\n};\r\n\r\nexport const AspectImageVideoBackground = (\r\n (\r\n props: ImageVideoBackgroundPropTypes & {},\r\n ) => {\r\n const { children,\r\n image,\r\n paddingTop,\r\n videoSources,\r\n borderRadius,\r\n breakPoint,\r\n className,\r\n preset } = props;\r\n\r\n const isMobile = isCompact(breakPoint);\r\n const gotVideo = (videoSources?.length ?? 0) > 0;\r\n return (\r\n \r\n 0 ? `${borderRadius}px` : '0px'\r\n }}\r\n >\r\n {gotVideo && (\r\n \r\n \r\n \r\n )}\r\n {children}\r\n \r\n \r\n );\r\n }\r\n);\r\n\r\nexport const ViewportSizeVideoBackground = styled(\r\n (\r\n props: ViewportSizeVideoBackgroundPropTypes & StyledProps,\r\n ) => {\r\n const { children,\r\n image,\r\n videoSources,\r\n breakPoint,\r\n fixedVideo = false,\r\n //css,\r\n borderRadius,\r\n preset,\r\n height = '100%',\r\n compose,\r\n } = props;\r\n const hasVideo = (videoSources?.length ?? 0) > 0;\r\n const isMobile = isCompact(breakPoint);\r\n return (\r\n 0 ? `${borderRadius}px` : '0px'\r\n }),\r\n ...(fixedVideo && {\r\n clipPath: 'inset(0 0 0 0)',\r\n overflow: 'hidden',\r\n }),\r\n })}\r\n >\r\n {hasVideo && (\r\n \r\n \r\n \r\n )}\r\n {children}\r\n \r\n );\r\n }\r\n);\r\n\r\ntype AutoSizeVideoBackgroundPropTypes = BasePropTypes & {\r\n borderRadius: number;\r\n gradientBg?: boolean;\r\n};\r\n\r\nexport const AutoSizeVideoBackground = styled(\r\n (\r\n props: AutoSizeVideoBackgroundPropTypes & StyledProps,\r\n ) => {\r\n const { children,\r\n image,\r\n videoSources,\r\n breakPoint,\r\n borderRadius,\r\n preset,\r\n compose,\r\n } = props;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n });\r\n","import { styled } from '@glitz/react';\r\nimport React, { useRef, useEffect } from 'react';\r\nimport Link from 'Shared/Link';\r\nimport { TextLabel } from './Typography';\r\nimport { Down12x12, Right12x12 } from 'Shared/Icons/Chevron';\r\nimport BreadcrumbsViewModel from 'Shared/Breadcrumbs/BreadcrumbsViewModel.type';\r\nimport * as style from 'Shared/Style';\r\n\r\nconst BaseWrap = styled.div({\r\n textDecoration: 'none',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n padding: { xy: '0px' },\r\n})\r\n\r\nconst VerticalWrap = styled(BaseWrap, {\r\n transform: 'rotate(180deg)',\r\n justifyContent: 'center',\r\n writingMode: 'vertical-rl',\r\n alignItems: 'start',\r\n ['@media ' + style.mediaUpToLarge]: {\r\n padding: {\r\n x: '12px'\r\n }\r\n },\r\n})\r\n\r\nconst HorizontalWrap = styled(BaseWrap, {\r\n alignItems: 'center',\r\n flexWrap: 'nowrap',\r\n overflowX: 'auto',\r\n overflowY: 'hidden',\r\n scrollbarWidth: 'none',\r\n //@ts-ignore\r\n '-ms-overflow-style': 'none',\r\n '::-webkit-scrollbar': {\r\n display: 'none'\r\n },\r\n ['@media ' + style.mediaUpToLarge]: {\r\n padding: {\r\n x: '12px'\r\n }\r\n },\r\n})\r\n\r\nconst ListWrap = styled.div({\r\n display: 'flex',\r\n alignItems: 'center',\r\n})\r\n\r\nconst ListItem = styled.div({\r\n display: 'flex',\r\n gap: '2px',\r\n alignItems: 'center',\r\n})\r\n\r\nconst BreadCrumbLink = styled(Link, {\r\n whiteSpace: 'nowrap',\r\n textDecoration: 'none',\r\n padding: { xy: '0px' },\r\n})\r\n\r\nexport const Breadcrumbs = (props: { breadcrumbs: BreadcrumbsViewModel[]; vertical?: boolean; white?: boolean, isProductPage?: boolean, isCompact?: boolean }) => {\r\n const { vertical, breadcrumbs, white, isCompact, isProductPage } = props;\r\n const opaqueColor = white ? style.colors.monochrome.white : style.colors.monochrome.black;\r\n const halfTransparentColor = white\r\n ? style.colors.rgbaFilters.white50\r\n : style.colors.rgbaFilters.black50;\r\n\r\n if (breadcrumbs?.length < 1) {\r\n return <>;\r\n }\r\n\r\n const containerRef = useRef(null)\r\n\r\n useEffect(() => {\r\n if (vertical) {\r\n return () => {}\r\n }\r\n if(containerRef && containerRef.current !== null) {\r\n containerRef.current.scrollLeft = containerRef.current.offsetWidth; \r\n }\r\n\r\n return () => {} \r\n }, [breadcrumbs])\r\n const Wrapper = vertical ? VerticalWrap : HorizontalWrap;\r\n return (\r\n \r\n \r\n {breadcrumbs?.map((crumb, index, array) => {\r\n return (\r\n \r\n {index !== 0 &&\r\n (vertical ? (\r\n \r\n ) : (\r\n \r\n )\r\n )\r\n }\r\n \r\n \r\n {crumb.text} \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Breadcrumbs;\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { H1, ResponsiveSize, HeadingLabel } from 'Shared/SharedComponents/atoms/Typography';\r\nimport { ButtonHeight, ButtonTheme, SolidButton } from 'Shared/TextButtons';\r\nimport Breadcrumbs from 'Shared/SharedComponents/atoms/Breadcrumbs';\r\nimport BreadcrumbsViewModel from 'Shared/Breadcrumbs/BreadcrumbsViewModel.type';\r\nimport { createGridClasses, createOffsetGridClassLarge } from 'Shared/grid';\r\nimport { GridWrap } from 'Shared/PageLayout';\r\nimport * as style from 'Shared/Style';\r\n\r\ntype TopContentPropType = React.HTMLAttributes & {\r\n label?: string;\r\n heading: string;\r\n headingSize?: ResponsiveSize;\r\n intro: string;\r\n isCompact: boolean;\r\n modalButtonText?: string;\r\n modalButtonIconAfter?: React.ReactNode;\r\n modalButtonClick?: () => void;\r\n handleReadMore?: Function | boolean;\r\n readMoreLabel?: String\r\n};\r\n\r\ntype TopContentWidePropType = TopContentPropType & {\r\n breadcrumbs?: BreadcrumbsViewModel[];\r\n};\r\n\r\ntype BreadcrumbWrapperPropType = React.HTMLAttributes & {\r\n isCompact: boolean;\r\n breadcrumbs?: BreadcrumbsViewModel[];\r\n isProductPage?: boolean;\r\n};\r\n\r\nconst TopLabel = styled(HeadingLabel, {\r\n margin: {\r\n top: 0,\r\n bottom: '16px',\r\n },\r\n});\r\n\r\nconst ReadMoreWrap = styled.div({\r\n display: 'flex',\r\n marginTop: '8px',\r\n});\r\n\r\nconst ReadMore = styled.span({\r\n color: style.colors.monochrome.a11ygrey,\r\n cursor: 'pointer',\r\n textTransform: 'uppercase',\r\n fontSize: '14px',\r\n fontWeight: 500,\r\n});\r\n\r\nconst TopContentHeading = styled(H1, {\r\n wordBreak: 'break-word'\r\n});\r\n\r\nexport const BreadcrumbWrapper = styled((props: BreadcrumbWrapperPropType & StyledProps) => {\r\n const { isCompact, breadcrumbs, children, isProductPage = false, compose } = props;\r\n\r\n return (\r\n \r\n \r\n {breadcrumbs && }\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\nconst TopContentWideWrapper = styled(BreadcrumbWrapper, {\r\n padding: { bottom: '24px' },\r\n ['@media ' + style.mediaMinLarge]: {\r\n padding: { bottom: '48px' }\r\n },\r\n})\r\n\r\nexport const TopContentWide = (props: TopContentWidePropType) => {\r\n const { isCompact, breadcrumbs, children } = props;\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nconst TopContentButton = styled(SolidButton, {\r\n display: 'inline-flex',\r\n marginTop: '12px',\r\n ['@media ' + style.mediaMinLarge]: {\r\n marginTop: '24px',\r\n },\r\n})\r\n\r\nconst TopContentIntro = styled.p({\r\n margin: { xy: 0 },\r\n padding: { xy: 0 }\r\n})\r\n\r\nconst TopContentWrap = styled.div({\r\n ['@media ' + style.mediaUpToLarge]: {\r\n marginTop: '16px',\r\n },\r\n})\r\n\r\nconst TopContentChildren = styled.div({\r\n marginTop: '24px',\r\n ['@media ' + style.mediaMinLarge]: {\r\n marginTop: '48px',\r\n },\r\n})\r\n\r\nexport const TopContent = (props: TopContentPropType) => {\r\n const {\r\n isCompact,\r\n label,\r\n heading,\r\n headingSize,\r\n modalButtonText,\r\n modalButtonClick,\r\n modalButtonIconAfter,\r\n intro,\r\n children,\r\n handleReadMore = false,\r\n readMoreLabel = ''\r\n } = props;\r\n return (\r\n
\r\n {label && {label}}\r\n
\r\n
\r\n {heading}\r\n {modalButtonText && (\r\n modalButtonClick()}\r\n iconAfter={modalButtonIconAfter && modalButtonIconAfter}\r\n theme={ButtonTheme.WhiteToBlack}\r\n />\r\n )}\r\n
\r\n
\r\n \r\n {intro}\r\n {handleReadMore &&\r\n \r\n {\r\n if (typeof handleReadMore !== 'function') {\r\n return\r\n }\r\n handleReadMore()\r\n }}>\r\n {readMoreLabel}\r\n \r\n \r\n }\r\n \r\n \r\n {children}\r\n \r\n
\r\n );\r\n};\r\n","import React from 'react';\r\n\r\ntype ConnectedPropType = {\r\n type: string;\r\n url: string;\r\n};\r\n\r\ntype PropType = ConnectedPropType;\r\n\r\nclass VideoSource extends React.Component {\r\n render() {\r\n const props = this.props;\r\n const { type, url } = props;\r\n let videoType = 'video/mp4';\r\n switch(type)\r\n {\r\n case 'HLS':\r\n videoType = 'application/x-mpegURL';\r\n break;\r\n case 'MP4':\r\n videoType = 'video/mp4';\r\n break;\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default VideoSource;\r\n","import React, { useEffect, useRef } from 'react';\r\nimport VideoSourceType from 'Shared/ViewModels/VideoSourceViewModel.type';\r\nimport Hls from \"hls.js\";\r\nimport VideoSource from './VideoSource';\r\n\r\ntype VideoType = {\r\n videoRef?: React.MutableRefObject;\r\n autoPlay: boolean;\r\n loop: boolean;\r\n muted: boolean;\r\n isMobile: boolean;\r\n coverContent: boolean;\r\n playsInline: boolean;\r\n fixedVideo?: boolean;\r\n sources?: VideoSourceType[];\r\n onEnded?: () => void,\r\n};\r\n\r\nconst VideoPlayer = (props: VideoType) => {\r\n const { sources, videoRef, autoPlay, loop, muted, isMobile, fixedVideo = false, coverContent, playsInline } = props;\r\n const playerRef = videoRef ? videoRef : useRef(null);\r\n\r\n useEffect(() => {\r\n if(playerRef && playerRef.current) {\r\n\r\n const video = playerRef.current;\r\n const hlsSource = sources?.find(x => x.type === 'HLS' && (x.device === 'ALL' || x.device === (isMobile ? 'MOBILE' : 'DESKTOP')));\r\n if (hlsSource && Hls.isSupported()) {\r\n var hls = new Hls();\r\n hls.loadSource(hlsSource.url);\r\n hls.attachMedia(video);\r\n hls.on(Hls.Events.MANIFEST_PARSED, function() { \r\n if(autoPlay) {\r\n video.play();\r\n }\r\n });\r\n } else if (hlsSource && video.canPlayType('application/vnd.apple.mpegurl')) {\r\n video.src = hlsSource.url;\r\n }\r\n\r\n if(!muted) {\r\n video.volume = 0.5;\r\n }\r\n }\r\n }, []);\r\n \r\n return (\r\n \r\n {sources?.filter(x => x.type !== \"HLS\").map((source, i) => {\r\n return (\r\n ((source.device === 'ALL' ||\r\n (source.device === 'DESKTOP' && !isMobile) ||\r\n (source.device === 'MOBILE' && isMobile)) && source.type !== 'HLS') && (\r\n \r\n )\r\n );\r\n })} \r\n \r\n );\r\n};\r\n\r\nexport default VideoPlayer;\r\n\r\n","import { styled } from '@glitz/react';\r\nimport factory from './icon';\r\nimport Svg12x12 from './Glyphs/ChevronRight_12x12.svg';\r\nimport Svg16x16 from './Glyphs/ChevronRight_16x16.svg';\r\nimport Svg24x24 from './Glyphs/ChevronRight_24x24.svg';\r\n\r\nexport const Right12x12 = factory(Svg12x12, 12, 12);\r\nexport const Down12x12 = styled(Right12x12, {\r\n transform: 'rotate(90deg)',\r\n})\r\nexport const Left12x12 = styled(Right12x12, {\r\n transform: 'rotate(180deg)',\r\n });\r\nexport const Up12x12 = styled(Right12x12, {\r\n transform: 'rotate(270deg)',\r\n})\r\n\r\nexport const Right16x16 = factory(Svg16x16, 16, 16);\r\nexport const Down16x16 = styled(Right16x16, {\r\n transform: 'rotate(90deg)',\r\n})\r\nexport const Left16x16 = styled(Right16x16, {\r\n transform: 'rotate(180deg)',\r\n });\r\nexport const Up16x16 = styled(Right16x16, {\r\n transform: 'rotate(270deg)',\r\n})\r\n\r\nexport const Right24x24 = factory(Svg24x24, 24, 24);\r\nexport const Down24x24 = styled(Right24x24, {\r\n transform: 'rotate(90deg)',\r\n})\r\nexport const Left24x24 = styled(Right24x24, {\r\n transform: 'rotate(180deg)',\r\n });\r\nexport const Up24x24 = styled(Right24x24, {\r\n transform: 'rotate(270deg)',\r\n})\r\n","import factory from './icon';\r\nimport Svg12x12 from './glyphs/Play_12x12.svg';\r\nimport Svg24x24 from './glyphs/Play_24x24.svg';\r\n\r\nexport const Play12x12 = factory(Svg12x12, 12, 12);\r\nexport const Play24x24 = factory(Svg24x24, 24, 24);\r\n","var React = require('react');\n\nfunction ChevronRight12x12 (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Size=12x12, Inverted=off\"},React.createElement(\"path\",{\"id\":\"Vector\",\"d\":\"M3.5 11l5-4.5v-1L3.5 1\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeMiterlimit\":\"10\",\"strokeLinecap\":\"round\"})));\n}\n\nChevronRight12x12.defaultProps = {\"width\":\"12\",\"height\":\"12\",\"viewBox\":\"0 0 12 12\",\"fill\":\"none\"};\n\nmodule.exports = ChevronRight12x12;\n\nChevronRight12x12.default = ChevronRight12x12;\n","var React = require('react');\n\nfunction ChevronRight16x16 (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Size=16x16, Inverted=off\"},React.createElement(\"path\",{\"id\":\"Vector\",\"d\":\"M4.5 15l7-6.5v-1L4.5 1\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeMiterlimit\":\"10\",\"strokeLinecap\":\"round\"})));\n}\n\nChevronRight16x16.defaultProps = {\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 16 16\",\"fill\":\"none\"};\n\nmodule.exports = ChevronRight16x16;\n\nChevronRight16x16.default = ChevronRight16x16;\n","var React = require('react');\n\nfunction ChevronRight24x24 (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Size=24x24, Inverted=off\"},React.createElement(\"path\",{\"id\":\"Vector\",\"d\":\"M6.5 23l11-10.43v-1.14L6.5 1\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeMiterlimit\":\"10\",\"strokeLinecap\":\"round\"})));\n}\n\nChevronRight24x24.defaultProps = {\"width\":\"24\",\"height\":\"24\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\"};\n\nmodule.exports = ChevronRight24x24;\n\nChevronRight24x24.default = ChevronRight24x24;\n","import factory from './icon';\r\nimport Svg34x24 from './glyphs/Sound_34x24.svg';\r\nimport SvgMuted34x24 from './glyphs/SoundMuted_34x24.svg';\r\n\r\nexport const Sound34x24 = factory(Svg34x24, 34, 24);\r\nexport const SoundMuted34x24 = factory(SvgMuted34x24, 34, 24);\r\n","import React from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport * as style from 'Shared/Style';\r\n\r\ntype PropType = {\r\n min: number;\r\n max: number;\r\n value: number;\r\n updateValue: (selectedValue: number) => void;\r\n width?: number;\r\n};\r\n\r\nconst SliderInput = styled.input({\r\n appearance: 'none',\r\n height: '2px',\r\n borderRadius: '1px',\r\n backgroundColor: style.colors.monochrome.white,\r\n '::-webkit-slider-thumb': {\r\n appearance: 'none',\r\n width: '4px',\r\n height: '4px',\r\n borderRadius: '8px',\r\n backgroundColor: style.colors.monochrome.white,\r\n cursor: 'pointer',\r\n padding: {\r\n y: '4px',\r\n x: '4px',\r\n },\r\n },\r\n})\r\n\r\nconst Slider = ({ min, max, value, updateValue, width }: PropType) => {\r\n return (\r\n updateValue(parseFloat(e.target.value))}\r\n css={{\r\n width: width ? `${width}px` : '100%',\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default Slider;\r\n","import React, { RefObject, useEffect, useState } from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport { Sound34x24, SoundMuted34x24 } from 'Shared/Icons/Sound';\r\nimport Slider from 'Shared/SharedComponents/atoms/Slider';\r\n\r\ntype PropType = {\r\n mediaRef: RefObject;\r\n};\r\n\r\nconst Wrap = styled.div({\r\n position: 'relative', height: '100%', display: 'flex', alignItems: 'center', gap: '8px'\r\n})\r\n\r\nconst Sound = styled(Sound34x24, {\r\n cursor: 'pointer'\r\n})\r\n\r\nconst Muted = styled(SoundMuted34x24, {\r\n cursor: 'pointer'\r\n})\r\n\r\nconst SoundControls = ({ mediaRef }: PropType) => {\r\n const [muted, setMuted] = useState(false);\r\n const [volume, setVolume] = useState(0);\r\n\r\n useEffect(() => {\r\n if (mediaRef?.current) {\r\n setMuted(mediaRef.current.muted);\r\n setVolume(mediaRef.current.volume);\r\n }\r\n }, [mediaRef]);\r\n\r\n const mute = () => {\r\n if (mediaRef?.current) {\r\n mediaRef.current.muted = true;\r\n setMuted(true);\r\n }\r\n };\r\n\r\n const unmute = () => {\r\n if (mediaRef?.current) {\r\n mediaRef.current.muted = false;\r\n setMuted(false);\r\n if (volume === 0) {\r\n setVolume(0.5);\r\n }\r\n }\r\n };\r\n\r\n const adjustVolume = (selectedVolume: number) => {\r\n let newVolume = Math.min(Math.max(selectedVolume, 0), 1);\r\n if (mediaRef?.current) {\r\n mediaRef.current.volume = newVolume;\r\n setVolume(newVolume);\r\n if (newVolume === 0) {\r\n setMuted(true);\r\n } else if (muted) {\r\n setMuted(false);\r\n }\r\n }\r\n };\r\n\r\n return (\r\n \r\n {muted ? (\r\n \r\n ) : (\r\n \r\n )}\r\n {\r\n adjustVolume(selectedValue / 48);\r\n }}\r\n width={48}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default SoundControls;\r\n","import React, { RefObject, useState } from 'react';\r\nimport Slider from 'Shared/SharedComponents/atoms/Slider';\r\n\r\ntype PropType = {\r\n mediaRef: RefObject;\r\n};\r\n\r\nconst TimeControls = ({ mediaRef }: PropType) => {\r\n const [currentTime, setCurrentTime] = useState(0);\r\n const [duration, setDuration] = useState(1);\r\n\r\n const interval = setInterval(() => {\r\n if (mediaRef.current && mediaRef.current.readyState > 0) {\r\n setCurrentTime(mediaRef.current.currentTime);\r\n setDuration(mediaRef.current.duration);\r\n\r\n clearInterval(interval);\r\n }\r\n }, 200);\r\n\r\n const skipToTime = (selectedTime: number) => {\r\n if (mediaRef.current) {\r\n const newTime = Math.min(Math.max(selectedTime, 0), duration);\r\n mediaRef.current.currentTime = newTime;\r\n setCurrentTime(newTime);\r\n }\r\n };\r\n\r\n return (\r\n {\r\n skipToTime((selectedValue * duration) / 1000);\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default TimeControls;\r\n","import factory from './icon';\r\nimport Svg24x24 from './glyphs/Pause_24x24.svg';\r\n\r\nexport const Pause24x24 = factory(Svg24x24, 24, 24);\r\n","import React from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport { Pause24x24 } from 'Shared/Icons/Pause';\r\nimport { Play24x24 } from 'Shared/Icons/Play';\r\n\r\nconst Play = styled(Play24x24, {\r\n cursor: 'pointer'\r\n})\r\n\r\nconst Pause = styled(Pause24x24, {\r\n cursor: 'pointer'\r\n})\r\n\r\ntype PropType = {\r\n isPlaying: boolean;\r\n play: () => void;\r\n pause: () => void;\r\n};\r\n\r\nconst PlayControls = ({ isPlaying, play, pause }: PropType) => {\r\n return isPlaying ? (\r\n \r\n ) : (\r\n \r\n );\r\n};\r\n\r\nexport default PlayControls;\r\n","import factory from './icon';\r\nimport Svg24x24 from './glyphs/Maximize_24x24.svg';\r\n\r\nexport const Maximize24x24 = factory(Svg24x24, 24, 24);\r\n","import factory from './icon';\r\nimport Svg24x24 from './glyphs/Minimize_24x24.svg';\r\n\r\nexport const Minimize24x24 = factory(Svg24x24, 24, 24);\r\n","import React, { RefObject, useLayoutEffect } from 'react';\r\nimport { Maximize24x24 } from 'Shared/Icons/Maximize';\r\nimport { Minimize24x24 } from 'Shared/Icons/Minimize';\r\n\r\ntype PropType = {\r\n mediaRef: RefObject;\r\n isMaximized: boolean;\r\n updateIsMaximized: (selectedValue: boolean) => void;\r\n};\r\n\r\nconst MaximizeControls = ({ mediaRef, isMaximized, updateIsMaximized }: PropType) => {\r\n useLayoutEffect(() => {\r\n document.onfullscreenchange = () => {\r\n if (document.fullscreenElement === null) {\r\n updateIsMaximized(false);\r\n }\r\n };\r\n\r\n return () => {\r\n document.onfullscreenchange = null;\r\n };\r\n });\r\n\r\n const maximize = () => {\r\n mediaRef.current?.parentElement?.parentElement?.requestFullscreen();\r\n updateIsMaximized(true);\r\n };\r\n\r\n const minimize = () => {\r\n document.exitFullscreen();\r\n updateIsMaximized(false);\r\n };\r\n\r\n return isMaximized ? (\r\n \r\n ) : (\r\n \r\n );\r\n};\r\n\r\nexport default MaximizeControls;\r\n","import React, { ReactNode, useEffect, useRef, useState } from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport { ButtonHeight, ButtonTheme, SolidButton } from 'Shared/TextButtons';\r\nimport VideoSourceType from 'Shared/ViewModels/VideoSourceViewModel.type';\r\nimport * as style from 'Shared/Style';\r\nimport { ViewportSizeVideoBackground } from 'Shared/SharedComponents/molecules/ImageVideoBackground';\r\nimport { OverlayNotABackdrop } from 'Shared/SharedComponents/atoms/AspectRatio';\r\nimport SoundControls from './SoundControls';\r\nimport TimeControls from './TimeControls';\r\nimport PlayControls from './PlayControls';\r\nimport MaximizeControls from './MaximizeControls';\r\nimport { Plus12x12 } from 'Shared/Icons/Plus';\r\nimport VideoPlayer from 'Shared/Video/VideoPlayer'\r\nimport { Preset } from 'Shared/image-sizes';\r\n\r\ntype PropType = {\r\n videoSources: VideoSourceType[];\r\n previewImage: { url?: string };\r\n previewImagePreset?: Preset;\r\n previewVideoSources?: VideoSourceType[];\r\n isCompact: boolean;\r\n children?: ReactNode;\r\n videoStarted: boolean;\r\n stopVideo?: () => void;\r\n loop?: boolean;\r\n muted?: boolean;\r\n buttonsInControls?: { text: string; onClick: () => void }[];\r\n};\r\n\r\nconst Wrap = styled.div({\r\n position: 'relative', height: '100%', overflow: 'hidden', alignSelf: 'normal'\r\n})\r\n\r\nconst VideoStopped = styled.div({\r\n display: 'flex',\r\n height: '100%',\r\n width: '100%',\r\n position: 'absolute',\r\n top: 0,\r\n flexDirection: 'column',\r\n color: style.colors.monochrome.white,\r\n})\r\n\r\nconst VideoStartedWrap = styled.div({\r\n height: '100%',\r\n width: '100%',\r\n position: 'absolute',\r\n top: 0,\r\n paddingBottom: '40px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'end',\r\n color: style.colors.monochrome.white,\r\n gap: '32px',\r\n})\r\n\r\nconst VideoStartedWrapDesktop = styled(VideoStartedWrap, {\r\n gap: '16px',\r\n})\r\n\r\nconst TimeControlWrapMobile = styled.div({\r\n width: '100%',\r\n padding: { x: '24px' },\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n})\r\n\r\nconst ButtonsWrapDesktop = styled.div({\r\n width: '100%',\r\n padding: { x: '40px' },\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: '8px',\r\n alignItems: 'center',\r\n justifyContent: 'end',\r\n})\r\n\r\nconst ButtonsWrapMobile = styled.div({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: '8px',\r\n})\r\n\r\nconst PlusIcon = styled(Plus12x12, {\r\n marginLeft: '8px'\r\n})\r\n\r\nconst OuterBase = styled.div({\r\n width: '100%',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: '24px',\r\n alignItems: 'center',\r\n})\r\n\r\nconst OuterMobile = styled(OuterBase, {\r\n padding: { x: '32px' },\r\n justifyContent: 'space-between',\r\n})\r\n\r\nconst OuterDesktop = styled(OuterBase, {\r\n padding: { x: '40px' },\r\n})\r\n\r\nconst Inner = styled.div({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: '24px',\r\n alignItems: 'center',\r\n})\r\n\r\nconst Video = ({\r\n videoSources,\r\n previewImage,\r\n previewImagePreset,\r\n previewVideoSources,\r\n isCompact,\r\n videoStarted,\r\n stopVideo = () => { },\r\n children,\r\n loop = false,\r\n muted = false,\r\n buttonsInControls,\r\n}: PropType) => {\r\n const videoRef = useRef(null);\r\n const [isPlaying, setIsPlaying] = useState(false);\r\n const [isMaximized, setIsMaximized] = useState(false);\r\n\r\n const play = () => {\r\n videoRef.current?.play();\r\n setIsPlaying(true);\r\n };\r\n\r\n const pause = () => {\r\n videoRef.current?.pause();\r\n setIsPlaying(false);\r\n };\r\n\r\n useEffect(() => {\r\n if (videoStarted) {\r\n play();\r\n }\r\n }, [videoStarted]);\r\n\r\n const VideoStartedWrapElement = isCompact ? VideoStartedWrap : VideoStartedWrapDesktop;\r\n const Outer = isCompact ? OuterMobile : OuterDesktop;\r\n return (\r\n \r\n \r\n {videoStarted && (\r\n \r\n stopVideo()}\r\n />\r\n \r\n )}\r\n {!videoStarted && (\r\n \r\n {children}\r\n \r\n )}\r\n {videoStarted && !loop && (\r\n {\r\n if (event.target === event.currentTarget) {\r\n if (isPlaying) {\r\n pause();\r\n } else {\r\n play();\r\n }\r\n }\r\n }}\r\n >\r\n {!isCompact && buttonsInControls && buttonsInControls.length > 0 && (\r\n \r\n {buttonsInControls.map((buttonInControls, index) => {\r\n return (\r\n buttonInControls.onClick()}\r\n iconAfter={}\r\n padding={{ x: 16 }}\r\n height={ButtonHeight.Video}\r\n theme={ButtonTheme.TransparentWhite}\r\n />\r\n );\r\n })}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {isCompact && buttonsInControls && buttonsInControls.length > 0 && (\r\n \r\n {buttonsInControls.map((buttonInControls, index) => {\r\n return (\r\n buttonInControls.onClick()}\r\n iconAfter={}\r\n padding={{ x: 16 }}\r\n height={ButtonHeight.Video}\r\n theme={ButtonTheme.TransparentWhite}\r\n />\r\n );\r\n })}\r\n \r\n )}\r\n \r\n {!isCompact && }\r\n \r\n \r\n {isCompact && (\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Video;","var React = require('react');\n\nfunction Play12x12 (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Inverted=off, Size=12x12\"},React.createElement(\"path\",{\"id\":\"Polygon 2\",\"d\":\"M10.496 6.868L12.016 6l-1.52-.868-7-4L2 .277v11.446l1.496-.855 7-4z\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinejoin\":\"round\"})));\n}\n\nPlay12x12.defaultProps = {\"width\":\"12\",\"height\":\"12\",\"viewBox\":\"0 0 12 12\",\"fill\":\"none\"};\n\nmodule.exports = Play12x12;\n\nPlay12x12.default = Play12x12;\n","var React = require('react');\n\nfunction Play24x24 (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Inverted=off, Size=24x24\"},React.createElement(\"path\",{\"id\":\"Polygon 2\",\"d\":\"M21.784 13.77c1.425-.75 1.425-2.79 0-3.54L5.932 1.887C4.6 1.186 3 2.15 3 3.657v16.687c0 1.505 1.6 2.47 2.931 1.77l15.853-8.344z\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\"})));\n}\n\nPlay24x24.defaultProps = {\"width\":\"24\",\"height\":\"24\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\"};\n\nmodule.exports = Play24x24;\n\nPlay24x24.default = Play24x24;\n","var React = require('react');\n\nfunction Sound34x24 (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"path\",{\"d\":\"M21 21a9 9 0 100-18m0 13a4 4 0 000-8\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"key\":0}),React.createElement(\"mask\",{\"id\":\"path-3-outside-1_19324_440601\",\"maskUnits\":\"userSpaceOnUse\",\"x\":\"0\",\"y\":\".133\",\"width\":\"17\",\"height\":\"23\",\"fill\":\"#000\",\"key\":1},[React.createElement(\"path\",{\"fill\":\"#fff\",\"d\":\"M0 .133h17v23H0z\",\"key\":0}),React.createElement(\"path\",{\"fillRule\":\"evenodd\",\"clipRule\":\"evenodd\",\"d\":\"M6.6 9H3a1 1 0 00-1 1v4a1 1 0 001 1h3.6l6.76 5.633a1 1 0 001.64-.768V4.135a1 1 0 00-1.64-.768L6.6 9z\",\"key\":1})]),React.createElement(\"path\",{\"d\":\"M6.6 9v2h.724l.557-.464L6.6 9zm0 6l1.28-1.537L7.324 13H6.6v2zm6.76 5.633l-1.28 1.536 1.28-1.536zM15 4.135h2-2zm-1.64-.768l1.28 1.536-1.28-1.536zM3 10.998h3.6V7H3v4zm1-1a1 1 0 01-1 1V7a3 3 0 00-3 3h4zm0 4v-4H0v4h4zm-1-1a1 1 0 011 1H0a3 3 0 003 3v-4zm3.6 0H3v4h3.6v-4zm-1.28 3.537l6.76 5.633 2.56-3.073-6.76-5.633-2.56 3.073zm6.76 5.633c1.953 1.629 4.92.24 4.92-2.304h-4a1 1 0 011.64-.769l-2.56 3.073zM17 19.865V4.135h-4v15.73h4zm0-15.73C17 1.59 14.033.202 12.08 1.83l2.56 3.073A1 1 0 0113 4.135h4zM12.08 1.83L5.32 7.463l2.56 3.073 6.76-5.633-2.56-3.073z\",\"fill\":\"currentColor\",\"mask\":\"url(#path-3-outside-1_19324_440601)\",\"key\":2})]);\n}\n\nSound34x24.defaultProps = {\"width\":\"34\",\"height\":\"24\",\"viewBox\":\"0 0 34 24\",\"fill\":\"none\"};\n\nmodule.exports = Sound34x24;\n\nSound34x24.default = Sound34x24;\n","var React = require('react');\n\nfunction SoundMuted34x24 (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"mask\",{\"id\":\"path-1-outside-1_19324_440678\",\"maskUnits\":\"userSpaceOnUse\",\"x\":\"0\",\"y\":\".133\",\"width\":\"17\",\"height\":\"23\",\"fill\":\"#000\",\"key\":0},[React.createElement(\"path\",{\"fill\":\"#fff\",\"d\":\"M0 .133h17v23H0z\",\"key\":0}),React.createElement(\"path\",{\"fillRule\":\"evenodd\",\"clipRule\":\"evenodd\",\"d\":\"M6.6 9H3a1 1 0 00-1 1v4a1 1 0 001 1h3.6l6.76 5.633a1 1 0 001.64-.768V4.135a1 1 0 00-1.64-.768L6.6 9z\",\"key\":1})]),React.createElement(\"path\",{\"d\":\"M6.6 9v2h.724l.557-.464L6.6 9zm0 6l1.28-1.537L7.324 13H6.6v2zm6.76 5.633l-1.28 1.536 1.28-1.536zM15 4.135h2-2zm-1.64-.768l1.28 1.536-1.28-1.536zM3 10.998h3.6V7H3v4zm1-1a1 1 0 01-1 1V7a3 3 0 00-3 3h4zm0 4v-4H0v4h4zm-1-1a1 1 0 011 1H0a3 3 0 003 3v-4zm3.6 0H3v4h3.6v-4zm-1.28 3.537l6.76 5.633 2.56-3.073-6.76-5.633-2.56 3.073zm6.76 5.633c1.953 1.629 4.92.24 4.92-2.304h-4a1 1 0 011.64-.769l-2.56 3.073zM17 19.865V4.135h-4v15.73h4zm0-15.73C17 1.59 14.033.202 12.08 1.83l2.56 3.073A1 1 0 0113 4.135h4zM12.08 1.83L5.32 7.463l2.56 3.073 6.76-5.633-2.56-3.073z\",\"fill\":\"#fff\",\"mask\":\"url(#path-1-outside-1_19324_440678)\",\"key\":1}),React.createElement(\"path\",{\"d\":\"M21 18l6-6m0 0l6-6m-6 6l-6-6m6 6l6 6\",\"stroke\":\"#fff\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"key\":2})]);\n}\n\nSoundMuted34x24.defaultProps = {\"width\":\"34\",\"height\":\"24\",\"viewBox\":\"0 0 34 24\",\"fill\":\"none\"};\n\nmodule.exports = SoundMuted34x24;\n\nSoundMuted34x24.default = SoundMuted34x24;\n","var React = require('react');\n\nfunction Pause24x24 (props) {\n return React.createElement(\"svg\",props,React.createElement(\"path\",{\"d\":\"M8 1v22m8-22v22\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\"}));\n}\n\nPause24x24.defaultProps = {\"width\":\"24\",\"height\":\"24\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\"};\n\nmodule.exports = Pause24x24;\n\nPause24x24.default = Pause24x24;\n","var React = require('react');\n\nfunction Maximize24x24 (props) {\n return React.createElement(\"svg\",props,React.createElement(\"path\",{\"d\":\"M8 2H4a2 2 0 00-2 2v4m6 14H4a2 2 0 01-2-2v-4M16 2h4a2 2 0 012 2v4m-6 14h4a2 2 0 002-2v-4\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\"}));\n}\n\nMaximize24x24.defaultProps = {\"width\":\"24\",\"height\":\"24\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\"};\n\nmodule.exports = Maximize24x24;\n\nMaximize24x24.default = Maximize24x24;\n","var React = require('react');\n\nfunction Minimize24x24 (props) {\n return React.createElement(\"svg\",props,React.createElement(\"path\",{\"d\":\"M2 8h4a2 2 0 002-2V2M2 16h4a2 2 0 012 2v4M22 8h-4a2 2 0 01-2-2V2m6 14h-4a2 2 0 00-2 2v4\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\"}));\n}\n\nMinimize24x24.defaultProps = {\"width\":\"24\",\"height\":\"24\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\"};\n\nmodule.exports = Minimize24x24;\n\nMinimize24x24.default = Minimize24x24;\n","import React from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport { TextBlockSmall, Text, ResponsiveSize } from 'Shared/SharedComponents/atoms/Typography';\r\nimport { StyleOrStyleArray } from '@glitz/type';\r\nimport * as style from 'Shared/Style';\r\n\r\ntype TagsType = {\r\n tags: string[];\r\n marginTop?: string;\r\n marginBottom?: string;\r\n nrToDisplay?: number;\r\n readMoreLabel?: string;\r\n readMoreClick?: () => void;\r\n};\r\n\r\nconst Wrap = styled.div({\r\n display: 'flex', \r\n flexWrap: 'wrap',\r\n flexDirection: 'row',\r\n alignItems: 'center', \r\n gap: '8px',\r\n})\r\n\r\nconst InlineWrap = styled.span({\r\n display: 'flex', \r\n flexWrap: 'wrap',\r\n flexDirection: 'row',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n padding: { x: '12px', y: '8px' },\r\n gap: '16px',\r\n height: '32px',\r\n backgroundColor: style.colors.monochrome.extraLightGrey,\r\n borderRadius: '100px',\r\n flexBasis: 'none',\r\n flexGrow: 0,\r\n})\r\n\r\nconst ReadMoreLabel = styled(Text, {\r\n cursor: 'pointer',\r\n color: style.colors.monochrome.a11ygrey,\r\n ':hover': {\r\n color: style.colors.monochrome.black,\r\n }\r\n})\r\n\r\nfunction ProductTags(props: TagsType) {\r\n const tags = props.nrToDisplay ? props.tags && props.tags.slice(0, props.nrToDisplay) : props.tags && props.tags;\r\n\r\n return (\r\n \r\n {tags && tags.map((tag, i) => (\r\n {tag}\r\n ))}\r\n {props.readMoreLabel && (\r\n \r\n {props.readMoreLabel}\r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nexport const BgTag = ({ children, css }: { children: React.ReactNode; css?: StyleOrStyleArray }) => (\r\n \r\n {children}\r\n \r\n);\r\n\r\nexport default ProductTags;\r\n","import React from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport ProductFeatureViewModel from 'Product/ProductFeature/ProductFeatureViewModel.type';\r\nimport { OverlayNotABackdrop } from 'Shared/SharedComponents/atoms/AspectRatio';\r\nimport { AspectImageVideoBackground } from 'Shared/SharedComponents/molecules/ImageVideoBackground';\r\nimport { Paragraph, ResponsiveSize, ResponsiveLineHeight } from 'Shared/SharedComponents/atoms/Typography';\r\nimport connect from 'Shared/connect';\r\nimport { selectDeviceImage } from 'Shared/utils';\r\nimport { isCompact } from 'Shared/Viewport';\r\nimport { PictureImage, Preset } from 'Shared/Image';\r\nimport * as style from 'Shared/Style';\r\n\r\ntype PropType = {\r\n className?: string;\r\n feature: ProductFeatureViewModel;\r\n currentBreakpoint: number;\r\n};\r\n\r\nconst Wrap = styled.div({\r\n color: style.colors.monochrome.black,\r\n})\r\n\r\nconst Overlay = styled(OverlayNotABackdrop, {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n})\r\n\r\nconst Image = styled.img({\r\n width: '88px', height: '88px'\r\n})\r\n\r\nconst ContentWrap = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n gap: '8px',\r\n marginTop: '16px',\r\n})\r\n\r\nconst Heading = styled.span({\r\n fontStyle: 'normal',\r\n fontWeight: 500,\r\n fontSize: '24px',\r\n lineHeight: '100%',\r\n textTransform: 'uppercase',\r\n display: 'block',\r\n})\r\n\r\nconst FeatureImage = styled(PictureImage, {\r\n position: 'absolute',\r\n width: '100%',\r\n height: '100%',\r\n objectFit: 'cover',\r\n objectPosition: 'center center',\r\n borderRadius: '8px'\r\n});\r\n\r\nexport const ProductFeature = connect((state) => {\r\n return {\r\n currentBreakpoint: state.currentBreakpoint,\r\n };\r\n})((props: PropType) => {\r\n const { feature } = props;\r\n const isMobile = isCompact(props.currentBreakpoint);\r\n const deviceImage = selectDeviceImage(feature.backgroundImage, feature.backgroundImageSmallScreen, isMobile);\r\n\r\n return (\r\n \r\n
\r\n \r\n {deviceImage && (\r\n \r\n )}\r\n \r\n {feature.icon?.url && (\r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n \r\n {feature.heading}\r\n \r\n \r\n {feature.text}\r\n \r\n \r\n
\r\n );\r\n});\r\n\r\nexport default ProductFeature;\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport SwiperList from 'Shared/SwiperList';\r\nimport { Favourite24x24, FavouriteFull24x24 } from 'Shared/Icons/Favorite';\r\nimport { Cross48Uri, Plus48Uri } from 'Shared/Icons/Plus';\r\nimport TagViewModel from 'Shared/ViewModels/TagViewModel.type';\r\nimport * as style from 'Shared/Style';\r\nimport { appendImagePreset } from 'Shared/image-sizes';\r\nimport { PictureImage, Preset } from 'Shared/Image';\r\nimport { AspectRatioInner, AspectRatioOuter, OverlayNotABackdrop } from 'Shared/SharedComponents/atoms/AspectRatio';\r\nimport { BgTag } from 'Product/ProductTags';\r\nimport { colorFromTag } from 'Shared/utils';\r\nimport Resource from '../../../VoyadoElevate/Models/Resource.type';\r\nimport Video from 'Shared/Video/Video';\r\nimport VideoSource from 'Shared/ViewModels/VideoSourceViewModel.type';\r\nimport { Up32x32, Down32x32 } from 'Shared/Icons/ArrowCircle';\r\n\r\nconst ZoomWrap = styled.div({\r\n position: 'fixed',\r\n zIndex: 999,\r\n backgroundColor: style.colors.monochrome.white,\r\n top: 0,\r\n left: '0',\r\n pointerEvents: 'all',\r\n overflowY: 'scroll',\r\n overscrollBehaviorY: 'contain',\r\n height: '100vh',\r\n width: '100vw',\r\n})\r\n\r\nconst ZoomedImage = styled.img({\r\n width: '100%',\r\n objectFit: 'cover',\r\n cursor: `url(\"${Cross48Uri}\") 24 24, pointer`,\r\n})\r\n\r\nconst ZoomOverlay = styled(OverlayNotABackdrop, {\r\n height: '100%',\r\n width: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n padding: { x: '16px', y: '8px' },\r\n alignItems: 'flex-end',\r\n justifyContent: 'flex-end',\r\n gap: '8px',\r\n position: 'fixed',\r\n pointerEvents: 'none',\r\n})\r\n\r\nconst ZoomImage = styled(PictureImage, {\r\n pointerEvents: 'all',\r\n width: '48px',\r\n height: '65px',\r\n filter: 'drop-shadow(0px 0px 16px rgba(0, 0, 0, 0.16))',\r\n borderRadius: '8px',\r\n objectFit: 'cover',\r\n objectPosition: 'center',\r\n cursor: 'pointer',\r\n transition: {\r\n timingFunction: 'ease-in-out',\r\n duration: '0.5s',\r\n property: 'opacity',\r\n },\r\n})\r\n\r\nconst Wrap = styled.div({\r\n position: 'sticky',\r\n top: 0,\r\n\r\n})\r\n\r\nconst WrapRation = styled(AspectRatioOuter, {\r\n width: 'calc(100% + 16px)',\r\n paddingTop: '0px',\r\n height: '100vh',\r\n //paddingTop: `${(768 / 675) * 100}%`,\r\n})\r\n\r\nconst ResourceWrap = styled.div({\r\n height: '100%',\r\n width: '100%'\r\n})\r\n\r\nconst VideoWrap = styled.div({\r\n height: '100%',\r\n width: '100%',\r\n objectFit: 'cover',\r\n transition: {\r\n timingFunction: 'ease-in-out',\r\n duration: '0.5s',\r\n property: 'transform',\r\n },\r\n})\r\n\r\nconst Image = styled(PictureImage, {\r\n height: '100%',\r\n width: '100%',\r\n display: 'block',\r\n objectFit: 'cover',\r\n objectPosition: 'center',\r\n transition: {\r\n timingFunction: 'ease-in-out',\r\n duration: '0.5s',\r\n property: 'transform',\r\n },\r\n})\r\n\r\nconst TagsAndImageOverlay = styled(OverlayNotABackdrop, {\r\n height: '100%',\r\n width: '100%',\r\n display: 'flex',\r\n padding: { xy: '16px' },\r\n alignItems: 'flex-end',\r\n gap: '8px',\r\n justifyContent: 'space-between',\r\n pointerEvents: 'none',\r\n})\r\n\r\nconst TagsWrap = styled.div({\r\n display: 'flex',\r\n gap: '8px',\r\n})\r\n\r\nconst FavoriteWrap = styled.div({\r\n width: '48px',\r\n height: '48px',\r\n backgroundColor: style.colors.rgbaFilters.white50,\r\n boxShadow: '0px 0px 16px rgba(0, 0, 0, 0.16)',\r\n borderRadius: '100px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n pointerEvents: 'all',\r\n cursor: 'pointer',\r\n})\r\n\r\nconst SlideItem = styled.div({\r\n width: '48px',\r\n height: '65px',\r\n})\r\n\r\nconst ThumbnailImage = styled(PictureImage, {\r\n pointerEvents: 'all',\r\n width: '100%',\r\n height: '100%',\r\n filter: 'drop-shadow(0px 1px 1px rgba(0, 0, 0, 0.2))',\r\n borderRadius: '8px',\r\n objectFit: 'cover',\r\n objectPosition: 'center',\r\n cursor: 'pointer',\r\n transition: {\r\n timingFunction: 'ease-in-out',\r\n duration: '0.5s',\r\n property: 'opacity',\r\n },\r\n})\r\n\r\n// const FadeOutOverlay = styled.div({\r\n// marginBottom: '30%',\r\n// position: 'absolute',\r\n// overflow: 'hidden', /* To ensure the pseudo-element doesn't extend beyond the parent */\r\n// borderRadius: '8px',\r\n// width: '48px',\r\n// height: '65px',\r\n// left: 0,\r\n// right: 0,\r\n// bottom: 0,\r\n// backgroundImage: 'linear-gradient(to bottom, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1) 98%)',\r\n// zIndex: 1,\r\n// });\r\n\r\nconst FavoriteIcon = styled(Favourite24x24, {\r\n pointerEvents: 'all',\r\n cursor: 'pointer',\r\n})\r\n\r\nconst FavoriteFullIcon = styled(FavouriteFull24x24, {\r\n color: style.colors.monochrome.black,\r\n pointerEvents: 'all',\r\n cursor: 'pointer',\r\n})\r\n\r\nconst CarouselWrapper = styled.div({\r\n cursor: 'pointer',\r\n zIndex: 1,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'space-between',\r\n\r\n});\r\n\r\nconst CarouselImagesWrap = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '8px',\r\n height: 'calc(100% - 48px - 24px)', // height and margin of favorite icon\r\n alignItems: 'center',\r\n justifyContent: 'end',\r\n paddingBottom: '72px',\r\n})\r\n\r\nconst CarouselImagesContainer = styled.div({\r\n overflow: 'hidden',\r\n})\r\n\r\nconst NavNextIcon = styled(Down32x32, {\r\n pointerEvents: 'all',\r\n cursor: 'pointer',\r\n})\r\n\r\nconst NavPrevIcon = styled(Up32x32, {\r\n pointerEvents: 'all',\r\n cursor: 'pointer',\r\n})\r\n\r\nexport const DesktopImageGallery = (props: {\r\n resources: Resource[];\r\n tags?: TagViewModel[];\r\n isFavorited?: boolean;\r\n toggleFavorited?: (e: any) => Promise;\r\n headerOffset: number;\r\n}) => {\r\n const swiperRef = useRef(null);\r\n const INTERVAL = 4000;\r\n const { resources, tags, isFavorited, toggleFavorited, headerOffset } = props;\r\n const [currentItem, setCurrentItem] = useState(0);\r\n const [showZoom, setShowZoom] = useState(false);\r\n\r\n const [hasBeenClicked, setHasBeenClicked] = useState(false);\r\n const [isHovering, setIsHovering] = useState(false);\r\n\r\n const [intervalId, setIntervalId] = useState(0);\r\n const itemCount = resources?.length ?? 0;\r\n\r\n useEffect(() => {\r\n let isMounted = true;\r\n if (hasBeenClicked || isHovering || showZoom) {\r\n clearInterval(intervalId);\r\n setIntervalId(0);\r\n } else {\r\n if (intervalId === 0) {\r\n setIntervalId(\r\n setInterval(() => {\r\n if (isMounted) {\r\n setCurrentItem(\r\n currentItem => (currentItem + 1) % itemCount\r\n );\r\n swiperRef.current.slideTo(currentItem);\r\n }\r\n }, INTERVAL),\r\n );\r\n }\r\n }\r\n return () => {\r\n isMounted = false;\r\n clearInterval(intervalId);\r\n };\r\n }, [hasBeenClicked, isHovering, showZoom]);\r\n\r\n useEffect(() => {\r\n //Reset if the number of images changes without the component being unmounted\r\n setCurrentItem(0);\r\n setHasBeenClicked(false);\r\n }, [resources]);\r\n\r\n const handlePreviousClick = () => {\r\n swiperRef.current.slidePrev();\r\n const newCurrentItem = (currentItem - 1 + resources.length) % resources.length;\r\n setCurrentItem(newCurrentItem);\r\n };\r\n\r\n const handleNextClick = () => {\r\n swiperRef.current.slideNext();\r\n const newCurrentItem = (currentItem + 1) % resources.length;\r\n setCurrentItem(newCurrentItem);\r\n };\r\n\r\n return (\r\n <>\r\n {showZoom && (\r\n <>\r\n \r\n {\r\n setShowZoom(false);\r\n }}\r\n />\r\n \r\n {resources.map((item, index) => (\r\n {\r\n setCurrentItem(index);\r\n }}\r\n css={{\r\n opacity: currentItem === index ? 1 : 0.5,\r\n }}\r\n />\r\n ))}\r\n \r\n \r\n \r\n )}\r\n \r\n {\r\n setIsHovering(true);\r\n }}\r\n onMouseLeave={() => {\r\n setIsHovering(false);\r\n }}\r\n css={{\r\n top: `-${(headerOffset - 4)}px`,\r\n }}\r\n >\r\n \r\n \r\n {resources.map((item, index) => {\r\n if (item.type === 'VIDEO') {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n return (\r\n {\r\n setShowZoom(true);\r\n }}\r\n />\r\n );\r\n })}\r\n \r\n \r\n \r\n {tags && tags.slice(0, 2).map((tag, index) => (\r\n \r\n {tag.tag}\r\n \r\n ))}\r\n \r\n \r\n {!!toggleFavorited && (\r\n \r\n {isFavorited ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n \r\n setCurrentItem(swiperRef.current.activeIndex)}\r\n pagination={false}\r\n freeMode={false}\r\n cssMode={true}\r\n height={'100%'}\r\n >\r\n {resources.map((item, index) => (\r\n \r\n {\r\n setHasBeenClicked(true);\r\n setCurrentItem(index);\r\n }}\r\n css={{\r\n opacity: currentItem === index ? 1 : 0.5,\r\n }}\r\n />\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};","import React, { useEffect, useState, useRef } from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport SwiperList from 'Shared/SwiperList';\r\nimport { Favourite24x24, FavouriteFull24x24 } from 'Shared/Icons/Favorite';\r\nimport { Plus24x24 } from 'Shared/Icons/Plus';\r\nimport TagViewModel from 'Shared/ViewModels/TagViewModel.type';\r\nimport * as style from 'Shared/Style';\r\nimport { OverlayNotABackdrop } from 'Shared/SharedComponents/atoms/AspectRatio';\r\nimport { BgTag } from 'Product/ProductTags';\r\nimport { colorFromTag } from 'Shared/utils';\r\nimport Resource from '../../../VoyadoElevate/Models/Resource.type';\r\nimport Video from 'Shared/Video/Video';\r\nimport VideoSource from 'Shared/ViewModels/VideoSourceViewModel.type';\r\nimport { PictureImage, Preset } from 'Shared/Image';\r\n\r\nconst FavoriteIcon = styled(Favourite24x24, {\r\n})\r\n\r\nconst FavoriteFullIcon = styled(FavouriteFull24x24, {\r\n color: style.colors.monochrome.black\r\n})\r\n\r\nconst Wrap = styled.div({\r\n position: 'relative', width: '100%'\r\n})\r\n\r\nconst ShowZoomWrap = styled.div({\r\n display: 'flex',\r\n position: 'fixed',\r\n zIndex: 1000,\r\n top: '0',\r\n left: 0,\r\n pointerEvents: 'none',\r\n height: '100vh',\r\n width: '100vw',\r\n padding: { xy: '16px' },\r\n justifyContent: 'flex-end',\r\n})\r\n\r\nconst ShowZoomIcon = styled(Plus24x24, {\r\n pointerEvents: 'all',\r\n transform: 'rotate(45deg)',\r\n color: style.colors.monochrome.black,\r\n marginRight: '12px',\r\n cursor: 'pointer',\r\n})\r\n\r\nconst ZoomContainer = styled.div({\r\n position: 'fixed',\r\n zIndex: 999,\r\n backgroundColor: style.colors.monochrome.white,\r\n top: '0',\r\n pointerEvents: 'all',\r\n overflow: 'scroll',\r\n height: '100vh',\r\n width: '100vw',\r\n overscrollBehaviorY: 'contain',\r\n})\r\n\r\nconst ZoomImage = styled(PictureImage, {\r\n height: '100%',\r\n width: '100%',\r\n objectFit: 'cover',\r\n display: 'block',\r\n})\r\n\r\nconst SwiperVideo = styled.div({\r\n height: 'calc(4/3 * 100vw)',\r\n width: '100vw',\r\n objectFit: 'cover',\r\n})\r\n\r\n// const SwiperImage = styled.img({\r\n// height: '100%',\r\n// width: '100%',\r\n// objectFit: 'cover',\r\n// })\r\n\r\nconst SwiperImage = styled(PictureImage, {\r\n height: '100%',\r\n width: '100%',\r\n objectFit: 'cover',\r\n})\r\n\r\n\r\nconst TagsOverlay = styled(OverlayNotABackdrop, {\r\n zIndex: 1,\r\n pointerEvents: 'none',\r\n height: '100%',\r\n width: '100%',\r\n display: 'flex',\r\n padding: { xy: '12px' },\r\n alignItems: 'flex-end',\r\n gap: '8px',\r\n flexDirection: 'column',\r\n justifyContent: 'flex-end',\r\n})\r\n\r\nconst ShowZoomedWrap = styled(OverlayNotABackdrop, {\r\n zIndex: 1,\r\n pointerEvents: 'none',\r\n height: '100%',\r\n width: '100%',\r\n display: 'flex',\r\n padding: { xy: '12px' },\r\n alignItems: 'flex-end',\r\n gap: '8px',\r\n flexDirection: 'column',\r\n justifyContent: 'flex-start',\r\n})\r\n\r\nconst ShowZoomedIcon = styled(Plus24x24, {\r\n pointerEvents: 'all',\r\n cursor: 'pointer',\r\n})\r\n\r\nconst FavoriteWrap = styled(OverlayNotABackdrop, {\r\n zIndex: 1,\r\n pointerEvents: 'none',\r\n height: '100%',\r\n width: '100%',\r\n display: 'flex',\r\n padding: { xy: '16px' },\r\n alignItems: 'flex-start',\r\n gap: '8px',\r\n flexDirection: 'column',\r\n justifyContent: 'space-between',\r\n})\r\n\r\nexport const MobileImageGallery = (props: {\r\n resources: Resource[];\r\n tags?: TagViewModel[];\r\n isFavorited?: boolean;\r\n toggleFavorited?: (e: any) => Promise;\r\n}) => {\r\n const { resources, tags, isFavorited, toggleFavorited } = props;\r\n const [currentItem, setCurrentItem] = useState(0);\r\n const [loadedImages, setLoadedImages] = useState(0);\r\n const [showZoom, setShowZoom] = useState(false);\r\n const swiperRef = useRef(null);\r\n let zoomContainerRef = useRef(null);\r\n let zoomImageContainerRef = useRef(null);\r\n const zoomImageRefs = useRef([])\r\n const itemCount = resources?.length ?? 0;\r\n\r\n useEffect(() => {\r\n let isMounted = true;\r\n if (itemCount === 0 || !showZoom) {\r\n return () => { }\r\n }\r\n\r\n if (loadedImages === itemCount && isMounted) {\r\n zoomImageRefs.current[currentItem].scrollIntoView({\r\n behavior: \"smooth\",\r\n block: \"start\",\r\n inline: \"nearest\"\r\n })\r\n return () => setLoadedImages(() => 0)\r\n }\r\n return () => { isMounted = false; }\r\n }, [loadedImages, showZoom]);\r\n\r\n return (\r\n \r\n {showZoom && (\r\n <>\r\n \r\n {\r\n setShowZoom(false);\r\n }}\r\n />\r\n \r\n \r\n \r\n {resources.map((item, index) => {\r\n return (\r\n {\r\n setLoadedImages(() => loadedImages + 1)\r\n }}\r\n imageRef={(elm) => zoomImageRefs.current[index] = elm}\r\n />\r\n )\r\n })}\r\n \r\n \r\n \r\n )}\r\n setCurrentItem(swiperRef.current.activeIndex)}\r\n pagination={itemCount > 0}\r\n pagingItemCount={itemCount}\r\n freeMode={false}\r\n overflowHidden={true}\r\n paginationContainerCss={{\r\n position: 'absolute',\r\n bottom: '16px',\r\n left: '16px',\r\n zIndex: 1,\r\n }}\r\n cssMode={true}\r\n >\r\n {resources.map((item, index) => (\r\n
\r\n {item.type === 'VIDEO' ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n ))}\r\n \r\n \r\n {tags &&\r\n tags.slice(0, 2).map((tag, index) => (\r\n \r\n {tag.tag}\r\n \r\n ))}\r\n \r\n \r\n {\r\n setShowZoom(true);\r\n }}\r\n />\r\n \r\n \r\n {!!toggleFavorited && (\r\n \r\n {isFavorited ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n \r\n
\r\n );\r\n};\r\n","import React from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport ProductFeatureViewModel from 'Product/ProductFeature/ProductFeatureViewModel.type';\r\nimport ProductFeature from 'Product/ProductFeature';\r\nimport { AspectImageVideoBackground } from 'Shared/SharedComponents/molecules/ImageVideoBackground';\r\nimport {\r\n H2,\r\n Paragraph,\r\n ResponsiveSize,\r\n ResponsiveLineHeight,\r\n} from 'Shared/SharedComponents/atoms/Typography';\r\nimport { Preset } from 'Shared/Image';\r\nimport { calculateTopPadding, Ratio } from 'Shared/AspectRatio';\r\nimport SwiperList from 'Shared/SwiperList';\r\nimport { createGridClasses, createOffsetGridClassLarge } from 'Shared/grid';\r\nimport * as style from 'Shared/Style';\r\n\r\ntype PropType = {\r\n features: ProductFeatureViewModel[];\r\n smallLayout: boolean;\r\n isCompact: boolean;\r\n skipGridOffSet?: boolean;\r\n label: string;\r\n};\r\n\r\nconst BigContentWrap = styled.div({\r\n position: 'relative',\r\n height: '100%',\r\n justifyItems: 'center',\r\n alignContent: 'center',\r\n})\r\n\r\nconst BigIconWrap = styled.div({\r\n position: 'absolute',\r\n textAlign: 'center',\r\n width: '100%',\r\n marginTop: '104px',\r\n})\r\n\r\nconst BigParagraphWrap = styled.div({\r\n position: 'absolute',\r\n bottom: '40px',\r\n width: '100%'\r\n})\r\n\r\nconst BigParagraph = styled(Paragraph, {\r\n textAlign: 'center',\r\n})\r\n\r\nconst CenterContent = styled.div({\r\n textAlign: 'center',\r\n})\r\n\r\nconst SwiperWrap = styled.div({\r\n position: 'relative',\r\n color: style.colors.monochrome.white,\r\n})\r\n\r\nconst Image = styled.img({\r\n width: '106px',\r\n height: '106px',\r\n ['@media ' + style.mediaMinLarge]: {\r\n width: '95px',\r\n height: '95px',\r\n },\r\n})\r\n\r\nexport const ProductFeatureList = (props: PropType) => {\r\n const { features, smallLayout, isCompact, label } = props;\r\n const totalCount = features?.length ?? 0;\r\n if (smallLayout)\r\n return (\r\n
\r\n
\r\n
\r\n 3}\r\n freeMode={false}\r\n cssMode={true}\r\n parallax={false}\r\n alternativeNav={true}\r\n listHeading={label}\r\n showSwirl={isCompact && totalCount > 1}\r\n >\r\n {features?.map((feature, index) => (\r\n \r\n ))}\r\n \r\n
\r\n
\r\n
\r\n );\r\n\r\n return (\r\n \r\n \r\n {features?.map((feature, index) => (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

{feature.heading}

\r\n
\r\n \r\n
\r\n
\r\n \r\n {feature.text}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n ))}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ProductFeatureList;\r\n","import { styled, StyledProps } from '@glitz/react';\r\nimport React, { ChangeEventHandler, useState, useEffect } from 'react';\r\nimport * as style from 'Shared/Style';\r\n\r\nexport enum SearchBorderStyle {\r\n Surrounding,\r\n Underline,\r\n}\r\n\r\nconst SearchInputElement = styled.input({\r\n border: { xy: { width: 0 } },\r\n padding: { xy: 0 },\r\n flexGrow: 1,\r\n fontFamily: 'Futura PT',\r\n fontStyle: 'normal',\r\n fontWeight: 500,\r\n fontSize: '16px',\r\n lineHeight: '130%',\r\n})\r\n\r\nexport const SearchInput = styled(\r\n (\r\n props: {\r\n value?: string;\r\n placeholderText?: string;\r\n onUpdate: ChangeEventHandler;\r\n iconBefore?: React.ReactNode;\r\n iconAfter?: React.ReactNode;\r\n paddingX?: number;\r\n paddingY?: number;\r\n borderStyle?: SearchBorderStyle;\r\n } & StyledProps,\r\n ) => {\r\n const {\r\n value,\r\n placeholderText,\r\n onUpdate,\r\n iconBefore,\r\n iconAfter,\r\n paddingX = 16,\r\n paddingY = 12,\r\n borderStyle = SearchBorderStyle.Surrounding,\r\n } = props;\r\n return (\r\n \r\n {iconBefore}\r\n \r\n {iconAfter}\r\n \r\n );\r\n },\r\n);\r\n\r\nconst ToggleLabel = styled.label({\r\n position: 'relative',\r\n display: 'inline-block',\r\n width: '28px',\r\n height: '16px',\r\n outlineStyle: 'none',\r\n borderRadius: '38px',\r\n cursor: 'pointer',\r\n border: {\r\n xy: {\r\n width: '1px',\r\n style: 'solid',\r\n color: style.colors.monochrome.black,\r\n },\r\n },\r\n})\r\n\r\nconst ToggleInput = styled.input({\r\n position: 'absolute',\r\n top: '-99999px',\r\n left: '-99999px',\r\n})\r\n\r\nconst ToggleSwitch = styled.div({\r\n position: 'absolute',\r\n cursor: 'pointer',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n borderRadius: '38px',\r\n ':before': {\r\n position: 'absolute',\r\n content: \"''\",\r\n height: '12px',\r\n width: '12px',\r\n left: '1px',\r\n bottom: '1px',\r\n borderRadius: '50%',\r\n },\r\n})\r\n\r\nexport const Toggle = styled(\r\n ({\r\n initialValue = true,\r\n onChange,\r\n }: {\r\n initialValue?: boolean;\r\n onChange: (value: boolean) => void;\r\n } & StyledProps) => {\r\n const [value, setValue] = useState(initialValue);\r\n const [stateInitialValue, setInitialValue] = useState(initialValue);\r\n\r\n useEffect(() => {\r\n setValue(stateInitialValue);\r\n }, [stateInitialValue]);\r\n\r\n const TRANSITION_DURATION = '.4s';\r\n return (\r\n \r\n {\r\n setValue((currentValue) => !currentValue);\r\n onChange(event.currentTarget.checked);\r\n }}\r\n />\r\n \r\n \r\n );\r\n },\r\n);\r\n","import StoreStockViewModel from 'Product/StoreStockViewModel.type';\r\nimport StoreModel from 'Stores/StoreModel.type';\r\n\r\ninterface GeolocationCoordinates {\r\n readonly accuracy: number;\r\n readonly altitude: number | null;\r\n readonly altitudeAccuracy: number | null;\r\n readonly heading: number | null;\r\n readonly latitude: number;\r\n readonly longitude: number;\r\n readonly speed: number | null;\r\n}\r\n\r\ntype EpochTimeStamp = number;\r\n\r\n// This is a standard type from TS version 4.1.x, but we use an old version of TS for our builds\r\ninterface GeolocationPosition {\r\n readonly coords: GeolocationCoordinates;\r\n readonly timestamp: EpochTimeStamp;\r\n}\r\n\r\nfunction crowFliesDistanceToStore(store: StoreModel | StoreStockViewModel, position: GeolocationPosition): number {\r\n const lat = 110.574 * (store.latitude - position.coords.latitude);\r\n const long =\r\n 111.32 * Math.cos((position.coords.latitude * Math.PI) / 180.0) * (store.longitude - position.coords.longitude);\r\n return Math.sqrt(long * long + lat * lat);\r\n}\r\n\r\nexport function sortByCrowFliesDistance(stores: StoreModel[] | StoreStockViewModel[], position: GeolocationPosition) {\r\n if (stores?.length < 1) {\r\n return stores;\r\n }\r\n\r\n return stores.sort((a: StoreStockViewModel, b: StoreStockViewModel) => {\r\n const aDist = crowFliesDistanceToStore(a, position);\r\n const bDist = crowFliesDistanceToStore(b, position);\r\n if (aDist === bDist) {\r\n return 0;\r\n }\r\n return aDist > bDist ? 1 : -1;\r\n });\r\n}\r\n\r\nasync function fetchDrivingDistances(stores: StoreModel[], position: GeolocationPosition) {\r\n var service = new google.maps.DistanceMatrixService();\r\n const getDistanceMatrix = (store: StoreModel) =>\r\n new Promise((resolve, reject) => {\r\n service.getDistanceMatrix(\r\n {\r\n origins: [new google.maps.LatLng(position.coords.latitude, position.coords.longitude)],\r\n destinations: [new google.maps.LatLng(store.latitude, store.longitude)],\r\n travelMode: google.maps.TravelMode.DRIVING,\r\n unitSystem: google.maps.UnitSystem.METRIC,\r\n },\r\n storeCallback(resolve, reject),\r\n );\r\n });\r\n\r\n const distanceMatrixPromises = stores.map((store) => {\r\n return getDistanceMatrix(store);\r\n });\r\n\r\n stores = [];\r\n\r\n function storeCallback(resolve: (value: unknown) => void, reject: (value: unknown) => void) {\r\n return (response: google.maps.DistanceMatrixResponse, status: google.maps.DistanceMatrixStatus) => {\r\n if (status !== google.maps.DistanceMatrixStatus.OK) {\r\n reject(new Error(`Request to Distance Matrix API failed: ${status}`));\r\n return;\r\n }\r\n if (response.rows.length <= 0) {\r\n reject(new Error(`Request to Distance Matrix API failed: Empty rows`));\r\n return;\r\n }\r\n\r\n if (response.rows[0].elements.length <= 0) {\r\n reject(new Error(`Request to Distance Matrix API failed: Empty elements`));\r\n return;\r\n }\r\n\r\n resolve(response.rows[0].elements[0].distance.value);\r\n };\r\n }\r\n\r\n return Promise.all(distanceMatrixPromises);\r\n}\r\n\r\nfunction filterByCrowFliesDistance(stores: StoreModel[], position: GeolocationPosition, distance: number) {\r\n return stores.filter((store: StoreModel) => {\r\n return crowFliesDistanceToStore(store, position) <= distance;\r\n });\r\n}\r\n\r\nexport async function filterByDistance(stores: StoreModel[], position: GeolocationPosition, distance: number) {\r\n return fetchDrivingDistances(stores, position)\r\n .then((storeDistances) => {\r\n return stores.filter((store, i) => {\r\n return storeDistances[i] as number <= distance * 1000;\r\n });\r\n })\r\n .catch(() => {\r\n return filterByCrowFliesDistance(stores, position, distance);\r\n });\r\n}\r\n","var React = require('react');\n\nfunction Store12x12 (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"g\",{\"id\":\"Property 1=store\",\"clipPath\":\"url(#clip0_10547_396842)\",\"key\":0},React.createElement(\"path\",{\"id\":\"Vector 232\",\"d\":\"M.375 3L1.951.794a1 1 0 01.814-.419h6.47a1 1 0 01.814.419L11.625 3M.375 3v2.625M.375 3h3m8.25 0v2.625m0-2.625H9M.375 5.625v5a1 1 0 001 1h2m-3-6l.158.08a3 3 0 002.684 0l.158-.08m8.25 0v5a1 1 0 01-1 1h-2m3-6v0a2.33 2.33 0 01-2.334.145L9 5.625M3.375 3v2.625m0-2.625h2.813M3.374 5.625l.148.074a2.825 2.825 0 002.664-.074v0M9 3v2.625M9 3H6.187M9 5.625l-.148.074a2.825 2.825 0 01-2.665-.074v0m0-2.625v2.625m-2.812 6v-2.75a1 1 0 011-1H6m-2.625 3.75H6m2.625 0v-2.75a1 1 0 00-1-1H6m2.625 3.75H6m0-3.75v3.75\",\"stroke\":\"currentColor\"})),React.createElement(\"defs\",{\"key\":1},React.createElement(\"clipPath\",{\"id\":\"clip0_10547_396842\"},React.createElement(\"path\",{\"fill\":\"#fff\",\"d\":\"M0 0h12v12H0z\"})))]);\n}\n\nStore12x12.defaultProps = {\"width\":\"12\",\"height\":\"12\",\"viewBox\":\"0 0 12 12\",\"fill\":\"none\"};\n\nmodule.exports = Store12x12;\n\nStore12x12.default = Store12x12;\n","var React = require('react');\n\nfunction Dripdry (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Desktop---Phase-1\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\"},React.createElement(\"g\",{\"id\":\"Ikoner/Dry-drip\",\"transform\":\"translate(-2.326 -1.842)\",\"stroke\":\"#000\",\"strokeWidth\":\"2\"},[React.createElement(\"path\",{\"d\":\"M3.557 3.557v32.886h32.886V3.557H3.557z\",\"id\":\"Rectangle-21\",\"key\":0}),React.createElement(\"path\",{\"d\":\"M2 20.5h20\",\"id\":\"Line-5\",\"strokeLinecap\":\"square\",\"transform\":\"rotate(90 12 20.5)\",\"key\":1}),React.createElement(\"path\",{\"d\":\"M10 20.5h20\",\"id\":\"Line-5-Copy\",\"strokeLinecap\":\"square\",\"transform\":\"rotate(90 20 20.5)\",\"key\":2}),React.createElement(\"path\",{\"d\":\"M18 20.5h20\",\"id\":\"Line-5-Copy-2\",\"strokeLinecap\":\"square\",\"transform\":\"rotate(90 28 20.5)\",\"key\":3})])));\n}\n\nDripdry.defaultProps = {\"width\":\"36\",\"height\":\"36\",\"viewBox\":\"0 0 36 36\"};\n\nmodule.exports = Dripdry;\n\nDripdry.default = Dripdry;\n","var React = require('react');\n\nfunction Dryclpetr (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Mobile\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\"},React.createElement(\"g\",{\"id\":\"Group-28-Copy\",\"transform\":\"translate(-123.125 -152.821)\"},React.createElement(\"g\",{\"id\":\"Group-24-Copy-2\",\"transform\":\"translate(123.822 152.72)\"},[React.createElement(\"path\",{\"d\":\"M12.424 13.186c0 1.206-.927 1.782-2.043 1.782h-.414v2.439h-.909v-6.003h1.161c.558 0 1.09.036 1.548.387.423.333.657.864.657 1.395zm-.873-.018c0-.765-.648-.927-1.287-.927h-.297v1.89h.333c.648 0 1.251-.207 1.251-.963zm3.973 4.239h-2.673v-6.003h.91v5.148h1.763v.855zm5.827 0h-.99l-.63-1.458h-2.565l-.666 1.458h-.98l2.97-6.381 2.861 6.38zm-1.989-2.313l-.89-2.034-.928 2.034h1.818zm6.421 1.98a3.182 3.182 0 01-1.638.45 3.084 3.084 0 01-3.096-3.096c0-1.755 1.422-3.132 3.168-3.132.594 0 1.053.135 1.566.432v1.08c-.504-.414-.963-.666-1.629-.666-1.26 0-2.196 1.053-2.196 2.286 0 1.242.954 2.24 2.205 2.24.657 0 1.134-.27 1.62-.683v1.089zm3.946.333h-3.312v-6.003h3.312v.855h-2.403v1.44h2.331v.855h-2.33v1.998h2.402v.855zm-19.494 9h-.91v-2.8H6.744v2.8h-.91v-6.003h.91v2.349h2.583v-2.35h.909v6.004zm6.907-2.997c0 1.728-1.413 3.114-3.132 3.114-1.728 0-3.132-1.35-3.132-3.087a3.134 3.134 0 013.15-3.141 3.127 3.127 0 013.114 3.114zm-.91 0c0-1.251-.944-2.268-2.213-2.268-1.314 0-2.232 1.026-2.232 2.313a2.226 2.226 0 002.223 2.214c1.25 0 2.223-1.017 2.223-2.26zm4.226 2.997h-2.673v-6.003h.909v5.148h1.764v.855zm4.99-2.997c0 .999-.387 1.827-1.197 2.42-.72.523-1.341.577-2.196.577h-1.242v-6.003h1.26c.828 0 1.53.08 2.214.585.792.585 1.16 1.458 1.16 2.42zm-.91 0c0-.657-.27-1.332-.81-1.728-.476-.351-1.025-.423-1.601-.423h-.405v4.293h.405c.594 0 1.107-.063 1.593-.432.54-.405.819-1.044.819-1.71zm4.865 2.997H26.09v-6.003h3.312v.855H27v1.44h2.33v.855H27v1.998h2.403v.855zm4.576 0h-1.107l-1.71-2.457H31v2.457h-.91v-6.003h1.063c.549 0 1.107.036 1.584.35.459.307.71.874.71 1.414 0 .819-.512 1.512-1.322 1.683l1.854 2.556zm-1.413-4.23c0-.738-.63-.918-1.251-.918H31v1.899h.288c.648 0 1.278-.225 1.278-.981z\",\"id\":\"PLACE-HOLDER\",\"fill\":\"#F6333F\",\"key\":0}),React.createElement(\"circle\",{\"id\":\"Oval-11-Copy\",\"stroke\":\"#000\",\"strokeWidth\":\"2\",\"cx\":\"19.401\",\"cy\":\"19.53\",\"r\":\"18.349\",\"key\":1})]))));\n}\n\nDryclpetr.defaultProps = {\"width\":\"40\",\"height\":\"39\",\"viewBox\":\"0 0 40 39\"};\n\nmodule.exports = Dryclpetr;\n\nDryclpetr.default = Dryclpetr;\n","var React = require('react');\n\nfunction Dryflat (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Desktop---Phase-1\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\"},React.createElement(\"g\",{\"id\":\"Ikoner/Flat-dry\",\"transform\":\"translate(-2.355 -1.842)\",\"stroke\":\"#000\",\"strokeWidth\":\"2\"},[React.createElement(\"path\",{\"d\":\"M3.557 3.557v32.886h32.886V3.557H3.557z\",\"id\":\"Rectangle-21\",\"key\":0}),React.createElement(\"path\",{\"d\":\"M10 20h20\",\"id\":\"Line-5\",\"strokeLinecap\":\"square\",\"key\":1})])));\n}\n\nDryflat.defaultProps = {\"width\":\"36\",\"height\":\"36\",\"viewBox\":\"0 0 36 36\"};\n\nmodule.exports = Dryflat;\n\nDryflat.default = Dryflat;\n","var React = require('react');\n\nfunction Handwash (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Desktop---Phase-1\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\"},React.createElement(\"g\",{\"id\":\"Ikoner/Hand-wash\",\"transform\":\"translate(-.5 -.175)\",\"stroke\":\"#000\",\"strokeWidth\":\"2\"},[React.createElement(\"path\",{\"id\":\"Rectangle-17\",\"d\":\"M2 8.587l4.105 33h30.79l4.105-33h0\",\"key\":0}),React.createElement(\"path\",{\"d\":\"M36.01 15.161c1.089 1.063 2.02 2.48 3.58 2.48m-36.1-.001c2.158 0 3.382-3.628 5.84-3.628.535 0 1.001.172 1.43.44\",\"id\":\"Line-6\",\"strokeLinecap\":\"square\",\"key\":1}),React.createElement(\"g\",{\"id\":\"Hand\",\"fillRule\":\"evenodd\",\"transform\":\"rotate(-146 16.087 15.598)\",\"key\":2},[React.createElement(\"path\",{\"d\":\"M16.895 19.868v10.557c0 1.176-1.027 1.84-2.038 1.84-1.58 0-2.065-1.895-2.065-1.84 0 3.552-.906 4.145-2.44 4.145-1.732 0-2.25-1.47-2.25-2.669v-1.476c0 .979-.87 1.84-2.051 1.84-1.18 0-1.984-1.087-1.984-1.84 0-1.9.023-4.09 0-4.062-.42.513-.916 1.102-2.054 1.102-1.188 0-1.973-.88-1.937-2.189.036-1.308.025-15.703.05-15.99C.77 2.017 6.734.23 10.122.23c3.526 0 10.28 1.954 10.5 9.839l.081 9.125c.081 1.782-.062 2.716-.428 2.803-1.247.296-3.683-.975-3.683-3.799 0-2.823.045-3.928 0-3.928-1.53 0-2.723-.474-3.901-.873-2.326-.787-3.725-3.652-3.746-3.695\",\"id\":\"Line-30-Copy\",\"strokeLinecap\":\"round\",\"transform\":\"matrix(1 0 0 -1 0 34.8)\",\"key\":0}),React.createElement(\"path\",{\"d\":\"M3.031 17.85c.88-.512 3.602-2.133 5.616-2.489 2.014-.355 4.604.21 5.502.6\",\"id\":\"Line-30\",\"strokeLinecap\":\"round\",\"key\":1}),React.createElement(\"path\",{\"id\":\"Line-31\",\"strokeLinecap\":\"square\",\"d\":\"M4.087 8.418l-.04 7.613-.004.74\",\"key\":2}),React.createElement(\"path\",{\"d\":\"M8.098 3.703v11.458\",\"id\":\"Line-31-Copy\",\"strokeLinecap\":\"square\",\"key\":3}),React.createElement(\"path\",{\"d\":\"M12.806 4.489V15.16\",\"id\":\"Line-31-Copy-2\",\"strokeLinecap\":\"square\",\"key\":4})])])));\n}\n\nHandwash.defaultProps = {\"width\":\"42\",\"height\":\"43\",\"viewBox\":\"0 0 42 43\"};\n\nmodule.exports = Handwash;\n\nHandwash.default = Handwash;\n","var React = require('react');\n\nfunction IronH (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Desktop---Phase-1\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\"},React.createElement(\"g\",{\"id\":\"Ikoner/Iron-High-temp\",\"transform\":\"translate(0 -3.027)\"},React.createElement(\"g\",{\"id\":\"Strykning\",\"transform\":\"translate(0 3.5)\"},[React.createElement(\"path\",{\"d\":\"M1.415 26.402h31.778l-1.764-15.396h-9.723c-10.497 0-19.132 6.705-20.29 15.396z\",\"id\":\"Rectangle-19\",\"stroke\":\"#000\",\"strokeWidth\":\"2\",\"key\":0}),React.createElement(\"circle\",{\"id\":\"Oval-11\",\"fill\":\"#000\",\"cx\":\"12.214\",\"cy\":\"18.704\",\"r\":\"2\",\"key\":1}),React.createElement(\"circle\",{\"id\":\"Oval-11\",\"fill\":\"#000\",\"cx\":\"19.214\",\"cy\":\"18.704\",\"r\":\"2\",\"key\":2}),React.createElement(\"circle\",{\"id\":\"Oval-11\",\"fill\":\"#000\",\"cx\":\"26.214\",\"cy\":\"18.704\",\"r\":\"2\",\"key\":3}),React.createElement(\"path\",{\"id\":\"Line-7\",\"stroke\":\"#000\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"square\",\"d\":\"M10.314.997h20.003l2.76 24.27\",\"key\":4})]))));\n}\n\nIronH.defaultProps = {\"width\":\"35\",\"height\":\"28\",\"viewBox\":\"0 0 35 28\"};\n\nmodule.exports = IronH;\n\nIronH.default = IronH;\n","var React = require('react');\n\nfunction IronL (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Desktop---Phase-1\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\"},React.createElement(\"g\",{\"id\":\"Ikoner/Iron-Low-temp\",\"transform\":\"translate(-.031 -2.54)\"},React.createElement(\"g\",{\"id\":\"Strykning\",\"transform\":\"translate(0 3.5)\"},[React.createElement(\"path\",{\"d\":\"M1.415 26.402h31.778l-1.764-15.396h-9.723c-10.497 0-19.132 6.705-20.29 15.396z\",\"id\":\"Rectangle-19\",\"stroke\":\"#000\",\"strokeWidth\":\"2\",\"key\":0}),React.createElement(\"circle\",{\"id\":\"Oval-11\",\"fill\":\"#000\",\"cx\":\"19.314\",\"cy\":\"18.704\",\"r\":\"2\",\"key\":1}),React.createElement(\"path\",{\"id\":\"Line-7\",\"stroke\":\"#000\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"square\",\"d\":\"M10.314.997h20.003l2.76 24.27\",\"key\":2})]))));\n}\n\nIronL.defaultProps = {\"width\":\"35\",\"height\":\"29\",\"viewBox\":\"0 0 35 29\"};\n\nmodule.exports = IronL;\n\nIronL.default = IronL;\n","var React = require('react');\n\nfunction IronM (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Desktop---Phase-1\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\"},React.createElement(\"g\",{\"id\":\"Ikoner/Iron-Medium-temp\",\"transform\":\"translate(.333 -3.246)\"},React.createElement(\"g\",{\"id\":\"Strykning\",\"transform\":\"translate(0 3.5)\"},[React.createElement(\"path\",{\"d\":\"M1.415 26.402h31.778l-1.764-15.396h-9.723c-10.497 0-19.132 6.705-20.29 15.396z\",\"id\":\"Rectangle-19\",\"stroke\":\"#000\",\"strokeWidth\":\"2\",\"key\":0}),React.createElement(\"circle\",{\"id\":\"Oval-11\",\"fill\":\"#000\",\"cx\":\"15.543\",\"cy\":\"18.704\",\"r\":\"2\",\"key\":1}),React.createElement(\"circle\",{\"id\":\"Oval-11\",\"fill\":\"#000\",\"cx\":\"22.543\",\"cy\":\"18.704\",\"r\":\"2\",\"key\":2}),React.createElement(\"path\",{\"id\":\"Line-7\",\"stroke\":\"#000\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"square\",\"d\":\"M10.314.997h20.003l2.76 24.27\",\"key\":3})]))));\n}\n\nIronM.defaultProps = {\"width\":\"35\",\"height\":\"28\",\"viewBox\":\"0 0 35 28\"};\n\nmodule.exports = IronM;\n\nIronM.default = IronM;\n","var React = require('react');\n\nfunction Linedry (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Desktop---Phase-1\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\"},React.createElement(\"g\",{\"id\":\"Ikoner/Line-dry\",\"transform\":\"translate(-2.384 -1.842)\",\"stroke\":\"#000\",\"strokeWidth\":\"2\"},[React.createElement(\"path\",{\"d\":\"M3.557 3.557v32.886h32.886V3.557H3.557z\",\"id\":\"Rectangle-21\",\"key\":0}),React.createElement(\"path\",{\"d\":\"M3.686 3.557c1.012 3.918 7.866 7.184 16.308 7.184 8.44 0 15.295-3.266 16.307-7.184H3.686z\",\"id\":\"Oval-6\",\"key\":1})])));\n}\n\nLinedry.defaultProps = {\"width\":\"36\",\"height\":\"36\",\"viewBox\":\"0 0 36 36\"};\n\nmodule.exports = Linedry;\n\nLinedry.default = Linedry;\n","var React = require('react');\n\nfunction Nobleach (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Desktop---Phase-1\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\"},React.createElement(\"g\",{\"id\":\"Ikoner/Do-not-bleach\",\"transform\":\"translate(.333 .23)\",\"stroke\":\"#000\"},[React.createElement(\"g\",{\"id\":\"Ej_blekning\",\"transform\":\"translate(-.121 3.075)\",\"key\":0},React.createElement(\"path\",{\"d\":\"M20.121 1.927L1.926 31.04h36.391L20.121 1.927z\",\"id\":\"Rectangle-24\",\"strokeWidth\":\"2\"})),React.createElement(\"g\",{\"id\":\"x\",\"transform\":\"translate(1 .575)\",\"strokeLinecap\":\"square\",\"strokeWidth\":\"2\",\"key\":1},[React.createElement(\"path\",{\"d\":\"M36.924 1.005L.96 37.624\",\"id\":\"Line-29\",\"key\":0}),React.createElement(\"path\",{\"d\":\"M.96 1.005l35.964 36.619\",\"id\":\"Line-29-Copy\",\"key\":1})])])));\n}\n\nNobleach.defaultProps = {\"width\":\"41\",\"height\":\"40\",\"viewBox\":\"0 0 41 40\"};\n\nmodule.exports = Nobleach;\n\nNobleach.default = Nobleach;\n","var React = require('react');\n\nfunction Nodrycl (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Desktop---Phase-1\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\"},React.createElement(\"g\",{\"id\":\"Ikoner/Do-not-dry-clean\",\"transform\":\"translate(.333 .078)\",\"stroke\":\"#000\",\"strokeWidth\":\"2\"},[React.createElement(\"g\",{\"id\":\"x\",\"fillRule\":\"evenodd\",\"transform\":\"translate(1 .575)\",\"strokeLinecap\":\"square\",\"key\":0},[React.createElement(\"path\",{\"d\":\"M36.924 1.005L.96 37.624\",\"id\":\"Line-29\",\"key\":0}),React.createElement(\"path\",{\"d\":\"M.96 1.005l35.964 36.619\",\"id\":\"Line-29-Copy\",\"key\":1})]),React.createElement(\"circle\",{\"id\":\"Oval-11\",\"cx\":\"20\",\"cy\":\"20\",\"r\":\"17\",\"key\":1})])));\n}\n\nNodrycl.defaultProps = {\"width\":\"40\",\"height\":\"40\",\"viewBox\":\"0 0 40 40\"};\n\nmodule.exports = Nodrycl;\n\nNodrycl.default = Nodrycl;\n","var React = require('react');\n\nfunction NoIron (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Desktop---Phase-1\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\"},React.createElement(\"g\",{\"id\":\"Ikoner/Do-not-Iron\",\"transform\":\"translate(0 .184)\",\"stroke\":\"#000\",\"strokeWidth\":\"2\"},[React.createElement(\"g\",{\"id\":\"Strykning\",\"transform\":\"translate(2.5 6)\",\"key\":0},[React.createElement(\"path\",{\"d\":\"M1.415 26.402h31.778l-1.764-15.396h-9.723c-10.497 0-19.132 6.705-20.29 15.396z\",\"id\":\"Rectangle-19\",\"key\":0}),React.createElement(\"path\",{\"id\":\"Line-7\",\"strokeLinecap\":\"square\",\"d\":\"M10.314.997h20.003l2.76 24.27\",\"key\":1})]),React.createElement(\"g\",{\"id\":\"x\",\"transform\":\"translate(1 1)\",\"strokeLinecap\":\"square\",\"key\":1},[React.createElement(\"path\",{\"d\":\"M36.924 1.005L.96 37.624\",\"id\":\"Line-29\",\"key\":0}),React.createElement(\"path\",{\"d\":\"M.96 1.005l35.964 36.619\",\"id\":\"Line-29-Copy\",\"key\":1})])])));\n}\n\nNoIron.defaultProps = {\"width\":\"40\",\"height\":\"41\",\"viewBox\":\"0 0 40 41\"};\n\nmodule.exports = NoIron;\n\nNoIron.default = NoIron;\n","var React = require('react');\n\nfunction Notumble (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Desktop---Phase-1\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\"},React.createElement(\"g\",{\"id\":\"Ikoner/Do-not-tumble-dry\",\"transform\":\"translate(-.413 .158)\",\"stroke\":\"#000\",\"strokeWidth\":\"2\"},[React.createElement(\"g\",{\"id\":\"x\",\"fillRule\":\"evenodd\",\"transform\":\"translate(1 .575)\",\"strokeLinecap\":\"square\",\"key\":0},[React.createElement(\"path\",{\"d\":\"M36.924 1.005L.96 37.624\",\"id\":\"Line-29\",\"key\":0}),React.createElement(\"path\",{\"d\":\"M.96 1.005l35.964 36.619\",\"id\":\"Line-29-Copy\",\"key\":1})]),React.createElement(\"circle\",{\"id\":\"Oval-11\",\"cx\":\"20\",\"cy\":\"20\",\"r\":\"14.5\",\"key\":1}),React.createElement(\"path\",{\"id\":\"Rectangle-21\",\"d\":\"M3.557 3.557h32.886v32.886H3.557z\",\"key\":2})])));\n}\n\nNotumble.defaultProps = {\"width\":\"39\",\"height\":\"40\",\"viewBox\":\"0 0 39 40\"};\n\nmodule.exports = Notumble;\n\nNotumble.default = Notumble;\n","var React = require('react');\n\nfunction Nowash (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Ikoner/Do-not-wash\",\"stroke\":\"#000\",\"strokeWidth\":\"2\",\"fill\":\"none\",\"fillRule\":\"evenodd\"},[React.createElement(\"path\",{\"id\":\"Rectangle-17\",\"d\":\"M2.31 5.06l4.104 33h30.79l4.105-33h0\",\"key\":0}),React.createElement(\"path\",{\"d\":\"M3.8 14.113c2.157 0 3.381-3.629 5.84-3.629 2.458 0 3.477 3.629 6.067 3.629 2.59 0 3.562-3.629 6.049-3.629 2.487 0 3.499 3.629 6.289 3.629 2.79 0 3.468-3.629 5.97-3.629 2.501 0 3.388 3.629 5.885 3.629\",\"id\":\"Line-6\",\"strokeLinecap\":\"square\",\"key\":1}),React.createElement(\"g\",{\"id\":\"x\",\"transform\":\"translate(.857 1)\",\"strokeLinecap\":\"square\",\"key\":2},[React.createElement(\"path\",{\"d\":\"M40.81 1.111L1.06 41.584\",\"id\":\"Line-29\",\"key\":0}),React.createElement(\"path\",{\"d\":\"M1.06 1.111l39.75 40.473\",\"id\":\"Line-29-Copy\",\"key\":1})])]));\n}\n\nNowash.defaultProps = {\"width\":\"44\",\"height\":\"44\",\"viewBox\":\"0 0 44 44\"};\n\nmodule.exports = Nowash;\n\nNowash.default = Nowash;\n","var React = require('react');\n\nfunction TumbleH (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Desktop---Phase-1\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\"},React.createElement(\"g\",{\"id\":\"Ikoner/Tumble-dry-High-temp\",\"transform\":\"translate(-2.442 -1.842)\"},[React.createElement(\"circle\",{\"id\":\"Oval-11\",\"stroke\":\"#000\",\"strokeWidth\":\"2\",\"cx\":\"20\",\"cy\":\"20\",\"r\":\"14.5\",\"key\":0}),React.createElement(\"path\",{\"id\":\"Rectangle-21\",\"stroke\":\"#000\",\"strokeWidth\":\"2\",\"d\":\"M3.557 3.557h32.886v32.886H3.557z\",\"key\":1}),React.createElement(\"circle\",{\"id\":\"Oval-11\",\"fill\":\"#000\",\"fillRule\":\"evenodd\",\"cx\":\"20\",\"cy\":\"20\",\"r\":\"2\",\"key\":2}),React.createElement(\"circle\",{\"id\":\"Oval-11-Copy\",\"fill\":\"#000\",\"fillRule\":\"evenodd\",\"cx\":\"13\",\"cy\":\"20\",\"r\":\"2\",\"key\":3}),React.createElement(\"circle\",{\"id\":\"Oval-11-Copy-2\",\"fill\":\"#000\",\"fillRule\":\"evenodd\",\"cx\":\"27\",\"cy\":\"20\",\"r\":\"2\",\"key\":4})])));\n}\n\nTumbleH.defaultProps = {\"width\":\"35\",\"height\":\"36\",\"viewBox\":\"0 0 35 36\"};\n\nmodule.exports = TumbleH;\n\nTumbleH.default = TumbleH;\n","var React = require('react');\n\nfunction TumbleL (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Desktop---Phase-1\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\"},React.createElement(\"g\",{\"id\":\"Ikoner/Tumble-dry-Low-temp\",\"transform\":\"translate(-2.5 -1.842)\"},[React.createElement(\"circle\",{\"id\":\"Oval-11\",\"stroke\":\"#000\",\"strokeWidth\":\"2\",\"cx\":\"20\",\"cy\":\"20\",\"r\":\"14.5\",\"key\":0}),React.createElement(\"circle\",{\"id\":\"Oval-11\",\"fill\":\"#000\",\"fillRule\":\"evenodd\",\"cx\":\"20\",\"cy\":\"20\",\"r\":\"2\",\"key\":1}),React.createElement(\"path\",{\"id\":\"Rectangle-21\",\"stroke\":\"#000\",\"strokeWidth\":\"2\",\"d\":\"M3.557 3.557h32.886v32.886H3.557z\",\"key\":2})])));\n}\n\nTumbleL.defaultProps = {\"width\":\"35\",\"height\":\"36\",\"viewBox\":\"0 0 35 36\"};\n\nmodule.exports = TumbleL;\n\nTumbleL.default = TumbleL;\n","var React = require('react');\n\nfunction TumbleM (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Desktop---Phase-1\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\"},React.createElement(\"g\",{\"id\":\"Ikoner/Tumble-dry-Medium-temp\",\"transform\":\"translate(-2.471 -1.842)\"},[React.createElement(\"circle\",{\"id\":\"Oval-11\",\"stroke\":\"#000\",\"strokeWidth\":\"2\",\"cx\":\"20\",\"cy\":\"20\",\"r\":\"14.5\",\"key\":0}),React.createElement(\"circle\",{\"id\":\"Oval-11\",\"fill\":\"#000\",\"fillRule\":\"evenodd\",\"cx\":\"16.5\",\"cy\":\"20\",\"r\":\"2\",\"key\":1}),React.createElement(\"circle\",{\"id\":\"Oval-11\",\"fill\":\"#000\",\"fillRule\":\"evenodd\",\"cx\":\"23.5\",\"cy\":\"20\",\"r\":\"2\",\"key\":2}),React.createElement(\"path\",{\"id\":\"Rectangle-21\",\"stroke\":\"#000\",\"strokeWidth\":\"2\",\"d\":\"M3.557 3.557h32.886v32.886H3.557z\",\"key\":3})])));\n}\n\nTumbleM.defaultProps = {\"width\":\"35\",\"height\":\"36\",\"viewBox\":\"0 0 35 36\"};\n\nmodule.exports = TumbleM;\n\nTumbleM.default = TumbleM;\n","var React = require('react');\n\nfunction TempWash (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Desktop---Phase-1\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\"},React.createElement(\"g\",{\"id\":\"Ikoner/Wash\",\"transform\":\"translate(.333 -3.175)\",\"stroke\":\"#000\",\"strokeWidth\":\"2\"},[React.createElement(\"path\",{\"id\":\"Rectangle-17\",\"d\":\"M1.006 3.56l4.105 33H35.9l4.105-33h0\",\"key\":0}),React.createElement(\"path\",{\"d\":\"M2.496 12.613c2.157 0 3.381-3.629 5.84-3.629s3.478 3.629 6.068 3.629c2.59 0 3.561-3.629 6.048-3.629s3.5 3.629 6.29 3.629c2.789 0 3.468-3.629 5.97-3.629 2.5 0 3.388 3.629 5.884 3.629\",\"id\":\"Line-6\",\"strokeLinecap\":\"square\",\"key\":1})])));\n}\n\nTempWash.defaultProps = {\"width\":\"42\",\"height\":\"35\",\"viewBox\":\"0 0 42 35\"};\n\nmodule.exports = TempWash;\n\nTempWash.default = TempWash;\n","import factory from './icon';\r\nimport Svg12x12 from './glyphs/Store_12x12.svg';\r\n\r\nexport const Store12x12 = factory(Svg12x12, 13, 12);","import React from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport { CircleFilled12x12, CircleUnfilled12x12 } from 'Shared/Icons/Circle';\r\nimport * as style from 'Shared/Style';\r\n\r\nconst circleNumbers = [1, 2, 3, 4, 5];\r\ntype PropType = {\r\n numberToFill: number;\r\n};\r\n\r\nconst Wrap = styled.div({\r\n display: 'flex', alignItems: 'center', gap: '8px'\r\n})\r\n\r\nconst CircleWrap = styled.span({\r\n display: 'flex', alignItems: 'center', height: '100%'\r\n})\r\n\r\nconst Filled = styled(CircleFilled12x12, {\r\n color: style.colors.brandColors.yellow\r\n})\r\n\r\nconst Unfilled = styled(CircleUnfilled12x12, {\r\n color: style.colors.brandColors.yellow\r\n})\r\n\r\nconst FillableCircles = (props: PropType) => {\r\n const numberToFill = props.numberToFill || 0;\r\n\r\n return (\r\n \r\n {circleNumbers.map(number => {\r\n return (\r\n \r\n {numberToFill >= number ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default FillableCircles;\r\n","import React from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport { TextBlockSmall, ResponsiveSize } from 'Shared/SharedComponents/atoms/Typography';\r\nimport * as style from 'Shared/Style';\r\nimport FillableCircles from 'Shared/SharedComponents/molecules/FillableCircles';\r\n\r\ntype ReviewsLabels = {\r\n reviews: string;\r\n description?: string;\r\n}\r\n\r\ntype ReviewsType = {\r\n rating: number;\r\n numberOfReviews: number;\r\n flexColumn?: boolean;\r\n onClick?: () => void;\r\n labels: ReviewsLabels;\r\n};\r\n\r\nconst Wrap = styled.div({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n gap: '24px'\r\n})\r\n\r\nconst Inner = styled.div({\r\n position: 'relative',\r\n display: 'flex',\r\n gap: '8px',\r\n alignItems: 'center',\r\n})\r\n\r\nconst InnerFlexColumn = styled(Inner, {\r\n flexDirection: 'column',\r\n alignItems: undefined,\r\n})\r\n\r\nfunction Reviews({ labels, rating, numberOfReviews, flexColumn = false, onClick = null }: ReviewsType) {\r\n const InnerElement = flexColumn ? InnerFlexColumn : Inner;\r\n\r\n return (\r\n \r\n {!!labels?.description && {labels.description}}\r\n \r\n \r\n {`${numberOfReviews} ${labels?.reviews}`}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default Reviews;\r\n","import React, { useState } from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport { Paragraph, ResponsiveLineHeight, ResponsiveSize } from 'Shared/SharedComponents/atoms/Typography';\r\nimport { ButtonHeight, ButtonTheme, SolidButton } from 'Shared/TextButtons';\r\nimport ProductActivity from '../Models/ProductActivity.type';\r\n\r\ntype ProductActivitiesType = {\r\n productActivities: ProductActivity[];\r\n};\r\n\r\nconst ButtonWrapper = styled.div({\r\n display: 'flex', \r\n flexWrap: 'wrap', \r\n gap: '8px',\r\n})\r\n\r\nconst Text = styled(Paragraph, {\r\n marginTop: '24px',\r\n})\r\n\r\nfunction ProductActivities({ productActivities }: ProductActivitiesType) {\r\n const [selectedActivityIndex, setSelectedActivityIndex] = useState(0);\r\n\r\n return (\r\n <>\r\n \r\n {productActivities.map((activity, index) => (\r\n {\r\n setSelectedActivityIndex(index);\r\n }}\r\n height={ButtonHeight.Small}\r\n selected={index === selectedActivityIndex}\r\n theme={ButtonTheme.WhiteToBlack}\r\n padding={{ x: 12 }}\r\n />\r\n ))}\r\n \r\n \r\n {productActivities[selectedActivityIndex]?.productText}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default ProductActivities;\r\n","import React, { useState } from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport { H2, Paragraph, TextBlockSmall, ResponsiveSize } from 'Shared/SharedComponents/atoms/Typography';\r\nimport Reviews from '../Reviews';\r\nimport { Favourite16x16, FavouriteFull16x16 } from 'Shared/Icons/Favorite';\r\nimport ProductTags from '../ProductTags';\r\nimport Viewport from 'Shared/Viewport';\r\nimport ProductActivity from '../Models/ProductActivity.type';\r\nimport ProductActivities from '../ProductActivities';\r\nimport Description from '../Models/Description.type';\r\nimport ManufacturingInformation from '../Models/ManufacturingInformation.type';\r\nimport Html from 'Shared/Partials/PropertyTypes/Html';\r\nimport FeedbackButton, { ButtonTheme } from 'Shared/Button/Feedback';\r\nimport { SolidButton } from 'Shared/TextButtons';\r\nimport { createGridClasses, createOffsetGridClassLarge } from 'Shared/grid';\r\nimport * as style from 'Shared/Style';\r\nimport A from 'Shared/Generic/A';\r\n\r\ntype ExtendedDataLabelsType = {\r\n descriptionLabel: string;\r\n reviewsLabel: string;\r\n reviewsLarge: string;\r\n reviewsSmall: string;\r\n reviewsNormal: string;\r\n reviewsSize: string;\r\n saveToWishlistLabel: string;\r\n compareProductLabel: string;\r\n readMoreLabel: string;\r\n readLessLabel: string;\r\n manufacturingCountryLabel: string;\r\n manufacturingFactoryLabel: string;\r\n itemNumber: string;\r\n};\r\n\r\ntype ExtendedDataType = {\r\n labels: ExtendedDataLabelsType;\r\n rating: number;\r\n numberOfReviews: number;\r\n productTitle: string;\r\n productTags: string[];\r\n productDescription: Description;\r\n manufacturingInformation: ManufacturingInformation;\r\n itemNumber: string;\r\n onSaveToWishlist: (e: any) => Promise;\r\n onCompareProduct: () => Promise;\r\n productActivities: ProductActivity[];\r\n isFavorited?: boolean;\r\n loggedIn?: boolean;\r\n scrollToRef?: React.MutableRefObject;\r\n};\r\n\r\nconst DescriptionWrap = styled.div({\r\n overflow: 'hidden',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n transition: {\r\n property: 'max-height',\r\n duration: 300,\r\n },\r\n})\r\n\r\nconst DescriptionBodyWrap = styled(Html, {\r\n paddingTop: '16px',\r\n transition: {\r\n property: 'max-height',\r\n duration: 300,\r\n },\r\n})\r\n\r\nconst DescriptionBody = styled.p({\r\n fontSize: '16px',\r\n fontWeight: 450,\r\n lineHeight: '110%',\r\n});\r\n\r\nconst ManufacturingWrap = styled.div({\r\n paddingTop: '16px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n});\r\nconst ManufacturingData = styled.div({\r\n display: 'flex',\r\n gap: '8px'\r\n});\r\n\r\nconst ItemNumberWrap = styled.div({\r\n paddingTop: '16px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n});\r\nconst ItemNumberData = styled.div({\r\n display: 'flex',\r\n gap: '8px'\r\n});\r\n\r\nconst Heading = styled(H2, {\r\n margin: { top: '16px', bottom: '24px' },\r\n});\r\n\r\nconst ReadMore = styled.span({\r\n display: 'block',\r\n fontStyle: 'normal',\r\n fontWeight: 500,\r\n fontSize: '14px',\r\n letterSpacing: '0.01em',\r\n margin: { xy: '0px' },\r\n color: style.colors.monochrome.a11ygrey,\r\n cursor: 'pointer',\r\n lineHeight: '100%',\r\n textTransform: 'uppercase',\r\n marginTop: '16px',\r\n});\r\n\r\nconst FavStyled = styled(Favourite16x16, {\r\n marginLeft: '8px'\r\n})\r\n\r\nconst FavFullStyled = styled(FavouriteFull16x16, {\r\n marginLeft: '8px'\r\n})\r\n\r\nconst ButtonWrap = styled.div({\r\n display: 'flex',\r\n gap: '8px',\r\n margin: { top: '40px' },\r\n flexDirection: 'column',\r\n ['@media ' + style.mediaMinLarge]: {\r\n flexDirection: 'row',\r\n },\r\n})\r\n\r\nconst ProductActivitiesWrap = styled.div({\r\n ['@media ' + style.mediaUpToLarge]: {\r\n marginTop: '40px',\r\n },\r\n})\r\n\r\nconst ProductDescriptionIntro = styled(Paragraph, {\r\n marginTop: '24px'\r\n})\r\n\r\nfunction ExtendedData(props: ExtendedDataType) {\r\n const FavoIcon = props.isFavorited ? FavFullStyled : FavStyled;\r\n const [descriptionExpanded, setDescriptionExpanded] = useState(false);\r\n return (\r\n \r\n {(isCompact: boolean) => (\r\n
\r\n
\r\n {!isCompact && }\r\n {isCompact && {props.labels.descriptionLabel}}\r\n {props.productTitle}\r\n
\r\n
\r\n {props.productTags && }\r\n {props.productDescription && (\r\n <>\r\n {props.productDescription.intro && {props.productDescription.intro}}\r\n {(props.productDescription.body || props.manufacturingInformation) && <>\r\n \r\n {props.productDescription.body && }\r\n {props.itemNumber && \r\n {props.labels.itemNumber}:{props.itemNumber}\r\n \r\n }\r\n {props.manufacturingInformation && \r\n {props.labels.manufacturingCountryLabel}:{props.manufacturingInformation.country}\r\n {props.labels.manufacturingFactoryLabel}:{props.manufacturingInformation.factory}\r\n {props.manufacturingInformation.infoUrl && {props.labels.readMoreLabel}}\r\n \r\n }\r\n \r\n { setDescriptionExpanded(!descriptionExpanded); }}>\r\n {descriptionExpanded ? props.labels.readLessLabel : props.labels.readMoreLabel}\r\n \r\n }\r\n \r\n )}\r\n
\r\n {props.productActivities && props.productActivities.length > 0 &&\r\n \r\n \r\n \r\n }\r\n \r\n {props.labels.saveToWishlistLabel && props.loggedIn && (\r\n }\r\n theme={ButtonTheme.WhiteToBlack}\r\n successText={props.labels.saveToWishlistLabel}\r\n pendingText={props.labels.saveToWishlistLabel}\r\n >\r\n {props.labels.saveToWishlistLabel}\r\n \r\n )}\r\n {props.labels.saveToWishlistLabel && !props.loggedIn && (\r\n }\r\n theme={ButtonTheme.WhiteToBlack}\r\n >\r\n {props.labels.saveToWishlistLabel}\r\n \r\n )}\r\n\r\n {/* Disabled for now. {props.labels.compareProductLabel && (\r\n }\r\n theme={ButtonTheme.WhiteToBlack}\r\n />\r\n )} */}\r\n \r\n
\r\n )}\r\n
\r\n );\r\n}\r\n\r\nexport default ExtendedData;\r\n","import React from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport PreviousPurchaseViewModel from './PreviousPurchaseViewModel.type';\r\nimport Image, { Preset as ImagePreset, Ratio as ImageRatio } from 'Shared/Image/Ratio';\r\nimport * as style from 'Shared/Style';\r\n\r\ntype PropType = {\r\n products: PreviousPurchaseViewModel[];\r\n isCompact: boolean;\r\n label: string;\r\n topMargin?: number;\r\n};\r\n\r\nconst Header = styled.span({\r\n display: 'block',\r\n fontSize: 14,\r\n fontWeight: 500,\r\n lineHeight: '100%',\r\n marginBottom: 16,\r\n textTransform: 'uppercase',\r\n});\r\n\r\nconst BaseLine = styled.span({\r\n display: 'block',\r\n fontSize: 12,\r\n fontWeight: 500,\r\n textAlign: 'center'\r\n});\r\n\r\nconst ProductsWrap = styled.div({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: '8px'\r\n})\r\n\r\nconst Product = styled.div({\r\n display: 'inline-block',\r\n borderRadius: 8,\r\n padding: {xy: '8px' },\r\n width: '112px',\r\n backgroundColor: style.colors.monochrome.extraLightGrey,\r\n})\r\n\r\nconst ProductImageWrap = styled.div({\r\n textAlign: 'center',\r\n borderRadius: 8,\r\n})\r\n\r\nconst ProductName = styled(BaseLine, {\r\n marginTop: 8,\r\n marginBottom: 4,\r\n textTransform: 'uppercase',\r\n lineHeight: '100%',\r\n})\r\n\r\nconst ProductSize = styled(BaseLine, {\r\n lineHeight: '120%',\r\n})\r\n\r\nexport const PreviousPurchaseList = (props: PropType) => {\r\n const { products, isCompact, label, topMargin } = props;\r\n\r\n if(!products) {\r\n return <>;\r\n }\r\n\r\n return (\r\n \r\n
{label}
\r\n \r\n {products?.map((product, index) => (\r\n \r\n \r\n \r\n \r\n
\r\n {product.displayName}\r\n \r\n {product.sizeLabel}\r\n
\r\n
\r\n ))}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default PreviousPurchaseList;","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { ButtonHeight, ButtonTheme, NonInteractiveSolidButton, SolidButton } from 'Shared/TextButtons';\r\nimport SizeViewModel from './SizeViewModel.type';\r\n\r\nconst SizeTagsContainer = styled(({ children }: { children: React.ReactNode } & StyledProps) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\ntype SelectableSizesType = {\r\n sizes: SizeViewModel[];\r\n selectedSizeCode: string;\r\n setSelectedSize: (size: SizeViewModel) => void;\r\n};\r\n\r\nexport const SelectableSizes = function({ sizes, selectedSizeCode, setSelectedSize }: SelectableSizesType) {\r\n \r\n return (\r\n \r\n {sizes.map((size, index) => {\r\n const enabled = size.centralStockAvailability > 0;\r\n const theme = !enabled ? ButtonTheme.TransparentDisabled : ButtonTheme.WhiteToBlack;\r\n return {\r\n setSelectedSize(size);\r\n }}\r\n selected={size.code === selectedSizeCode}\r\n height={ButtonHeight.Small}\r\n disabled={!enabled}\r\n strikeThrough={!enabled}\r\n theme={theme}\r\n padding={{ x: 12 }}\r\n fontSize={12}\r\n />\r\n })}\r\n \r\n );\r\n};\r\n\r\ntype AvailableSizesType = {\r\n availableSizes: { [item: string]: boolean };\r\n};\r\n\r\nexport const AvailableSizes = function({ availableSizes }: AvailableSizesType) {\r\n return (\r\n \r\n {Object.entries(availableSizes).map((entry, index) => {\r\n const [size, isAvailable] = entry;\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport { H3, Paragraph, ResponsiveSize, TextBlockSmall } from 'Shared/SharedComponents/atoms/Typography';\r\nimport FillableCircles from 'Shared/SharedComponents/molecules/FillableCircles';\r\nimport ReviewViewModelLabels from 'Product/VariationViewModel+ReviewViewModelLabels.type';\r\nimport { Plus12x12 } from 'Shared/Icons/Plus';\r\nimport { Minus12x12 } from 'Shared/Icons/Minus';\r\nimport * as style from 'Shared/Style';\r\n\r\ntype QuestionAnswerOption = {\r\n value: string;\r\n selected?: boolean;\r\n};\r\n\r\ntype QuestionAnswer = {\r\n name: string;\r\n options: QuestionAnswerOption[];\r\n type: string;\r\n};\r\n\r\nexport type CustomerReview = {\r\n type: string;\r\n title: string;\r\n source: string;\r\n domain: string;\r\n product: string;\r\n author: string;\r\n date: string;\r\n country: string;\r\n lang: string;\r\n score: number;\r\n score_max: number;\r\n extract: string;\r\n pros: string;\r\n cons: string;\r\n votes_up: number;\r\n votes_down: number;\r\n feedback_url: string;\r\n logo: string;\r\n logo_width: number;\r\n logo_height: number;\r\n icon: string;\r\n icon_width: number;\r\n icon_height: number;\r\n link: string;\r\n question_answers: QuestionAnswer[];\r\n};\r\n\r\ntype PropType = {\r\n review: CustomerReview;\r\n reviewLabels: ReviewViewModelLabels;\r\n isCompact: boolean;\r\n};\r\n\r\nconst Wrap = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'stretch',\r\n gap: '16px',\r\n borderRadius: '8px',\r\n backgroundColor: style.colors.monochrome.extraLightGrey,\r\n padding: { x: '12px', top: '12px', bottom: '24px' },\r\n ['@media ' + style.mediaMinLarge]: {\r\n padding: { x: '16px', top: '16px', bottom: '24px' },\r\n },\r\n})\r\n\r\n\r\nconst Author = styled.div({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n})\r\n\r\nconst Answer = styled.div({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n gap: '4px'\r\n})\r\n\r\nconst P = styled(Paragraph, {\r\n display: 'flex', flexDirection: 'row', alignItems: 'center', gap: '8px'\r\n})\r\n\r\nconst Minus = styled(Minus12x12, {\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: 'inherit',\r\n})\r\n\r\nconst Plus = styled(Plus12x12, {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: 'inherit',\r\n})\r\n\r\nconst ReviewTime = styled(TextBlockSmall, {\r\n color: style.colors.monochrome.a11ygrey,\r\n textTransform: 'uppercase',\r\n});\r\n\r\nconst TopContent = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '4px'\r\n})\r\n\r\nfunction ReviewCard({ review, reviewLabels, isCompact }: PropType) {\r\n\r\n function sizeFitLabel(fitOption: string) {\r\n switch (fitOption) {\r\n case 'small':\r\n return reviewLabels.fitSmall;\r\n case 'normal':\r\n return reviewLabels.fitNormal;\r\n case 'large':\r\n return reviewLabels.fitBig;\r\n default:\r\n return reviewLabels.fitNormal;\r\n }\r\n }\r\n\r\n function dateDiff(inputDate: string) {\r\n if(inputDate === null || inputDate === undefined) {\r\n return '';\r\n }\r\n \r\n const _MS_PER_DAY = 1000 * 60 * 60 * 24;\r\n // Discard the time and time-zone information.\r\n let b = new Date();\r\n let a = new Date(inputDate);\r\n const utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());\r\n const utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());\r\n let result = Math.floor((utc2 - utc1) / _MS_PER_DAY);\r\n \r\n if(result > 31) \r\n {\r\n result = Math.floor(result / 31);\r\n \r\n if(result > 12) {\r\n const year = Math.floor(result / 12);\r\n return `${year} ${year > 1 ? reviewLabels.years : reviewLabels.year} ${reviewLabels.ago}`;\r\n }\r\n if(result === 0 ) {\r\n result = 1;\r\n }\r\n \r\n return `${result} ${result > 1 ? reviewLabels.months : reviewLabels.month} ${reviewLabels.ago}`;\r\n }\r\n \r\n return `${result} ${result > 1 ? reviewLabels.days : reviewLabels.day} ${reviewLabels.ago}`;\r\n }\r\n \r\n return (\r\n \r\n \r\n \r\n

{review.author}

\r\n \r\n
\r\n {dateDiff(review.date)}\r\n
\r\n
\r\n {review.question_answers.map((questionAnswer, index) => {\r\n if (questionAnswer.name === 'fit3' && questionAnswer.type === 'select') {\r\n const selectedOption = questionAnswer.options.filter((option) => option.selected)[0];\r\n return (\r\n \r\n {reviewLabels.size}:\r\n {sizeFitLabel(selectedOption.value)}\r\n \r\n );\r\n }\r\n })}\r\n
\r\n
\r\n {review.pros && (\r\n

\r\n \r\n {review.pros}\r\n

\r\n )}\r\n {review.cons && (\r\n

\r\n \r\n {review.cons}\r\n

\r\n )}\r\n
\r\n {review.extract}\r\n
\r\n );\r\n}\r\n\r\nexport default ReviewCard;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport ReviewViewModelLabels from 'Product/VariationViewModel+ReviewViewModelLabels.type';\r\nimport ReviewCard, { CustomerReview } from './ReviewCard';\r\nimport { ResponsiveSize, TextLabel, Text, TextBlockSmall } from 'Shared/SharedComponents/atoms/Typography';\r\nimport Reviews from 'Product/Reviews';\r\nimport connect from 'Shared/connect';\r\nimport { createGridClasses, createOffsetGridClassLarge } from 'Shared/grid';\r\nimport * as style from 'Shared/Style';\r\n\r\nexport type ReviewLabelsPropType = ReviewViewModelLabels & { reviews: string };\r\n\r\ntype PropType = {\r\n itemNumber: string;\r\n reviewLabels: ReviewLabelsPropType;\r\n testFreaksClientId: string;\r\n isCompact: boolean;\r\n recalculateHeight: () => void;\r\n};\r\n\r\ntype ReviewAnswerOption = {\r\n count: number;\r\n value: string;\r\n};\r\n\r\ntype ReviewAnswers = {\r\n count: number;\r\n options: ReviewAnswerOption[];\r\n};\r\n\r\ntype ReviewsSummary = {\r\n score: number;\r\n count: number;\r\n answers: ReviewAnswers[];\r\n};\r\n\r\nconst SummaryWrap = styled.div({\r\n alignItems: 'start'\r\n})\r\n\r\nconst Data = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '16px',\r\n\r\n ['@media ' + style.mediaUpToLarge]: {\r\n marginBottom: '40px',\r\n },\r\n})\r\n\r\nconst ReviewsWrap = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '8px;',\r\n})\r\n\r\nconst ShowMore = styled.span({\r\n marginTop: '16px',\r\n cursor: 'pointer',\r\n color: style.colors.monochrome.a11ygrey,\r\n ['@media ' + style.mediaMinLarge]: {\r\n ':hover': {\r\n color: style.colors.monochrome.black,\r\n },\r\n },\r\n})\r\n\r\nconst Percentage = styled.span({\r\n lineHeight: 1,\r\n textTransform: 'uppercase',\r\n color: style.colors.monochrome.a11ygrey,\r\n fontWeight: 500,\r\n fontSize: '12px',\r\n whiteSpace: 'nowrap',\r\n});\r\n\r\nconst Bar = styled.div({\r\n height: '12px',\r\n backgroundColor: style.colors.brandColors.yellow,\r\n borderRadius: '25px',\r\n});\r\n\r\nconst TopContent = styled.div({\r\n display: 'flex',\r\n gap: '16px',\r\n alignItems: 'center',\r\n})\r\n\r\nconst BottomContent = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '16px',\r\n width: '80%',\r\n ['@media ' + style.mediaMinLarge]: {\r\n width: '50%',\r\n },\r\n})\r\n\r\nconst Container = styled.div({\r\n display: 'table',\r\n borderCollapse: 'collapse',\r\n borderSpacing: '0px',\r\n});\r\n\r\nconst Row = styled.div({\r\n display: 'table-row',\r\n});\r\n\r\nconst Column = styled.div({\r\n display: 'table-cell',\r\n paddingRight: '8px',\r\n});\r\n\r\nconst Column2 = styled(Column, {\r\n display: 'table-cell',\r\n width: '100%',\r\n});\r\n\r\nfunction ReviewsContent({ itemNumber, reviewLabels, testFreaksClientId, isCompact, recalculateHeight }: PropType) {\r\n const [reviewsSummary, setReviewsSummary] = useState(null);\r\n const [customerReviews, setCustomerReviews] = useState([]);\r\n const [numberOfReviewsShown, setNumberOfReviewsShown] = useState(2);\r\n const [nextPageUrl, setNextPageUrl] = useState(null); \r\n \r\n function fetchReviews(reviewsUrl: string) {\r\n fetch(reviewsUrl)\r\n .then((customerReviewsResponse) => customerReviewsResponse.json())\r\n .then((customerReviewsJson) => {\r\n if ('reviews' in customerReviewsJson) {\r\n setCustomerReviews((reviews) => reviews.concat(customerReviewsJson.reviews));\r\n }\r\n if ('next_page_url' in customerReviewsJson) {\r\n setNextPageUrl(customerReviewsJson.next_page_url);\r\n } else {\r\n setNextPageUrl(null);\r\n }\r\n });\r\n }\r\n\r\n function fetchReviewData() {\r\n if (testFreaksClientId) {\r\n fetch(\r\n `https://js.testfreaks.com/onpage/${testFreaksClientId}/reviews.json?key=${itemNumber}&url_key=${itemNumber}`,\r\n )\r\n .then((reviewsResponse) => reviewsResponse.json())\r\n .then((reviewsJson) => {\r\n if ('your_avg_score' in reviewsJson && 'your_review_count' in reviewsJson) {\r\n setReviewsSummary({ answers: reviewsJson.your_review_answers, score: reviewsJson.your_avg_score, count: reviewsJson.your_review_count });\r\n }\r\n if ('your_review_url' in reviewsJson) {\r\n fetchReviews(reviewsJson.your_review_url);\r\n }\r\n });\r\n }\r\n }\r\n\r\n function gotReviewAnswers() {\r\n if(reviewsSummary && reviewsSummary.answers) {\r\n const answer = reviewsSummary.answers[0];\r\n if(answer && answer.options) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n function getOption(type: string) {\r\n if(reviewsSummary && reviewsSummary.answers) {\r\n const answer = reviewsSummary.answers[0];\r\n const totalCount = answer.count;\r\n if(answer && answer.options) {\r\n const count = answer.options.find(x => x.value === type).count;\r\n return { count: count, percent: (count / totalCount * 100) };\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function getOptionLevel(type: string) {\r\n const option = getOption(type);\r\n if(option) {\r\n return option.percent;\r\n }\r\n return 0;\r\n }\r\n\r\n function getOptionCount(type: string) {\r\n const option = getOption(type);\r\n if(option) {\r\n return option.count;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n useEffect(() => {\r\n fetchReviewData();\r\n }, [itemNumber]);\r\n\r\n useEffect(() => {\r\n recalculateHeight();\r\n }, [customerReviews]);\r\n\r\n return (\r\n reviewsSummary && (\r\n \r\n \r\n \r\n {reviewsSummary.score}\r\n
\r\n \r\n
\r\n
\r\n {gotReviewAnswers() && \r\n {reviewLabels.fit}\r\n \r\n \r\n \r\n {reviewLabels.fitBig}{` (${getOptionCount('large')})`}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {reviewLabels.fitNormal}{` (${getOptionCount('normal')})`}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {reviewLabels.fitSmall}{` (${getOptionCount('small')})`}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n
\r\n \r\n {customerReviews\r\n .filter((_review, index) => index < numberOfReviewsShown)\r\n .map((review, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n {(customerReviews.length > numberOfReviewsShown || nextPageUrl) && (\r\n {\r\n if (customerReviews.length <= numberOfReviewsShown) {\r\n fetchReviews(nextPageUrl);\r\n } else {\r\n recalculateHeight();\r\n }\r\n setNumberOfReviewsShown((currentNumber) => currentNumber + 2);\r\n }}\r\n >\r\n {reviewLabels.viewMore}\r\n \r\n )}\r\n \r\n
\r\n )\r\n );\r\n}\r\n\r\nexport default connect((state) => ({\r\n testFreaksClientId: state.appShellData.apiKeys.testFreaksClientId,\r\n}))(ReviewsContent);\r\n","import factory from './icon';\r\nimport svgDripdry from './Glyphs/washcare/Dripdry.svg';\r\nimport svgDryclpetr from './Glyphs/washcare/Dryclpetr.svg';\r\nimport svgDryflat from './Glyphs/washcare/Dryflat.svg';\r\nimport svgHandwash from './Glyphs/washcare/Handwash.svg';\r\nimport svgIronH from './Glyphs/washcare/IronH.svg';\r\nimport svgIronL from './Glyphs/washcare/IronL.svg';\r\nimport svgIronM from './Glyphs/washcare/IronM.svg';\r\nimport svgLinedry from './Glyphs/washcare/Linedry.svg';\r\nimport svgNobleach from './Glyphs/washcare/Nobleach.svg';\r\nimport svgNodrycl from './Glyphs/washcare/Nodrycl.svg';\r\nimport svgNoIron from './Glyphs/washcare/NoIron.svg';\r\nimport svgNotumble from './Glyphs/washcare/Notumble.svg';\r\nimport svgNowash from './Glyphs/washcare/Nowash.svg';\r\nimport svgTumbleH from './Glyphs/washcare/TumbleH.svg';\r\nimport svgTumbleL from './Glyphs/washcare/TumbleL.svg';\r\nimport svgTumbleM from './Glyphs/washcare/TumbleM.svg';\r\nimport svgTempWash from './Glyphs/washcare/Temp-Wash.svg';\r\n\r\nexport const IconDripdry = factory(svgDripdry, 24, 24);\r\nexport const IconDryclpetr = factory(svgDryclpetr, 24, 24);\r\nexport const IconDryflat = factory(svgDryflat, 24, 24);\r\nexport const IconHandwash = factory(svgHandwash, 24, 24);\r\nexport const IconIronH = factory(svgIronH, 24, 24);\r\nexport const IconIronL = factory(svgIronL, 24, 24);\r\nexport const IconIronM = factory(svgIronM, 24, 24);\r\nexport const IconLinedry = factory(svgLinedry, 24, 24);\r\nexport const IconNobleach = factory(svgNobleach, 24, 24);\r\nexport const IconNodrycl = factory(svgNodrycl, 24, 24);\r\nexport const IconNoIron = factory(svgNoIron, 24, 24);\r\nexport const IconNotumble = factory(svgNotumble, 24, 24);\r\nexport const IconNowash = factory(svgNowash, 24, 24);\r\nexport const IconTumbleH = factory(svgTumbleH, 24, 24);\r\nexport const IconTumbleL = factory(svgTumbleL, 24, 24);\r\nexport const IconTumbleM = factory(svgTumbleM, 24, 24);\r\nexport const IconTempWash = factory(svgTempWash, 24, 24);\r\n","import React from 'react';\r\nimport * as WashCareIcons from 'Shared/Icons/WashCareIcons';\r\n\r\nexport function WashIcon({ name }: { name: string }) {\r\n switch (name) {\r\n case '30Cdelic':\r\n case '30Chand':\r\n case '30Cnorm':\r\n case '30Cperm':\r\n case '30Cwool':\r\n case '40Cdelic':\r\n case '40Chand':\r\n case '40Cnorm':\r\n case '40Cperm':\r\n case '60Cnorm':\r\n case '60Cperm':\r\n case '95Cnorm':\r\n case '95Cperm':\r\n return ;\r\n case 'Dripdry':\r\n return ;\r\n case 'Dryclpetr':\r\n return ;\r\n case 'Dryflat':\r\n return ;\r\n case 'Handwash':\r\n return ;\r\n case 'IronH':\r\n return ;\r\n case 'IronL':\r\n return ;\r\n case 'IronM':\r\n return ;\r\n case 'Linedry':\r\n return ;\r\n case 'Nobleach':\r\n return ;\r\n case 'Nodrycl':\r\n return ;\r\n case 'NoDryclean':\r\n return ;\r\n case 'NoIron':\r\n return ;\r\n case 'Notumble':\r\n return ;\r\n case 'Nowash':\r\n return ;\r\n case 'TumbleH':\r\n return ;\r\n case 'TumbleL':\r\n return ;\r\n case 'TumbleM':\r\n return ;\r\n default:\r\n return null;\r\n }\r\n}","import React from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport {\r\n H3,\r\n Paragraph,\r\n ResponsiveSize,\r\n ResponsiveLineHeight,\r\n TextLabel,\r\n} from 'Shared/SharedComponents/atoms/Typography';\r\nimport Composition from 'Product/Models/Composition.type';\r\nimport CareInstructions from 'Product/Models/CareInstructions.type';\r\nimport { WashIcon } from 'Product/WashAndCare';\r\nimport { ButtonHeight, ButtonTheme, LinkButton } from 'Shared/TextButtons';\r\nimport { createGridClasses, createOffsetGridClassLarge, fillGridBins } from 'Shared/grid';\r\nimport * as style from 'Shared/Style';\r\n\r\ntype PropType = {\r\n compositionLabel: string;\r\n compositions: Composition[];\r\n careLabel: string;\r\n careInstructions: CareInstructions;\r\n isCompact: boolean;\r\n};\r\n\r\nconst PartHeading = styled(TextLabel, {\r\n marginBottom: '16px',\r\n});\r\n\r\nconst CompositionWrap = styled.div({\r\n ['@media ' + style.mediaMinLarge]: {\r\n borderTop: {\r\n color: style.colors.monochrome.black,\r\n style: 'solid',\r\n width: '2px',\r\n },\r\n paddingTop: '16px',\r\n },\r\n})\r\n\r\nconst CompositionHeadingWrap = styled.div({\r\n marginBottom: '24px'\r\n})\r\n\r\nconst CompositionItemWrap = styled.div({\r\n marginBottom: '24px'\r\n})\r\n\r\nconst CareInstructionsWrap = styled.div({\r\n ['@media ' + style.mediaMinLarge]: {\r\n borderTop: {\r\n color: style.colors.monochrome.black,\r\n style: 'solid',\r\n width: '2px',\r\n },\r\n paddingTop: '16px',\r\n },\r\n})\r\n\r\nconst CareInstructionsHeadingWrap = styled.div({\r\n marginBottom: '24px'\r\n})\r\n\r\nconst CareInstructionsItemWrap = styled.div({\r\n marginBottom: '24px'\r\n})\r\n\r\nconst CareInstructionWashItemWrap = styled.div({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n gap: '8px',\r\n marginBottom: '8px',\r\n})\r\n\r\nconst CareInstructionWashItemText = styled(Paragraph, {\r\n whiteSpace: 'nowrap'\r\n})\r\n\r\nconst CareInstructionsItem = styled(Paragraph, {\r\n marginBottom: '16px'\r\n})\r\n\r\nfunction MaterialsContent({ compositionLabel, compositions, careLabel, careInstructions, isCompact }: PropType) {\r\n const compositionBins = compositions.length > 2 ? 3 : 2;\r\n return (\r\n
\r\n {compositions && compositions.length > 0 && (\r\n \r\n \r\n

{compositionLabel}

\r\n
\r\n {compositions?.map((composition, index) => {\r\n return (\r\n \r\n {composition.name}\r\n {composition.materials?.map((material, index) => {\r\n return (\r\n {`${material.percentage}% ${material.name}`}\r\n );\r\n })}\r\n \r\n );\r\n })}\r\n
\r\n )}\r\n \r\n \r\n

{careLabel}

\r\n
\r\n {careInstructions.washItems && (\r\n \r\n {careInstructions.labels.wash}\r\n {careInstructions.washItems?.map((careInstruction, index) => {\r\n return (\r\n \r\n \r\n \r\n {careInstruction.text}\r\n \r\n \r\n );\r\n })}\r\n \r\n )}\r\n \r\n {careInstructions.textHeading}\r\n \r\n {careInstructions.textIntro}\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default MaterialsContent;\r\n","import React from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport { H3, Paragraph, ResponsiveSize, ArticleTag, TextLabel } from 'Shared/SharedComponents/atoms/Typography';\r\nimport SustainabilityViewModel from 'Product/SustainabilityViewModel.type';\r\nimport Html from 'Shared/Partials/PropertyTypes/Html';\r\nimport { AspectImageVideoBackground } from 'Shared/SharedComponents/molecules/ImageVideoBackground';\r\nimport { createGridClasses } from 'Shared/grid';\r\nimport * as style from 'Shared/Style';\r\nimport SwiperList from 'Shared/SwiperList';\r\nimport Link from 'Shared/Link';\r\nimport { PictureImage, Preset } from 'Shared/Image';\r\n\r\ntype PropType = {\r\n sustainability: SustainabilityViewModel;\r\n isCompact: boolean;\r\n};\r\n\r\nconst Intro = styled(Paragraph, {\r\n marginBottom: '16px'\r\n})\r\n\r\nconst HtmlBody = styled.div({\r\n});\r\n\r\nconst SwiperWrap = styled.div({\r\n marginTop: '40px',\r\n ['@media ' + style.mediaMinLarge]: {\r\n marginTop: '80px',\r\n },\r\n})\r\n\r\nconst Heading = styled(H3, {\r\n marginTop: '12px'\r\n})\r\n\r\nconst MainTag = styled(ArticleTag, {\r\n marginTop: '16px'\r\n})\r\n\r\nconst Tag = styled(ArticleTag, {\r\n marginTop: '12px'\r\n})\r\n\r\nconst ItemImage = styled(PictureImage, {\r\n position: 'absolute',\r\n width: '100%',\r\n height: '100%',\r\n objectFit: 'cover',\r\n objectPosition: 'center center',\r\n borderRadius: '8px'\r\n})\r\n\r\nexport const ItemLink = styled(Link, {\r\n color: 'inherit',\r\n textDecoration: 'none',\r\n});\r\n\r\n\r\nfunction SustainabilityContent({ sustainability, isCompact }: PropType) {\r\n return (\r\n
\r\n
\r\n
\r\n \r\n {sustainability?.mainIntro}\r\n \r\n {sustainability?.mainBody && }\r\n
\r\n
\r\n \r\n \r\n {sustainability?.contentItems?.map((contentItem, index) => (\r\n
\r\n \r\n \r\n {contentItem.image?.url && (\r\n \r\n )}\r\n \r\n {contentItem.tag && {contentItem.tag}}\r\n {contentItem.heading}\r\n\r\n {contentItem.tags?.length > 0 && (\r\n \r\n {contentItem.tags?.reduce((tagString, tag) => {\r\n return `${tagString}, ${tag}`;\r\n })}\r\n \r\n )}\r\n \r\n
\r\n ))}\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default SustainabilityContent;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport { H2, H3, ResponsiveSize } from 'Shared/SharedComponents/atoms/Typography';\r\nimport { Plus16x16 } from 'Shared/Icons/Plus';\r\nimport SustainabilityViewModel from 'Product/SustainabilityViewModel.type';\r\nimport Composition from 'Product/Models/Composition.type';\r\nimport DeliveryAndReturnsViewModel from 'Product/DeliveryAndReturnsViewModel.type';\r\nimport Html from 'Shared/Partials/PropertyTypes/Html';\r\nimport ReviewsContent, { ReviewLabelsPropType } from './ReviewsContent';\r\nimport MaterialsContent from './MaterialsContent';\r\nimport SustainabilityContent from './SustainabilityContent';\r\nimport CareInstructions from 'Product/Models/CareInstructions.type';\r\nimport { createGridClasses, createOffsetGridClassLarge } from 'Shared/grid';\r\nimport * as style from 'Shared/Style';\r\n\r\ntype ConnectedPropType = {\r\n itemNumber: string;\r\n materialsAndCareLabel: string;\r\n compositionLabel: string;\r\n compositions: Composition[];\r\n careLabel: string;\r\n careInstructions: CareInstructions;\r\n sustainabilityLabel: string;\r\n sustainability: SustainabilityViewModel;\r\n reviewsLabel: string;\r\n reviewLabels: ReviewLabelsPropType;\r\n deliveryAndReturnsLabel: string;\r\n deliveryAndReturns: DeliveryAndReturnsViewModel;\r\n isCompact: boolean;\r\n reviewCount: number;\r\n expandedSection?: string;\r\n scrollToSectionRef?: React.Ref;\r\n resetExpandedSection?: (newValue: string) => void;\r\n};\r\n\r\ntype PropType = ConnectedPropType;\r\n\r\nconst Divider = styled.div({\r\n height: 0,\r\n width: '100%',\r\n marginBottom: '16px',\r\n border: { y: { width: '1px', style: 'solid', color: style.colors.monochrome.black } },\r\n})\r\n\r\nconst DividerLine = () => (\r\n \r\n);\r\n\r\nconst Wrap = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n})\r\n\r\nconst DeliveryHeadingWrap = styled.div({\r\n marginBottom: '24px',\r\n ['@media ' + style.mediaMinLarge]: {\r\n paddingRight: '14px',\r\n },\r\n})\r\n\r\nconst Plus16 = styled(Plus16x16, {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: 'inherit',\r\n transitionDuration: '0.2s',\r\n})\r\n\r\nconst SectionInner = styled.div({\r\n cursor: 'pointer',\r\n padding: { bottom: '16px' },\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n})\r\n\r\nconst SectionContent = styled.div({\r\n padding: {\r\n y: '24px',\r\n },\r\n\r\n ['@media ' + style.mediaMinLarge]: {\r\n padding: {\r\n y: '64px',\r\n },\r\n },\r\n})\r\n\r\nfunction ProductAccordion({\r\n itemNumber,\r\n materialsAndCareLabel,\r\n compositionLabel,\r\n compositions,\r\n careLabel,\r\n careInstructions,\r\n sustainabilityLabel,\r\n sustainability,\r\n reviewsLabel,\r\n reviewLabels,\r\n reviewCount,\r\n deliveryAndReturnsLabel,\r\n deliveryAndReturns,\r\n expandedSection,\r\n scrollToSectionRef,\r\n resetExpandedSection,\r\n isCompact,\r\n}: PropType) {\r\n\r\n const [recalculateReviewsHeight, setRecalculateReviewsHeight] = useState(0);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {sustainability && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {reviewCount > 0 && (\r\n <>\r\n resetExpandedSection('')} key=\"reviews\" recalculateHeightState={recalculateReviewsHeight} wrapperRef={scrollToSectionRef} expanded={expandedSection && expandedSection === 'reviews'} label={reviewsLabel} isCompact={isCompact}>\r\n setRecalculateReviewsHeight(recalculateReviewsHeight + 1)} itemNumber={itemNumber} reviewLabels={reviewLabels} isCompact={isCompact} />\r\n \r\n \r\n \r\n )}\r\n\r\n \r\n
\r\n \r\n

{deliveryAndReturns.heading}

\r\n
\r\n
\r\n {deliveryAndReturns.body && }\r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\ntype SectionPropType = {\r\n label: string;\r\n children: React.ReactNode;\r\n isCompact: boolean;\r\n expanded?: boolean;\r\n wrapperRef?: React.Ref;\r\n autoHeight?: boolean;\r\n sectionId?: string;\r\n recalculateHeightState?: number;\r\n resetExpandedSection?: () => void;\r\n};\r\n\r\nfunction AccordionSection({ label, children, isCompact, expanded = false, wrapperRef, sectionId, resetExpandedSection }: SectionPropType) {\r\n const [contentShown, setContentShown] = useState(expanded);\r\n const [currentHeight, setHeight] = useState(0);\r\n const [shouldTranslateHeight] = useState(true);\r\n\r\n const updateOffsetHeight = (ref: HTMLElement) => {\r\n if (ref) {\r\n requestAnimationFrame(() => {\r\n const height = ref.offsetHeight;\r\n if (contentShown && Math.abs(currentHeight - height) > 2) {\r\n setHeight(height);\r\n }\r\n });\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (sectionId === 'reviews') {\r\n if (expanded) {\r\n setContentShown(true);\r\n resetExpandedSection();\r\n }\r\n }\r\n }, [expanded]);\r\n\r\n return (\r\n
\r\n { setContentShown((isShown) => !isShown) }}\r\n >\r\n

{label}

\r\n \r\n \r\n \r\n updateOffsetHeight(ref)}>\r\n {children}\r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default ProductAccordion;\r\n","import React from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport { Paragraph, ResponsiveSize } from 'Shared/SharedComponents/atoms/Typography';\r\n\r\ntype PropType = {\r\n openingHours: {\r\n [item: string]: string;\r\n };\r\n};\r\n\r\nconst Table = styled.table({\r\n width: '100%', padding: { xy: 0 }, borderSpacing: 0, borderCollapse: 'collapse'\r\n})\r\n\r\nconst Tr = styled.tr({\r\n padding: { y: '2px' }\r\n})\r\n\r\nconst Td = styled.td({\r\n width: '100%'\r\n})\r\n\r\nfunction OpeningHours({ openingHours }: PropType) {\r\n return (\r\n \r\n \r\n {Object.entries(openingHours).map((openingHour, index) => {\r\n const [days, hours] = openingHour;\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n {days}\r\n \r\n \r\n {hours}\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default OpeningHours;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport { H3, Paragraph, ResponsiveSize } from 'Shared/SharedComponents/atoms/Typography';\r\nimport { ButtonHeight, ButtonTheme, LinkButton } from 'Shared/TextButtons';\r\nimport OpeningHours from './OpeningHours';\r\nimport * as style from 'Shared/Style';\r\n\r\ntype StoreInformationLabelsType = {\r\n openingHours: string;\r\n openingHoursExceptions: string;\r\n contact: string;\r\n findStore: string;\r\n};\r\n\r\ntype StoreInformationPropType = {\r\n labels: StoreInformationLabelsType;\r\n openingHours: { [item: string]: string };\r\n openingHoursExceptions: { [item: string]: string };\r\n phoneNumber: string;\r\n directionsLink: string;\r\n show: boolean;\r\n};\r\n\r\nconst OpeningHoursHeading = styled(H3, {\r\n padding: { bottom: '6px' }\r\n})\r\n\r\nconst OpeningHoursExceptionsHeading = styled(H3, {\r\n padding: { bottom: '6px' }\r\n})\r\n\r\nconst ContactWrap = styled.div({\r\n display: 'flex', \r\n margin: { top: '30px' },\r\n flexDirection: 'column', \r\n ['@media ' + style.mediaMinLarge]: {\r\n flexDirection: 'row', \r\n },\r\n})\r\n\r\nconst OpeningHoursOuter = styled.div({\r\n display: 'flex'\r\n})\r\n\r\nconst OpeningHoursWrap = styled.div({\r\n ['@media ' + style.mediaMinLarge]: {\r\n flex: { basis: '50%' },\r\n paddingRight: '60px',\r\n },\r\n})\r\n\r\nconst ContactData = styled.div({\r\n ['@media ' + style.mediaMinLarge]: {\r\n flex: { basis: '50%' },\r\n paddingRight: '60px',\r\n },\r\n})\r\n\r\nconst ContactDataText = styled(Paragraph, {\r\n padding: { top: '8px' } \r\n})\r\n\r\nconst ContactButton = styled.div({\r\n ['@media ' + style.mediaUpToLarge]: {\r\n marginTop: '24px',\r\n },\r\n ['@media ' + style.mediaMinLarge]: {\r\n flex: { basis: '50%' },\r\n },\r\n})\r\n\r\nfunction StoreInformation({\r\n labels,\r\n openingHours,\r\n openingHoursExceptions,\r\n phoneNumber,\r\n directionsLink,\r\n show,\r\n}: StoreInformationPropType) {\r\n\r\n const [heightTest, setHeight] = useState({shouldTranslateHeight: false, currentHeight: 0});\r\n const [isOpen, setIsOpen] = useState(show);\r\n\r\n useEffect(() => {\r\n if (isOpen !== show) {\r\n setHeight({shouldTranslateHeight: true, currentHeight: 0});\r\n } else {\r\n setHeight({shouldTranslateHeight: false, currentHeight: 0});\r\n }\r\n\r\n setIsOpen(show);\r\n }, []);\r\n\r\n const updateOffsetHeight = (ref: HTMLElement) => {\r\n if(show) {\r\n if (ref) {\r\n // ref to prevent browser freeze\r\n requestAnimationFrame(() => {\r\n const height = ref.offsetHeight;\r\n if (Math.abs(heightTest.currentHeight - height) > 2) {\r\n setHeight({shouldTranslateHeight: true, currentHeight: height});\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n return (\r\n \r\n updateOffsetHeight(ref)} >\r\n \r\n {openingHours && (\r\n \r\n \r\n {labels.openingHours}\r\n \r\n \r\n \r\n )}\r\n {openingHoursExceptions && (\r\n \r\n \r\n {labels.openingHoursExceptions}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n

\r\n {labels.contact}\r\n

\r\n \r\n {phoneNumber}\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default StoreInformation;\r\n","import React, { useState } from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport StoreStockViewModel from 'Product/StoreStockViewModel.type';\r\nimport { CircleFilled8x8 } from 'Shared/Icons/Circle';\r\nimport {\r\n H3,\r\n Paragraph,\r\n ResponsiveSize,\r\n ResponsiveLineHeight,\r\n Text,\r\n TextLabel,\r\n} from 'Shared/SharedComponents/atoms/Typography';\r\nimport { AvailableSizes } from 'Product/Sizes';\r\nimport StoreInformation from './StoreInformation';\r\nimport StoreAvailabilityViewModelLabels from 'Product/VariationViewModel+StoreAvailabilityViewModelLabels.type';\r\nimport { Plus12x12 } from 'Shared/Icons/Plus';\r\nimport { colorFromStatus } from 'Shared/utils';\r\nimport * as style from 'Shared/Style';\r\n\r\ntype ConnectedPropType = {\r\n storeAvailability: StoreStockViewModel;\r\n isSelected: boolean;\r\n labels: StoreAvailabilityViewModelLabels;\r\n isCompact: boolean;\r\n onClick: () => void;\r\n};\r\n\r\nconst Wrap = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'stretch',\r\n gap: '16px',\r\n padding: { x: '12px', top: '12px', bottom: '16px' },\r\n border: {\r\n xy: {\r\n width: '2px',\r\n style: 'solid',\r\n },\r\n },\r\n borderRadius: '8px',\r\n})\r\n\r\nconst StoreDataWrap = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'stretch',\r\n ['@media ' + style.mediaMinLarge]: {\r\n flexDirection: 'row'\r\n },\r\n})\r\n\r\nconst StoreDataItem1 = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '9px',\r\n ['@media ' + style.mediaMinLarge]: {\r\n flex: { basis: '50%' },\r\n padding: { right: '60px' },\r\n },\r\n})\r\n\r\nconst StoreDataItem1Row = styled.div({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: '42px', \r\n flexGrow: 0,\r\n ['@media ' + style.mediaMinLarge]: {\r\n gap: '8px', \r\n },\r\n})\r\n\r\nconst StoreDataItem1Text = styled(Paragraph, {\r\n color: style.colors.monochrome.a11ygrey, \r\n flexGrow: 1\r\n})\r\n\r\nconst StoreDataItem2 = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n ['@media ' + style.mediaMinLarge]: {\r\n flex: { basis: '50%' },\r\n },\r\n})\r\n\r\nconst StoreDataItem2Row = styled.div({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'baseline',\r\n gap: '8px',\r\n whiteSpace: 'nowrap',\r\n padding: { top: '24px', bottom: '8px' },\r\n ['@media ' + style.mediaMinLarge]: {\r\n padding: { top: '5px', bottom: '11x' },\r\n },\r\n})\r\n\r\nconst Plus = styled(Plus12x12, {\r\n marginLeft: '8px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: 'inherit',\r\n transitionDuration: '0.2s',\r\n})\r\n\r\nconst PlusRotaded = styled(Plus, {\r\n transform: 'rotate(45deg)',\r\n})\r\n\r\nconst MoreInformationMobile = styled.div({\r\n cursor: 'pointer', margin: { bottom: '16px' }, display: 'flex'\r\n})\r\n\r\nconst MoreInformationDesktop = styled.div({\r\n cursor: 'pointer', display: 'flex'\r\n})\r\n\r\nconst SelectedStore = styled(Text, {\r\n color: style.colors.monochrome.a11ygrey,\r\n whiteSpace: 'nowrap',\r\n padding: { top: '3px' },\r\n ['@media ' + style.mediaMinLarge]: {\r\n padding: { top: '5px' },\r\n },\r\n})\r\n\r\nconst AvailableSizesMobile = styled.div({\r\n cursor: 'pointer', \r\n display: 'flex'\r\n})\r\n\r\ntype PropType = ConnectedPropType;\r\n\r\nfunction StoreAvailabilityCard({ storeAvailability, isSelected, labels, isCompact, onClick }: PropType) {\r\n const [moreInformationShown, setMoreInformationShown] = useState(false);\r\n const [availableSizesShown, setAvailableSizesShown] = useState(false);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

{storeAvailability.name}

\r\n {isSelected && (\r\n \r\n {labels.selectedStore}\r\n \r\n )}\r\n
\r\n \r\n {storeAvailability.address}\r\n \r\n {storeAvailability.zipCode} {storeAvailability.city}\r\n \r\n {!isCompact && (\r\n setMoreInformationShown((infoShown) => !infoShown)}\r\n >\r\n {labels.moreInformation}\r\n {moreInformationShown ? : }\r\n \r\n )}\r\n
\r\n \r\n \r\n \r\n \r\n {storeAvailability.availabilityLabel}\r\n \r\n \r\n {!isCompact && }\r\n \r\n
\r\n {isCompact && (\r\n setAvailableSizesShown((availableSizesShown) => !availableSizesShown)}\r\n >\r\n {labels.availableSizes}\r\n {availableSizesShown ? : }\r\n \r\n )}\r\n {isCompact && availableSizesShown && }\r\n \r\n {isCompact && (\r\n setMoreInformationShown((infoShown) => !infoShown)}\r\n >\r\n {labels.moreInformation}\r\n {moreInformationShown ? : }\r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default StoreAvailabilityCard;\r\n","import React from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport { Paragraph, ResponsiveSize } from 'Shared/SharedComponents/atoms/Typography';\r\nimport { LocationScaled } from 'Shared/Icons/Location';\r\nimport { SearchInput, Toggle } from 'Shared/SharedComponents/atoms/InputField';\r\nimport * as style from 'Shared/Style';\r\nimport Loader from 'SiteLayout/Loader';\r\n\r\ntype SearchStoresLabels = {\r\n searchPlaceholder: string;\r\n searchInStockToggle: string;\r\n};\r\n\r\ntype PropType = {\r\n labels: SearchStoresLabels;\r\n updateResults: (searchString: string) => void;\r\n setOnlyShowIfInStock: (onlyShowIfInStock: boolean) => void;\r\n showSpinner: boolean;\r\n isCompact: boolean;\r\n};\r\n\r\nconst Wrap = styled.div({\r\n display: 'flex', \r\n flexDirection: 'column', \r\n margin: { top: '24px' }, \r\n width: '100%',\r\n ['@media ' + style.mediaMinLarge]: {\r\n flexDirection: 'row'\r\n },\r\n})\r\n\r\nconst SearchInputWrap = styled.div({\r\n ['@media ' + style.mediaMinLarge]: {\r\n flex: { basis: '50%' },\r\n padding: { right: '16px' },\r\n },\r\n})\r\n\r\nconst ToggleWrap = styled.div({\r\n display: 'flex',\r\n gap: '8px',\r\n alignItems: 'center',\r\n ['@media ' + style.mediaUpToLarge]: {\r\n margin: { top: '13px' },\r\n },\r\n ['@media ' + style.mediaMinLarge]: {\r\n flex: { basis: '50%' },\r\n },\r\n})\r\n\r\nconst Map = styled(LocationScaled, {\r\n alignSelf: 'center', \r\n width: '24px',\r\n height: '24px'\r\n})\r\n\r\nfunction SearchStores({ labels, updateResults, setOnlyShowIfInStock, isCompact, showSpinner }: PropType) {\r\n return (\r\n \r\n \r\n updateResults(event.currentTarget.value)}\r\n iconAfter={}\r\n />\r\n \r\n \r\n \r\n {labels.searchInStockToggle}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SearchStores;\r\n","import React, { useEffect, useState } from 'react';\r\nimport connect from 'Shared/connect';\r\nimport { styled } from '@glitz/react';\r\nimport { get, URLX } from '@polarnopyret/scope';\r\nimport VariationStoreStockViewModel from 'Product/VariationStoreStockViewModel.type';\r\nimport StoreAvailabilityCard from './StoreAvailabilityCard';\r\nimport StoreModel from 'Stores/StoreModel.type';\r\nimport { SetSelectedStore } from 'Shared/uiReducer';\r\nimport StoreAvailabilityViewModelLabels from 'Product/VariationViewModel+StoreAvailabilityViewModelLabels.type';\r\nimport SearchStores from './SearchStores';\r\nimport { loadScript } from '@polarnopyret/scope';\r\nimport { filterByDistance, sortByCrowFliesDistance } from 'Shared/distance-calculations';\r\nimport { formatStringByKeys } from 'Shared/utils';\r\nimport { getCookie, setCookie } from 'Shared/Helper/cookieHelper';\r\nimport Modal, { ModalScrollableContent, ModalTopContent } from 'Shared/SharedComponents/atoms/Modal';\r\nimport { Paragraph, ResponsiveSize } from 'Shared/SharedComponents/atoms/Typography';\r\nimport { isCompact } from 'Shared/Viewport';\r\n\r\nconst AVAILABILITY_STATUS_OUT_OF_STOCK = 'RED';\r\nconst MAX_DISTANCE = 5000;\r\nconst COOKIE_POP_SELECTED_STORE = 'pop.selected-store';\r\n\r\nconst ModalScrollableContentContainer = styled(ModalScrollableContent, {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'stretch',\r\n gap: '12px',\r\n paddingTop: '12px'\r\n})\r\n\r\nconst ModalIntro = styled(Paragraph, {\r\n marginTop: '8px'\r\n})\r\n\r\ntype RequiredPropType = {\r\n modalIsShown: boolean;\r\n hideModal: () => void;\r\n labels: StoreAvailabilityViewModelLabels;\r\n};\r\n\r\ntype ConnectedPropType = {\r\n currentBreakpoint: number;\r\n stores: { [item: string]: StoreModel };\r\n setSelectedStore: (selectedStore: StoreModel) => void;\r\n};\r\n\r\ntype PropType = RequiredPropType &\r\n ConnectedPropType & {\r\n storeAvailability?: VariationStoreStockViewModel;\r\n googleMapsApiKey: string;\r\n };\r\n\r\ninterface StoreWithId extends StoreModel {\r\n id: string;\r\n}\r\n\r\nconst StoreAvailabilityModal = ({\r\n modalIsShown,\r\n hideModal,\r\n labels,\r\n stores,\r\n setSelectedStore,\r\n googleMapsApiKey,\r\n currentBreakpoint,\r\n}: PropType) => {\r\n\r\n const [storeAvailability, setStoreAvailability] = useState(undefined);\r\n const [onlyShowIfInStock, setOnlyShowIfInStock] = useState(true);\r\n const [isPositionChecked, setIsPositionChecked] = useState(false);\r\n const [positionAllowedByClient, setPositionAllowedByClient] = useState(false);\r\n const [selectedStoreId, setSelectedStoreId] = useState('');\r\n const storeAvailabilityInStock = (storeAvailability?.stores?.findIndex(x => x.availabilityStatus !== AVAILABILITY_STATUS_OUT_OF_STOCK) ?? -1) > -1;\r\n const [storesLoaded, setStoresLoaded] = useState(false);\r\n const [showSpinner, setShowSpinner] = useState(true);\r\n\r\n const isMobile = isCompact(currentBreakpoint);\r\n\r\n async function collectStoreData(stores: StoreWithId[]) {\r\n const storeIds = stores.reduce((ids: string, store: StoreWithId) => {\r\n return `${ids},${store.id}`;\r\n }, '');\r\n const url = new URLX(document.URL);\r\n url.search = `?stores=${storeIds}`;\r\n return get(url).then((r) => r.json());\r\n }\r\n\r\n function searchForStores(searchString: string) {\r\n const url = new URLX(document.URL);\r\n url.search = `?storeSearch=${searchString}`;\r\n setStoreAvailability(null);\r\n setStoresLoaded(false);\r\n\r\n if (searchString === '') {\r\n getStores();\r\n return;\r\n }\r\n\r\n get(url)\r\n .then((r) => r.json())\r\n .then((json: VariationStoreStockViewModel) => {\r\n setStoreAvailability(json);\r\n setStoresLoaded(true);\r\n });\r\n }\r\n\r\n const storesWithIds: StoreWithId[] = [];\r\n for (const key in stores) {\r\n if (stores.hasOwnProperty(key)) {\r\n storesWithIds.push({ ...stores[key], id: key });\r\n }\r\n }\r\n\r\n function getStores() {\r\n navigator.geolocation?.getCurrentPosition(\r\n (position) => {\r\n loadScript(\r\n 'https://maps.googleapis.com/maps/api/js' + (googleMapsApiKey ? '?key=' + googleMapsApiKey : ''),\r\n ).then(() => {\r\n\r\n filterByDistance(storesWithIds, position, MAX_DISTANCE).then((filteredStores: StoreWithId[]) => {\r\n collectStoreData(filteredStores).then((storeAvailabilityJson) => {\r\n if (storeAvailabilityJson?.stores) {\r\n storeAvailabilityJson.stores = sortByCrowFliesDistance(storeAvailabilityJson.stores, position);\r\n }\r\n setStoreAvailability(storeAvailabilityJson);\r\n setStoresLoaded(true);\r\n setShowSpinner(false);\r\n });\r\n setIsPositionChecked(true);\r\n setPositionAllowedByClient(true);\r\n });\r\n });\r\n },\r\n () => {\r\n // Could not get the client location; must collect all store data and cannot sort based on position\r\n collectStoreData(storesWithIds).then((storeAvailabilityJson) => {\r\n setStoreAvailability(storeAvailabilityJson);\r\n setStoresLoaded(true);\r\n setShowSpinner(false);\r\n });\r\n setIsPositionChecked(true);\r\n setPositionAllowedByClient(false);\r\n },\r\n );\r\n }\r\n\r\n if (!isPositionChecked && modalIsShown) {\r\n getStores();\r\n }\r\n\r\n useEffect(() => {\r\n if (selectedStoreId === '') {\r\n const cookieStoreId = getCookie(COOKIE_POP_SELECTED_STORE);\r\n if (cookieStoreId) {\r\n setSelectedStoreId(cookieStoreId);\r\n }\r\n } else {\r\n setSelectedStore(stores[selectedStoreId]);\r\n if (selectedStoreId !== getCookie(COOKIE_POP_SELECTED_STORE)) {\r\n setCookie(COOKIE_POP_SELECTED_STORE, selectedStoreId);\r\n }\r\n }\r\n }, [selectedStoreId]);\r\n\r\n return (\r\n \r\n \r\n {labels.intro?.length > 0 && (\r\n {labels.intro}\r\n )}\r\n \r\n \r\n \r\n {storeAvailability &&\r\n storeAvailability?.stores?.map((store, index) => {\r\n if (!onlyShowIfInStock || store.availabilityStatus !== AVAILABILITY_STATUS_OUT_OF_STOCK)\r\n return (\r\n setSelectedStoreId(store.id)}\r\n />\r\n );\r\n })}\r\n {!storeAvailabilityInStock && onlyShowIfInStock && storesLoaded && (\r\n
\r\n {labels.noStoresInStock}\r\n
)\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default connect(\r\n (state) => ({\r\n stores: state.appShellData.store.stores,\r\n selectedStore: state.UI?.selectedStore,\r\n googleMapsApiKey: state.appShellData.apiKeys.googleMapsApiKey,\r\n currentBreakpoint: state.currentBreakpoint,\r\n }),\r\n (dispatch) => ({\r\n setSelectedStore: (selectedStore: StoreModel) => dispatch(SetSelectedStore(selectedStore)),\r\n }),\r\n)(StoreAvailabilityModal);\r\n","import React, { useState } from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport Html from 'Shared/Partials/PropertyTypes/Html';\r\nimport { Paragraph, ResponsiveLineHeight, ResponsiveSize } from 'Shared/SharedComponents/atoms/Typography';\r\nimport SizeInformationBlockViewModel from 'SizeInformation/SizeInformationBlockViewModel.type';\r\nimport Modal, { ModalScrollableContent, ModalTabs, ModalTopContent } from 'Shared/SharedComponents/atoms/Modal';\r\n\r\ntype RequiredPropType = {\r\n modalIsShown: boolean;\r\n hideModal: () => void;\r\n sizeInformation: SizeInformationBlockViewModel;\r\n};\r\n\r\ntype PropType = RequiredPropType;\r\n\r\nconst Content = styled.div({\r\n paddingTop: '16px'\r\n})\r\n\r\nconst Text = styled(Paragraph, {\r\n margin: { top: '24px' }\r\n})\r\n\r\nexport const SizeGuideModal = ({ modalIsShown, hideModal, sizeInformation }: PropType) => {\r\n enum Tabs {\r\n SizeGuide,\r\n Measurement,\r\n }\r\n\r\n const tabs = [\r\n { tab: Tabs.SizeGuide, label: sizeInformation.sizeGuide?.tabText },\r\n { tab: Tabs.Measurement, label: sizeInformation.measurement?.tabText },\r\n ];\r\n\r\n const [selectedTab, setSelectedTab] = useState(Tabs.SizeGuide);\r\n\r\n return (\r\n \r\n \r\n \r\n {sizeInformation.intro}\r\n \r\n \r\n \r\n \r\n {selectedTab === Tabs.SizeGuide && sizeInformation.sizeGuide?.mainBody && (\r\n \r\n \r\n \r\n )}\r\n {selectedTab === Tabs.Measurement && sizeInformation.measurement?.mainBody && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default SizeGuideModal;\r\n","/**\r\n * @ComponentFor Avensia.Common.Features.Product.VariationViewModel\r\n */\r\nimport React, { useState, useEffect, useRef } from 'react';\r\nimport { scrollPosition, scrollTo, translate } from '@polarnopyret/scope';\r\nimport connect from 'Shared/connect';\r\nimport { isCompact as functionIsCompact } from 'Shared/Viewport';\r\nimport { styled } from '@glitz/react';\r\nimport VariationViewModel from '../VariationViewModel.type';\r\nimport { ButtonHeight, ButtonTheme } from 'Shared/TextButtons';\r\nimport FeedbackButton from 'Shared/Button/Feedback';\r\nimport { Plus12x12 } from 'Shared/Icons/Plus';\r\nimport { addToCart } from 'Cart/action-creators';\r\nimport {\r\n H1,\r\n TextBlockSmall,\r\n Text,\r\n Paragraph,\r\n ResponsiveSize,\r\n ResponsiveLineHeight,\r\n} from 'Shared/SharedComponents/atoms/Typography';\r\nimport { appendImagePreset, Preset } from 'Shared/image-sizes';\r\nimport { Check12x12 } from 'Shared/Icons/Check';\r\nimport Page from 'Shared/Page';\r\nimport { CircleFilled8x8 } from 'Shared/Icons/Circle';\r\nimport { Store12x12 } from 'Shared/Icons/Store';\r\nimport ExtendedData from 'Product/ExtendedData';\r\nimport Usp from 'AppShell/Models/Usp.type';\r\nimport RecommendationsList from 'Product/SwipeableList';\r\nimport ProductFeatureList from 'Product/ProductFeatureList';\r\nimport PreviousPurchaseList from 'Product/PreviousPurchase';\r\nimport { SelectableSizes } from 'Product/Sizes';\r\nimport { colorFromStatus } from 'Shared/utils';\r\nimport StoreModel from 'Stores/StoreModel.type';\r\nimport Reviews from 'Product/Reviews';\r\nimport ProductTags from 'Product/ProductTags';\r\nimport Price from 'Pricing/Price';\r\nimport Link from 'Shared/Link';\r\nimport { toggleWishlistItem as toggleWishlistData } from 'WishList/action-creators';\r\nimport MiniWishListViewModel from 'WishList/MiniWishListViewModel.type';\r\nimport WishListUpdateResultType from 'WishList/WishListUpdateResult.type';\r\nimport { openAccountBox } from 'SiteLayout/AccountBox/action-creators';\r\nimport ProductAccordion from 'Product/ProductAccordion';\r\nimport { GridWrap } from 'Shared/PageLayout';\r\nimport StoreAvailabilityModal from 'Product/StoreAvailabilityModal';\r\nimport SizeGuideModal from 'Product/SizeGuideModal';\r\nimport { BreadcrumbWrapper } from 'Shared/Page/PageContent';\r\nimport { createGridClasses, createOffsetGridClassLarge } from 'Shared/grid';\r\nimport { DesktopImageGallery } from 'Product/ImageGallery/DesktopImageGallery'\r\nimport { MobileImageGallery } from 'Product/ImageGallery/MobileImageGallery'\r\nimport * as style from 'Shared/Style';\r\n\r\nconst FlexElement = styled.div({\r\n display: 'flex',\r\n});\r\n\r\nconst MainInfo = styled.div({\r\n width: '100%',\r\n ['@media ' + style.mediaUpToLarge]: {\r\n padding: {\r\n top: '24px',\r\n x: '12px',\r\n bottom: '12px',\r\n },\r\n },\r\n ['@media ' + style.mediaMinLarge]: {\r\n padding: {\r\n top: '0',\r\n },\r\n },\r\n});\r\n\r\nconst SizeSelector = styled.div({\r\n marginTop: '48px',\r\n ['@media ' + style.mediaMinLarge]: {\r\n marginTop: '32px',\r\n },\r\n});\r\n\r\nconst SizeSelectorText = styled(Text, {\r\n marginRight: '8px',\r\n marginBottom: '16px'\r\n})\r\n\r\nconst SizeGuideText = styled(Text, {\r\n cursor: 'pointer',\r\n color: style.colors.monochrome.a11ygrey,\r\n ':hover': {\r\n color: style.colors.monochrome.black,\r\n },\r\n marginBottom: '16px',\r\n})\r\n\r\nconst AddToCart = styled.div({\r\n marginTop: '48px',\r\n ['@media ' + style.mediaMinLarge]: {\r\n marginTop: '32px',\r\n },\r\n});\r\n\r\nconst BackInventoryWrap = styled.div({\r\n marginTop: '16px',\r\n backgroundColor: style.colors.brandColors.yellow\r\n});\r\n\r\nconst BackInventoryText = styled(Paragraph, {\r\n color: style.colors.monochrome.black,\r\n padding: { xy: '16px' }\r\n})\r\n\r\nconst AddToCartButton = styled(FeedbackButton, {\r\n width: '100%',\r\n marginTop: '12px',\r\n marginBottom: '12px'\r\n})\r\n\r\nconst AddToCartIcon = styled(Plus12x12, {\r\n marginLeft: '8px'\r\n})\r\n\r\nconst UspItem = styled.span({\r\n display: 'inline-flex',\r\n marginRight: '18px',\r\n})\r\n\r\nconst UspItemCheck = styled(Check12x12, {\r\n marginRight: '6px',\r\n})\r\n\r\nconst ProductMarkingsWrap = styled.div({\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n alignItems: 'center',\r\n});\r\n\r\nconst ProductMarkingSplitter = styled.span({\r\n marginLeft: '3px',\r\n marginRight: '3px',\r\n});\r\n\r\nconst BreadcrumbWrap = styled(BreadcrumbWrapper, {\r\n ['@media ' + style.mediaUpToLarge]: {\r\n padding: { bottom: '40px' },\r\n },\r\n})\r\n\r\nconst TopContent = styled.div({\r\n ['@media ' + style.mediaUpToLarge]: {\r\n marginLeft: '-12px',\r\n marginRight: '-12px',\r\n borderTop: {\r\n style: 'solid',\r\n width: '2px',\r\n color: style.colors.monochrome.black,\r\n },\r\n },\r\n})\r\n\r\nconst ProductDataWrap = styled.div({\r\n ['@media ' + style.mediaMinLarge]: {\r\n overflowY: 'auto',\r\n maxHeight: 'initial',\r\n '::-webkit-scrollbar': {\r\n width: '0px',\r\n },\r\n marginTop: '48px'\r\n },\r\n})\r\n\r\nconst MarkingsAndReviews = styled.div({\r\n marginBottom: '16px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '16px',\r\n ['@media ' + style.mediaMinLarge]: {\r\n marginBottom: '12px',\r\n gap: '6px',\r\n },\r\n})\r\n\r\nconst MainHeading = styled(H1, {\r\n marginBottom: '16px',\r\n})\r\n\r\nconst VariationLink = styled(Link, {\r\n marginRight: '8px',\r\n display: 'inline-block',\r\n width: '48px',\r\n height: '64px',\r\n ['@media ' + style.mediaMinLarge]: {\r\n width: '42px',\r\n height: '56px',\r\n },\r\n})\r\n\r\nconst VariationLinkImage = styled.img({\r\n borderRadius: '8px',\r\n objectPosition: 'center',\r\n objectFit: 'cover',\r\n})\r\n\r\nconst ExtendedDataGridWrap = styled(GridWrap, {\r\n paddingBottom: '80px',\r\n ['@media ' + style.mediaMinLarge]: {\r\n padding: { y: '120px' },\r\n },\r\n})\r\n\r\nconst FeatureBlocksGridWrap = styled(GridWrap, {\r\n height: 'auto',\r\n paddingBottom: '80px',\r\n ['@media ' + style.mediaUpToLarge]: {\r\n overflow: 'hidden',\r\n },\r\n ['@media ' + style.mediaMinLarge]: {\r\n paddingBottom: '120px',\r\n },\r\n})\r\n\r\nconst AccordionGridWrap = styled(GridWrap, {\r\n height: 'auto',\r\n})\r\n\r\nconst RecommendationsGridWrap = styled(GridWrap, {\r\n height: 'auto',\r\n padding: { y: '80px' },\r\n ['@media ' + style.mediaUpToLarge]: {\r\n overflow: 'hidden',\r\n },\r\n ['@media ' + style.mediaMinLarge]: {\r\n padding: { y: '120px' },\r\n },\r\n})\r\n\r\nconst ItemInventory = styled(FlexElement, {\r\n gap: '18px',\r\n})\r\n\r\nconst WebInventoryInfoWrap = styled.span({\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n})\r\n\r\nconst SelectedStoreInfoWrap = styled.span({\r\n display: 'inline-flex',\r\n gap: '4px',\r\n alignItems: 'center'\r\n})\r\n\r\nconst SelectedStoreInfoCity = styled(Text, {\r\n color: style.colors.monochrome.a11ygrey,\r\n})\r\n\r\nconst StoreInfoWrap = styled.span({\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n cursor: 'pointer',\r\n})\r\n\r\nconst StoreInfoText = styled(Text, {\r\n textDecoration: 'underline'\r\n})\r\n\r\nconst ChangeStore = styled.span({\r\n alignItems: 'center',\r\n cursor: 'pointer',\r\n textDecoration: 'underline',\r\n})\r\n\r\nconst ShopIcon = styled(Store12x12, {\r\n width: '12px',\r\n marginRight: '4px',\r\n})\r\n\r\n\r\nconst StoreIcon = styled(ShopIcon, {\r\n color: style.colors.monochrome.black,\r\n})\r\n\r\nconst Variation = connect(\r\n (state) => ({\r\n wishlist: state.wishlist,\r\n currentBreakpoint: state.currentBreakpoint,\r\n culture: state.appShellData.culture,\r\n currency: state.appShellData.market.currency,\r\n usps: state.appShellData.usps,\r\n selectedStore: state.UI?.selectedStore,\r\n wishlistPageLocation: state.appShellData.pages?.wishlist?.url,\r\n loggedIn: state.currentUser?.isLoggedIn ?? false,\r\n }),\r\n (dispatch) => ({\r\n toggleWishlistItem(isFavorited: boolean, code: string, colorProductCode: string, currentCategory: string) {\r\n return dispatch(toggleWishlistData(isFavorited, code, colorProductCode, currentCategory));\r\n },\r\n addToCart(code: string, quantity: number, ticket: string, currentCategory: string, colorProductCode: string) {\r\n return dispatch(\r\n addToCart(code, quantity, ticket, 'Produktlista', currentCategory, colorProductCode, false, true),\r\n );\r\n },\r\n openAccountBox() {\r\n dispatch(openAccountBox());\r\n },\r\n }),\r\n)(\r\n (\r\n props: VariationViewModel & {\r\n addToCart: (\r\n code: string,\r\n quantity: number,\r\n ticket: string,\r\n currentCategory: string,\r\n colorProductCode: string,\r\n ) => Promise;\r\n toggleWishlistItem: (\r\n isFavorited: boolean,\r\n code: string,\r\n colorProductCode: string,\r\n currentCategory: string,\r\n ) => Promise;\r\n openAccountBox: () => void;\r\n currentBreakpoint: number;\r\n currency: string;\r\n culture: string;\r\n usps: Usp[];\r\n selectedStore: StoreModel;\r\n wishlist: MiniWishListViewModel;\r\n\r\n wishlistPageLocation: string;\r\n loggedIn: boolean;\r\n },\r\n ) => {\r\n const {\r\n wishlist,\r\n currentBreakpoint,\r\n addToCart,\r\n openAccountBox,\r\n toggleWishlistItem,\r\n usps,\r\n labels,\r\n name,\r\n sizes,\r\n deliveryUsps,\r\n variations,\r\n productTitle,\r\n productActivities,\r\n preSelectedSizeCode,\r\n previousPurchases,\r\n selectedStoreStatus,\r\n selectedStore,\r\n loggedIn,\r\n sizeBackupStoreAvailabilities\r\n } = props;\r\n\r\n useEffect(() => {\r\n window?.document && scrollPosition(0);\r\n }, []);\r\n\r\n const scrollToDetailsRef = useRef();\r\n const scrollToReviewsRef = useRef();\r\n const breadcrumbs = props.breadcrumbs;\r\n const [isFavorited, setFavourite] = useState(wishlist.items.some((item) => item === props.code));\r\n\r\n const toggleWishlist = async (isFavorited: boolean) => {\r\n const b = await toggleWishlistItem(isFavorited, props.preSelectedSizeCode, props.code, props.categoryName);\r\n if (b?.statusCode === 200) {\r\n setFavourite(!isFavorited);\r\n }\r\n };\r\n\r\n const toggleFavorited = (e: any): any => {\r\n if (loggedIn) {\r\n toggleWishlist(isFavorited);\r\n } else {\r\n return openAccountBox();\r\n }\r\n };\r\n\r\n const scrollToDetails = () => {\r\n if (scrollToDetailsRef) {\r\n scrollTo(scrollToDetailsRef.current.offsetTop - 50, 500);\r\n }\r\n };\r\n\r\n const scrollToReviews = () => {\r\n if (contextDisplayData.numOfReviews > 0) {\r\n setExpandedAccordion('reviews');\r\n if (scrollToReviewsRef) {\r\n scrollTo(scrollToReviewsRef.current.offsetTop - 100, 500);\r\n }\r\n }\r\n };\r\n\r\n const isMobile = functionIsCompact(currentBreakpoint);\r\n const [selectedSize, setSelectedSize] = useState(\r\n sizes.find((s) => s.code === preSelectedSizeCode) ?? sizes.find((s) => s.inStock),\r\n );\r\n\r\n const [sizeGuideModalIsShown, setSizeGuideModalIsShown] = useState(false);\r\n const [storeAvailabilityModalIsShown, setStoreAvailabilityModalIsShown] = useState(false);\r\n const [expandedAccordion, setExpandedAccordion] = useState();\r\n\r\n const {\r\n code,\r\n ticket,\r\n price,\r\n centralStockAvailability,\r\n inStock,\r\n color,\r\n } = selectedSize;\r\n\r\n const contextDisplayData = props.productContextDisplayData.find(x => x.code === (props.compositeItem ? selectedSize.colorProductCode : props.code));\r\n\r\n useEffect(() => {\r\n if (document.head) {\r\n let schema = document.getElementById('pdp-schema') as HTMLScriptElement;\r\n if (!schema) {\r\n schema = document.createElement('script');\r\n schema.type = 'application/ld+json';\r\n schema.id = 'pdp-schema';\r\n document.head.appendChild(schema);\r\n }\r\n\r\n const aggregateRating = contextDisplayData.rating > 0 ? {\r\n '@type': 'AggregateRating',\r\n 'ratingValue': contextDisplayData.rating,\r\n 'reviewCount': contextDisplayData.numOfReviews\r\n } : undefined;\r\n\r\n const schemaContent = {\r\n '@context': 'https://schema.org/',\r\n '@type': 'product',\r\n 'name': name,\r\n 'description': contextDisplayData.description?.intro,\r\n 'color': selectedSize.color,\r\n 'sku': selectedSize.code,\r\n 'gtin': selectedSize.barCode,\r\n 'mpn': selectedSize.itemNumber,\r\n 'image': window.location.protocol + \"//\" + window.location.host + contextDisplayData.resources?.find(x => x.type === 'IMAGE')?.imageUrl,\r\n 'brand': {\r\n '@type': 'Brand',\r\n 'name': 'Polarn O. Pyret'\r\n },\r\n 'offers': {\r\n '@type': 'Offer',\r\n 'priceCurrency': props.currency,\r\n \"price\": selectedSize.price.sellingPrice?.toString(),\r\n 'itemCondition': 'https://schema.org/NewCondition',\r\n 'availability': selectedSize.inStock ? 'https://schema.org/InStock' : 'https://schema.org/OutOfStock',\r\n 'url': props.url\r\n },\r\n aggregateRating\r\n };\r\n\r\n schema.innerHTML = JSON.stringify(schemaContent);\r\n }\r\n\r\n\r\n }, [selectedSize]);\r\n\r\n\r\n const sentFromBackupStore = sizeBackupStoreAvailabilities ? sizeBackupStoreAvailabilities[selectedSize.code] : false;\r\n const availableOnline = centralStockAvailability > 0;\r\n const hasUsps = (usps?.length ?? 0) > 0;\r\n const headerOffset = hasUsps ? 140 : 108;\r\n const gotSizeInformation = !!props.sizeInformation;\r\n const itemCount = contextDisplayData.markings?.length ?? 0;\r\n const productMarkings = itemCount > 0 && (\r\n \r\n {contextDisplayData.markings.map((marking, index) => (\r\n <>\r\n \r\n {marking}\r\n \r\n {itemCount > 1 && (index + 1) < itemCount ? / : ''}\r\n \r\n ))}\r\n \r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n {isMobile && (\r\n \r\n )}\r\n \r\n \r\n \r\n {contextDisplayData.markings && productMarkings}\r\n 0 ? scrollToReviews : null)} rating={contextDisplayData.rating} numberOfReviews={contextDisplayData.numOfReviews} labels={{ reviews: labels.reviews }} />\r\n \r\n {name}\r\n \r\n\r\n {contextDisplayData.featureHighlightTags.length !== 0 && (\r\n \r\n )}\r\n\r\n \r\n {labels.color}: {color}\r\n \r\n\r\n {variations.length !== 0 && (\r\n
\r\n {variations.map((variation, index) => (\r\n \r\n \r\n \r\n ))}\r\n
\r\n )}\r\n \r\n \r\n {labels.selectSize}\r\n \r\n {gotSizeInformation && (\r\n setSizeGuideModalIsShown(true)}\r\n >\r\n {labels.sizeGuide}\r\n \r\n )}\r\n \r\n \r\n\r\n {gotSizeInformation && (\r\n setSizeGuideModalIsShown(false)}\r\n sizeInformation={props.sizeInformation}\r\n />\r\n )}\r\n\r\n \r\n {deliveryUsps?.map((e, i) => (\r\n \r\n \r\n \r\n {e}\r\n \r\n \r\n ))}\r\n (!inStock || props.comingSoon) ? null : addToCart(code, 1, ticket, props.categoryName, props.code)}\r\n theme={ButtonTheme.BlackToWhite}\r\n disabled={!inStock || props.comingSoon}\r\n iconAfter={}\r\n successText={props.labels.addedToCart}\r\n failedText={props.labels.addToCartFailed}\r\n height={ButtonHeight.Huge}\r\n >\r\n {props.comingSoon ? translate(\"/site/product/comingsoon\") : labels.addToCart}\r\n \r\n \r\n \r\n \r\n {labels.inventoryOnline}\r\n \r\n {props.showStoreInventoryStatus && (selectedStore ? (\r\n \r\n {selectedStoreStatus && (\r\n \r\n )}\r\n {selectedStore.name}\r\n {selectedStore.city}\r\n setStoreAvailabilityModalIsShown(true)}>\r\n \r\n {labels.changeStore}\r\n \r\n \r\n \r\n ) : (\r\n setStoreAvailabilityModalIsShown(true)}>\r\n \r\n {labels.inventoryInStore}\r\n \r\n ))}\r\n \r\n \r\n {sentFromBackupStore && props.backupInventoryText &&\r\n \r\n {props.backupInventoryText}\r\n \r\n }\r\n\r\n setStoreAvailabilityModalIsShown(false)}\r\n labels={props.storeAvailabilityLabels}\r\n />\r\n\r\n {previousPurchases?.length > 0 && (\r\n \r\n )}\r\n
\r\n
\r\n {!isMobile && (\r\n \r\n \r\n \r\n )}\r\n
\r\n \r\n \r\n \r\n \r\n\r\n {contextDisplayData.featureBlocks && contextDisplayData.featureBlocks.productFeatures?.length > 0 && (\r\n \r\n \r\n \r\n )}\r\n \r\n setExpandedAccordion('')}\r\n />\r\n \r\n {props.recommendations && props.recommendations.length > 0 &&\r\n \r\n
\r\n \r\n
\r\n
\r\n }\r\n
\r\n );\r\n },\r\n);\r\n\r\nexport default Variation;\r\n"],"sourceRoot":""}