{"version":3,"sources":["Shared/Icons/CheckIcon.tsx","SearchPage/Search.ts","Shared/Grid/CardGrid.tsx","Shared/LoadMoreContainer/LoadMoreContainer.tsx","Shared/Image/Image.tsx","ProductCard/ProductCard.tsx","SearchPage/SearchPage.tsx","Shared/Hooks/useOnScreen.js","Shared/Button/Dots.tsx"],"names":["styled","compose","Svg","xmlns","viewBox","css","fill","d","stroke","strokeWidth","strokeLinecap","strokeLinejoin","SearchTypes","abortController","AbortController","InitSearchResult","query","requestToken","organizationId","pageId","channelId","languageRoute","a","litiumContext","JSON","stringify","currentPageSystemId","productCategorySystemId","channelSystemId","url","canUseDOM","FetchSearch","InitCategoryItems","GetCategoryItems","currentData","productionClass","sortBy","sortDirection","res","newRes","productSearchResult","items","QuickSearch","abort","signal","EventDispatcher","dispatch","ON_SEARCH","Fetcher","data","resolve","Grid","div","width","display","gridTemplateColumns","gridRowGap","theme","spacing","gridColumnGap","margin","x","bottom","media","mediaQuery","mediaMinSmall","mediaMinMedium","mediaMinLarge","mediaMinHuge","CardGrid","children","rest","LoadMoreContainer","numberOfItems","onChange","availableItems","disabled","isLoadingMore","isPlanograms","useAppSettingsData","translations","showMoreLabel","showMoreTextLabel","productsLabel","planogramLabel","LoadMoreContentContainer","ProgressBarWrapper","ProgressBarLabel","htmlFor","replace","toString","toLowerCase","ProgressBar","id","value","max","LoadMoreButton","onClick","ButtonText","data-isloading","StyledLoadingCircle","isLoading","gridColumnEnd","flexDirection","alignItems","justifyContent","top","label","fontSize","color","black","textAlign","marginBottom","progress","maxWidth","height","boxShadow","pseudo","backgroundColor","borderRadius","iconLightBlue","CtaButton","position","tau","padding","xy","minHeight","span","white","transform","transition","property","duration","timingFunction","visibility","opacity","LoadingCircle","gamma","left","right","Image","src","alt","onLoad","usePlaceHolder","title","lazy","ref","useRef","useOnScreen","Img","aria-label","Card","overflow","minWidth","none","ImageArea","KexLink","veryLightGray","ProductImage","y","objectFit","StyledCheckIcon","CheckIcon","marginLeft","StockStatus","borderTopRightRadius","borderBottomRightRadius","StockStatusCircle","notInStockRed","marginRight","inStockGreen","StockStatusText","font","size","alpha","weight","fontWeight","bold","textTransform","ItemAddedText","ProductCardInfo","ProductSection","p","large","middleGray","lineHeight","ProductName","small","PriceContainer","MainPriceContainer","QuantityPriceWrapper","medium","Price","moreLarge","boldest","marginTop","tight","letterSpacing","wider","PerPackageText","QuantityText","AddToCartButton","MoreInfoButton","AddToCart","verticalAlign","primaryBackground","StyledPlusIcon","PlusToggleIcon","StyledMinusIcon","MinusToggleIcon","QuantitySelector","MinusButton","button","cursor","QuantityInput","input","MozAppearance","WebkitAppearance","Root","gridGap","tiny","mediaMinScreen","ProductCard","item","image","name","code","price","quantity","inStock","mainCategory","unitPrice","isPlanogram","addToCartLabel","inStockLabel","notInStockLabel","quantityLabel","perPackageLabel","unitPriceLabel","pieceLabel","moreInformationLabel","addedToCartLabel","placeholderImages","productPlaceholderImg","productPlaceholder","planogramPlaceholderImg","planogramPlaceholder","useState","setIsLoading","inputQuantity","setInputQuantity","itemAdded","setItemAdded","href","data-instock","asLink","Number","type","min","e","target","onBlur","numb","UpdateCart","setTimeout","SearchPage","pagesLabel","provideQueryLabel","searchResultsForLabel","noResultsLabel","products","categoryLabel","staticPages","searchPage","useUserStateData","dispatchLoading","useKexLoadingCircle","useCurrentPage","pageTitle","itemsPerLoad","isSearching","setIsSearching","searchModalIsOpen","setSearchModalIsOpen","searchResult","setSearchResult","setIsLoadingMore","visibleProducts","setVisibleProducts","visiblePlanograms","setVisiblePlanograms","nrOfVisibleProducts","setNrOfVisibleProducts","nrOfVisiblePlanograms","setNrOfVisiblePlanograms","showLoadMoreProducts","showLoadMorePlanograms","planogramSearchResult","onSearch","onSearchModalChange","isOpen","useEffect","subscribe","ON_MOBILE_SEARCH_OPEN_CHANGE","ON_SEARCH_MODAL_OPEN_CHANGE","unsubscribe","getUrlParameter","then","sliced","slice","undefined","noSearchResult","contentSearchResult","categoryMatch","length","Main","TopSection","DotsWrapper","QueryHeader","SearchResultSpan","SearchQuery","Divider","BottomSection","StyledCardGrid","SearchResultContainer","PageResultContainer","PageResultHeading","PageResultItemsContainer","map","PageResultItem","key","PageResultItemText","ProductCardGrid","itemsToShow","concat","loadMorePlanograms","loadMoreProducts","main","screenMaxWidth","paddingTop","paddingBottom","delta","q","psi","gridColumnStart","borderBottom","style","grayLine","border","h1","flexWrap","lightBlue","primaryBlue","lightBlueHover","beta","rootMargin","once","isIntersecting","setIntersecting","observerObject","setObserverObject","elm","current","observer","IntersectionObserver","entry","observe","Object","isEmpty","unobserve","IS_SERVER_CONTEXT","Dots","Dot","primary","massive","animationName","animationDuration","timings","sevenFifths","animationIterationCount","animationFillMode","animationDelay","oneFifth","twoFifths"],"mappings":"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","file":"Dist/build-client/static/js/SearchPage-SearchPage.11008f3c.chunk.js","sourcesContent":["import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\n\r\nfunction CartIcon({ compose }: StyledProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(CartIcon);\r\n","import { useEffect, useState } from 'react';\r\nimport useSWR, { mutate } from 'swr';\r\nimport Fetcher from '../Shared/Common/Fetcher';\r\nimport { IS_PRODUCTION_ENV } from '../Shared/Configs/EnvConfig';\r\nimport { useAppSettingsData } from '../Shared/AppSettingsProvider/AppSettingsProvider';\r\nimport { canUseDOM } from '../Shared/Common/Helpers';\r\nimport { EventDispatcher, ON_SEARCH } from '../Shared/Common/EventDispatcher';\r\nimport useCurrentPage from '../Shared/Hooks/useCurrentPage';\r\nimport FullSearchResult from '../Search/Models/FullSearchResult.interface';\r\nimport { useUserStateData } from '../Shared/UserContextProvider/UserContextProvider';\r\nimport { AnyMxRecord } from 'dns';\r\n\r\nlet abortController: AbortController = new AbortController();\r\nlet hasMounted = false;\r\n\r\nexport enum SearchTypes {\r\n Products = 'getProduct',\r\n Content = 'getContent',\r\n Sector = 'getSector',\r\n Documents = 'getDocument',\r\n Empty = '',\r\n}\r\n\r\nexport async function InitSearchResult(\r\n query: string,\r\n requestToken: string,\r\n organizationId: string,\r\n pageId: string,\r\n channelId: string,\r\n languageRoute?: string\r\n) {\r\n const litiumContext = JSON.stringify({\r\n currentPageSystemId: pageId,\r\n productCategorySystemId: pageId,\r\n channelSystemId: channelId,\r\n });\r\n\r\n const url = canUseDOM()\r\n ? `/api/${languageRoute}/search/GetSearchResult?query=${query}&organizationId=${organizationId}&getProduct=true&getContent=true&getDocument=true`\r\n : '';\r\n\r\n return await FetchSearch(url, litiumContext, requestToken);\r\n}\r\n\r\nexport async function GetSearchResult(\r\n query: string,\r\n pageId: string,\r\n channelId: string,\r\n languageRoute: string,\r\n requestToken: string,\r\n organizationId: string,\r\n take: number,\r\n skip: number,\r\n type: SearchTypes,\r\n currentData: FullSearchResult\r\n) {\r\n const litiumContext = JSON.stringify({\r\n currentPageSystemId: pageId,\r\n productCategorySystemId: pageId,\r\n channelSystemId: channelId,\r\n });\r\n\r\n const url = canUseDOM()\r\n ? `/api/${languageRoute}/search/GetSearchResult?query=${query}&organizationId=${organizationId}&${type}=true&take=${take}&skip=${skip}`\r\n : '';\r\n\r\n var id = '/api/search/GetSearchResult';\r\n const res = await FetchSearch(url, litiumContext, requestToken);\r\n if (res) {\r\n let newRes;\r\n switch (type) {\r\n case SearchTypes.Products:\r\n newRes = {\r\n ...currentData,\r\n productSearchResult: {\r\n ...res.productSearchResult,\r\n items: [\r\n ...currentData.productSearchResult.items,\r\n ...res.productSearchResult.items,\r\n ],\r\n },\r\n };\r\n break;\r\n case SearchTypes.Content:\r\n newRes = {\r\n ...currentData,\r\n contentSearchResult: {\r\n ...res.contentSearchResult,\r\n items: [\r\n ...currentData.contentSearchResult.items,\r\n ...res.contentSearchResult.items,\r\n ],\r\n },\r\n };\r\n break;\r\n default:\r\n newRes = res;\r\n }\r\n\r\n return newRes;\r\n }\r\n}\r\n\r\nexport async function InitCategoryItems(\r\n requestToken: string,\r\n organizationId: string,\r\n languageRoute?: string,\r\n pageId?: string,\r\n channelId?: string\r\n) {\r\n const litiumContext = JSON.stringify({\r\n currentPageSystemId: pageId,\r\n productCategorySystemId: pageId,\r\n channelSystemId: channelId,\r\n });\r\n\r\n const url = canUseDOM()\r\n ? `/api/${languageRoute}/category/GetCategoryItems?organizationId=${organizationId}`\r\n : '';\r\n\r\n return await FetchSearch(url, litiumContext, requestToken);\r\n}\r\n\r\nexport async function GetCategoryItems(\r\n pageId: string,\r\n channelId: string,\r\n languageRoute: string,\r\n requestToken: string,\r\n organizationId: string,\r\n currentData?: FullSearchResult,\r\n productionClass?: string,\r\n sortBy?: string,\r\n sortDirection?: number\r\n) {\r\n const litiumContext = JSON.stringify({\r\n currentPageSystemId: pageId,\r\n productCategorySystemId: pageId,\r\n channelSystemId: channelId,\r\n });\r\n\r\n const url = canUseDOM()\r\n ? `/api/${languageRoute}/category/GetCategoryItems?organizationId=${organizationId}${\r\n sortBy ? `&sortBy=${sortBy}` : ''\r\n }${sortDirection ? `&sortDirection=${sortDirection}` : ''}${\r\n productionClass ? productionClass : ''\r\n }`\r\n : '';\r\n\r\n const res = await FetchSearch(url, litiumContext, requestToken);\r\n if (res && currentData) {\r\n let newRes;\r\n newRes = {\r\n ...res,\r\n productSearchResult: {\r\n ...res.productSearchResult,\r\n items: [\r\n ...currentData.productSearchResult.items,\r\n ...res.productSearchResult.items,\r\n ],\r\n },\r\n };\r\n return newRes;\r\n }\r\n return res;\r\n}\r\n\r\nexport async function QuickSearch(\r\n url: string,\r\n requestToken: string,\r\n pageId: string,\r\n channelId: string\r\n) {\r\n const litiumContext = JSON.stringify({\r\n currentPageSystemId: pageId,\r\n productCategorySystemId: pageId,\r\n channelSystemId: channelId,\r\n });\r\n const res = await FetchSearch(url, litiumContext, requestToken);\r\n\r\n return res;\r\n}\r\n\r\nfunction BaseSearch(url: string, id: string, requestToken: string) {\r\n const [searchResult, setSearchResult] = useState(\r\n {} as FullSearchResult\r\n );\r\n\r\n const litiumContext = JSON.stringify({\r\n currentPageSystemId: '96d94c1b-eb76-4cc7-b09a-3092b3c9aae7',\r\n productCategorySystemId: '96d94c1b-eb76-4cc7-b09a-3092b3c9aae7',\r\n channelSystemId: '951186b2-04af-47c4-98c8-3935ed7753e2',\r\n });\r\n const { data: fechedSearchResult } = useSWR(\r\n `${url}-${id}`,\r\n () => FetchSearch(url, litiumContext, requestToken),\r\n {\r\n initialData: undefined,\r\n revalidateOnFocus: IS_PRODUCTION_ENV,\r\n dedupingInterval: 0,\r\n }\r\n );\r\n\r\n useEffect(() => {\r\n if (!hasMounted) {\r\n hasMounted = true;\r\n } else {\r\n if (fechedSearchResult) {\r\n setSearchResult(fechedSearchResult);\r\n }\r\n }\r\n }, [fechedSearchResult]);\r\n\r\n return searchResult;\r\n}\r\n\r\nfunction FetchSearch(url: string, litiumContext: string, requestToken: string) {\r\n abortController.abort();\r\n abortController = new AbortController();\r\n const signal = abortController.signal;\r\n EventDispatcher.dispatch(ON_SEARCH, true);\r\n\r\n return Fetcher(\r\n url,\r\n signal,\r\n (data, resolve) => {\r\n resolve(data);\r\n EventDispatcher.dispatch(ON_SEARCH, false);\r\n },\r\n litiumContext,\r\n requestToken\r\n );\r\n}\r\n","import React from 'react';\r\nimport { theme, styled } from '../../Theme';\r\nimport { media } from '@glitz/core';\r\nimport { StyledProps } from '@glitz/react';\r\n\r\ntype PropTypes = StyledProps & {\r\n children: React.ReactNode;\r\n};\r\n\r\nfunction CardGrid({ children, compose, ...rest }: PropTypes) {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nconst Grid = styled.div({\r\n width: '100%',\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(4,minmax(0,1fr))',\r\n gridRowGap: theme.spacing(9),\r\n gridColumnGap: theme.spacing(4),\r\n // gridGap: theme.tiny,\r\n margin: { x: 'auto', bottom: 'auto' },\r\n ...media(theme.mediaQuery.mediaMinSmall, {\r\n // gridTemplateColumns: '1fr 1fr',\r\n // gridGap: theme.tiny,\r\n }),\r\n ...media(theme.mediaQuery.mediaMinMedium, {\r\n gridTemplateColumns: 'repeat(6,minmax(0,1fr))',\r\n // gridGap: theme.large,\r\n }),\r\n ...media(theme.mediaQuery.mediaMinLarge, {\r\n gridTemplateColumns: 'repeat(12,minmax(0,1fr))',\r\n gridRowGap: theme.spacing(12),\r\n gridColumnGap: theme.spacing(6),\r\n // gridGap: theme.large,\r\n }),\r\n ...media(theme.mediaQuery.mediaMinHuge, {\r\n // gridTemplateColumns: '1fr 1fr 1fr 1fr',\r\n // gridGap: theme.great,\r\n }),\r\n});\r\n\r\nexport default CardGrid;\r\n","import React from 'react';\r\nimport { styled, theme } from '../../Theme';\r\nimport { media, pseudo } from '@glitz/core';\r\nimport { useAppSettingsData } from '../AppSettingsProvider/AppSettingsProvider';\r\nimport { mediaQuery } from '../../Theme/mediaQueries';\r\nimport { LoadingCircle } from '../Icons';\r\nimport CtaButton from '../CtaButton/CtaButton';\r\n\r\ntype PropType = {\r\n numberOfItems: number;\r\n onChange: () => void;\r\n availableItems: number;\r\n disabled?: boolean;\r\n isLoadingMore?: boolean;\r\n isPlanograms?: boolean;\r\n};\r\n\r\nconst LoadMoreContainer = ({\r\n numberOfItems,\r\n onChange,\r\n availableItems,\r\n disabled,\r\n isLoadingMore,\r\n isPlanograms,\r\n}: PropType) => {\r\n const {\r\n translations: {\r\n 'common/showMore': showMoreLabel,\r\n 'common/showMoreText': showMoreTextLabel,\r\n 'common/products': productsLabel,\r\n 'common/planogram': planogramLabel,\r\n },\r\n } = useAppSettingsData();\r\n\r\n return (\r\n \r\n \r\n \r\n {showMoreTextLabel &&\r\n showMoreTextLabel.replace(\r\n '{0}',\r\n numberOfItems >= availableItems\r\n ? availableItems.toString()\r\n : numberOfItems.toString()\r\n )}{' '}\r\n {availableItems}{' '}\r\n {!isPlanograms\r\n ? productsLabel.toLowerCase()\r\n : planogramLabel.toLowerCase()}\r\n \r\n \r\n \r\n onChange()}>\r\n {showMoreLabel}\r\n {isLoadingMore && }\r\n \r\n \r\n );\r\n};\r\n\r\nexport default LoadMoreContainer;\r\n\r\nconst LoadMoreContentContainer = styled.div({\r\n gridColumnEnd: 'span 4',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n margin: { x: 'auto', top: 0, bottom: theme.spacing(6) },\r\n ...media(theme.mediaQuery.mediaMinMedium, {\r\n gridColumnEnd: 'span 6',\r\n }),\r\n ...media(theme.mediaQuery.mediaMinLarge, {\r\n gridColumnEnd: 'span 12',\r\n margin: { top: '22px', bottom: theme.spacing(16) },\r\n }),\r\n});\r\n\r\nconst ProgressBarWrapper = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n});\r\n\r\nconst ProgressBarLabel = styled.label({\r\n fontSize: '16px',\r\n color: theme.black,\r\n textAlign: 'center',\r\n marginBottom: theme.spacing(3),\r\n});\r\n\r\nconst ProgressBar = styled.progress({\r\n maxWidth: '345px',\r\n width: '100%',\r\n height: '8px',\r\n boxShadow: '0px 10px 20px rgba(0, 0, 0, 0.15)',\r\n ...pseudo(['::-moz-progress-bar'], {\r\n backgroundColor: 'white',\r\n borderRadius: '8px',\r\n }),\r\n ...pseudo(['::-webkit-progress-value'], {\r\n backgroundColor: theme.iconLightBlue,\r\n borderRadius: '8px',\r\n }),\r\n ...pseudo(['::-webkit-progress-bar'], {\r\n backgroundColor: 'white',\r\n borderRadius: '8px',\r\n }),\r\n});\r\n\r\nconst LoadMoreButton = styled(CtaButton, {\r\n maxWidth: '365px',\r\n width: '100%',\r\n position: 'relative',\r\n alignItems: 'center',\r\n fontSize: theme.tau,\r\n padding: { xy: theme.spacing(3) },\r\n minHeight: '40px',\r\n margin: { x: theme.spacing(4), top: theme.spacing(4) },\r\n ...media(mediaQuery.mediaMinLarge, {\r\n padding: { xy: theme.spacing(4) },\r\n width: '365px',\r\n }),\r\n});\r\n\r\nconst ButtonText = styled.span({\r\n color: theme.white,\r\n fontSize: '15px',\r\n transform: 'uppercase',\r\n transition: {\r\n property: 'all',\r\n duration: '0.2s',\r\n timingFunction: 'linear',\r\n },\r\n ...pseudo([':nth-child(n)[data-isloading=\"true\"]'], {\r\n visibility: 'hidden',\r\n opacity: 0,\r\n }),\r\n});\r\n\r\nconst StyledLoadingCircle = styled(LoadingCircle, {\r\n color: theme.white,\r\n height: theme.gamma,\r\n margin: { xy: 'auto' },\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n});\r\n","import React, { useRef } from 'react';\r\nimport useOnScreen from '../../Shared/Hooks/useOnScreen';\r\nimport { StyledProps } from '@glitz/react';\r\nimport { styled } from '../../Theme';\r\n\r\ntype PropType = StyledProps & {\r\n src: string;\r\n alt: string;\r\n imgFit?: boolean;\r\n onLoad?: () => void;\r\n usePlaceHolder?: boolean;\r\n title?: string;\r\n lazy?: boolean;\r\n};\r\n\r\nconst Image = ({\r\n src,\r\n alt = '',\r\n onLoad,\r\n usePlaceHolder,\r\n title = '',\r\n lazy = true,\r\n compose,\r\n}: PropType) => {\r\n const ref = useRef(null);\r\n const onScreen = useOnScreen({ ref });\r\n\r\n return onScreen || !lazy ? (\r\n \r\n ) : usePlaceHolder ? (\r\n \r\n ) : (\r\n \r\n );\r\n};\r\n\r\nexport default Image;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { styled, theme } from '../Theme';\r\nimport Image from '../Shared/Image/Image';\r\nimport { LoadingCircle } from '../Shared/Icons';\r\nimport { useAppSettingsData } from '../Shared/AppSettingsProvider/AppSettingsProvider';\r\nimport { UpdateCart } from '../Cart/Cart';\r\nimport ProductCardModel from './Models/ProductCardModel.interface';\r\nimport CtaButton from '../Shared/CtaButton/CtaButton';\r\nimport { pseudo, media } from '@glitz/core';\r\nimport { mediaQuery } from '../Theme/mediaQueries';\r\nimport PlusToggleIcon from '../Shared/Icons/PlusToggleIcon';\r\nimport MinusToggleIcon from '../Shared/Icons/MinusToggleIcon';\r\nimport CheckIcon from '../Shared/Icons/CheckIcon';\r\nimport KexLink from '../Shared/KexLink/KexLink';\r\n\r\ntype ProductCardType = {\r\n item: ProductCardModel;\r\n inEditMode?: Boolean;\r\n isPlanogram?: boolean;\r\n};\r\n\r\nfunction ProductCard({\r\n item: {\r\n image,\r\n name,\r\n code,\r\n url,\r\n price,\r\n quantity,\r\n inStock,\r\n mainCategory,\r\n unitPrice,\r\n },\r\n isPlanogram = false,\r\n}: ProductCardType) {\r\n const {\r\n translations: {\r\n 'productPage/addToCart': addToCartLabel,\r\n 'productPage/inStock': inStockLabel,\r\n 'productPage/notInStock': notInStockLabel,\r\n 'common/quantity': quantityLabel,\r\n 'common/perPackage': perPackageLabel,\r\n 'common/unitPrice': unitPriceLabel,\r\n 'common/piece': pieceLabel,\r\n 'common/moreInformation': moreInformationLabel,\r\n 'productPage/addedToCart': addedToCartLabel,\r\n },\r\n placeholderImages: {\r\n productPlaceholder: productPlaceholderImg,\r\n planogramPlaceholder: planogramPlaceholderImg,\r\n },\r\n languageRoute,\r\n } = useAppSettingsData();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [inputQuantity, setInputQuantity] = useState('1');\r\n const [itemAdded, setItemAdded] = useState(false);\r\n\r\n const onInputChange = (value: string) => {\r\n if (Number(value) < 0) {\r\n setInputQuantity('1');\r\n return;\r\n }\r\n setInputQuantity(value);\r\n };\r\n\r\n const onInputBlur = (numb: string) => {\r\n Number(numb) < 1 && setInputQuantity('1');\r\n };\r\n\r\n const addToCart = () => {\r\n const updated = UpdateCart(\r\n code,\r\n Number(inputQuantity),\r\n languageRoute,\r\n '',\r\n setIsLoading\r\n );\r\n if (updated) {\r\n setItemAdded(true);\r\n setTimeout(() => {\r\n setItemAdded(false);\r\n }, 2000);\r\n }\r\n };\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n {inStock ? (\r\n <>\r\n \r\n {inStockLabel}\r\n >\r\n ) : (\r\n <>\r\n \r\n {notInStockLabel}\r\n >\r\n )}\r\n \r\n \r\n \r\n {mainCategory}\r\n {name}\r\n \r\n \r\n {price}\r\n /{perPackageLabel}\r\n \r\n \r\n \r\n \r\n {quantityLabel}/{perPackageLabel}: \r\n \r\n \r\n {quantity}\r\n {pieceLabel}\r\n \r\n \r\n \r\n {unitPriceLabel}: \r\n {unitPrice}:-\r\n \r\n \r\n \r\n {inStock && (\r\n \r\n {!isPlanogram ? (\r\n <>\r\n \r\n \r\n setInputQuantity(\r\n (Number(inputQuantity) - 1).toString()\r\n )\r\n }\r\n >\r\n \r\n \r\n onInputChange(e.target.value)}\r\n onBlur={e => onInputBlur(e.target.value)}\r\n />\r\n \r\n setInputQuantity(\r\n (Number(inputQuantity) + 1).toString()\r\n )\r\n }\r\n >\r\n \r\n \r\n \r\n addToCart()}>\r\n \r\n {addToCartLabel}\r\n \r\n {isLoading && (\r\n \r\n )}\r\n {itemAdded && !isLoading && (\r\n \r\n {addedToCartLabel}\r\n \r\n \r\n )}\r\n \r\n >\r\n ) : (\r\n \r\n {moreInformationLabel}\r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n \r\n >\r\n );\r\n}\r\nconst Card = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n position: 'relative',\r\n backgroundColor: theme.white,\r\n overflow: 'hidden',\r\n borderRadius: '10px',\r\n minWidth: theme.none,\r\n width: '100%',\r\n transition: {\r\n property: 'box-shadow',\r\n },\r\n ...media(mediaQuery.mediaMinLarge, {\r\n ':hover': {\r\n boxShadow: '0px 4px 50px rgba(0, 0, 0, 0.2)',\r\n },\r\n }),\r\n});\r\n\r\nconst ImageArea = styled(KexLink, {\r\n position: 'relative',\r\n backgroundColor: theme.veryLightGray,\r\n});\r\n\r\nconst ProductImage = styled(Image, {\r\n height: '135px',\r\n width: '96px',\r\n margin: { x: 'auto', y: theme.spacing(3) },\r\n objectFit: 'contain',\r\n});\r\n\r\nconst StyledCheckIcon = styled(CheckIcon, {\r\n height: '14px',\r\n width: '14px',\r\n marginLeft: '8px',\r\n});\r\n\r\nconst StockStatus = styled.div({\r\n display: 'flex',\r\n alignItems: 'center',\r\n position: 'absolute',\r\n bottom: 0,\r\n padding: { y: '7px', x: '10px' },\r\n backgroundColor: theme.white,\r\n borderTopRightRadius: '20px',\r\n borderBottomRightRadius: '20px',\r\n margin: { bottom: theme.spacing(3) },\r\n});\r\n\r\nconst StockStatusCircle = styled.div({\r\n borderRadius: '50%',\r\n width: '8px',\r\n height: '8px',\r\n backgroundColor: theme.notInStockRed,\r\n marginRight: theme.spacing(2),\r\n ...pseudo([':nth-child(n)[data-instock=\"true\"]'], {\r\n backgroundColor: theme.inStockGreen,\r\n }),\r\n});\r\n\r\nconst StockStatusText = styled.span({\r\n color: theme.black,\r\n font: { size: theme.alpha, weight: theme.fontWeight.bold },\r\n textTransform: 'uppercase',\r\n});\r\n\r\nconst ItemAddedText = styled.div({\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: theme.white,\r\n height: theme.gamma,\r\n margin: { xy: 'auto' },\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n});\r\n\r\nconst ProductCardInfo = styled.div({\r\n padding: {\r\n xy: '10px',\r\n },\r\n backgroundColor: theme.white,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '100%',\r\n});\r\n\r\nconst ProductSection = styled.p({\r\n fontSize: theme.large,\r\n color: theme.middleGray,\r\n lineHeight: '14.4px',\r\n});\r\n\r\nconst ProductName = styled.p({\r\n font: { size: '20px', weight: theme.fontWeight.bold },\r\n color: theme.black,\r\n lineHeight: '21.6px',\r\n margin: {\r\n top: theme.small,\r\n bottom: theme.large,\r\n },\r\n});\r\n\r\nconst PriceContainer = styled.div({\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n margin: {\r\n top: 'auto',\r\n bottom: theme.small,\r\n },\r\n});\r\n\r\nconst MainPriceContainer = styled.div({\r\n display: 'flex',\r\n alignItems: 'center',\r\n});\r\n\r\nconst QuantityPriceWrapper = styled.div({\r\n fontSize: '15px',\r\n display: 'flex',\r\n justifyContent: 'end',\r\n ...pseudo(':not(:last-child)', { marginBottom: theme.medium }),\r\n});\r\n\r\nconst Price = styled.span({\r\n font: {\r\n size: theme.moreLarge,\r\n weight: theme.fontWeight.boldest,\r\n },\r\n marginTop: theme.spacing(2),\r\n lineHeight: theme.lineHeight.tight,\r\n letterSpacing: theme.letterSpacing.wider,\r\n color: theme.black,\r\n});\r\n\r\nconst PerPackageText = styled.p({\r\n marginTop: theme.spacing(4),\r\n fontSize: '12px',\r\n marginLeft: '3px',\r\n});\r\n\r\nconst QuantityText = styled.span({\r\n color: theme.middleGray,\r\n fontSize: theme.large,\r\n});\r\n\r\nconst AddToCartButton = styled(CtaButton, {\r\n position: 'relative',\r\n alignItems: 'center',\r\n width: '100%',\r\n fontSize: theme.tau,\r\n padding: { xy: '10px' },\r\n marginLeft: theme.spacing(2),\r\n minHeight: '40px',\r\n ...media(mediaQuery.mediaMinLarge, {\r\n padding: { xy: theme.spacing(3) },\r\n }),\r\n});\r\n\r\nconst MoreInfoButton = styled(CtaButton, {\r\n position: 'relative',\r\n alignItems: 'center',\r\n width: '100%',\r\n fontSize: theme.tau,\r\n padding: { xy: '10px' },\r\n minHeight: '40px',\r\n ...media(mediaQuery.mediaMinLarge, {\r\n padding: { xy: theme.spacing(3) },\r\n }),\r\n});\r\n\r\nconst ButtonText = styled.span({\r\n transition: {\r\n property: 'all',\r\n duration: '0.2s',\r\n timingFunction: 'linear',\r\n },\r\n ...pseudo([':nth-child(n)[data-isloading=\"true\"]'], {\r\n visibility: 'hidden',\r\n opacity: 0,\r\n }),\r\n});\r\n\r\nconst AddToCart = styled.div({\r\n display: 'flex',\r\n alignItems: 'center',\r\n verticalAlign: 'bottom',\r\n backgroundColor: theme.primaryBackground,\r\n padding: { xy: theme.spacing(3) },\r\n});\r\n\r\nconst StyledPlusIcon = styled(PlusToggleIcon, {\r\n height: '18px',\r\n width: '18px',\r\n fill: theme.black,\r\n});\r\n\r\nconst StyledMinusIcon = styled(MinusToggleIcon, {\r\n height: '18px',\r\n width: '18px',\r\n fill: theme.black,\r\n});\r\n\r\nconst QuantitySelector = styled.div({\r\n backgroundColor: theme.white,\r\n borderRadius: '100px',\r\n display: 'flex',\r\n height: '40px',\r\n alignItems: 'center',\r\n padding: { x: theme.spacing(3) },\r\n});\r\n\r\nconst MinusButton = styled.button({\r\n ':disabled': {\r\n cursor: 'default',\r\n opacity: 0.6,\r\n },\r\n});\r\n\r\nconst QuantityInput = styled.input({\r\n width: theme.spacing(7),\r\n backgroundColor: theme.white,\r\n textAlign: 'center',\r\n MozAppearance: 'textfield', // hide number arrows Firefox\r\n ...pseudo(['::-webkit-outer-spin-button', '::-webkit-inner-spin-button'], {\r\n WebkitAppearance: 'none', // hide number arrows Chrome, Safari, Edge, Opera\r\n margin: { xy: 0 },\r\n }),\r\n});\r\n\r\nconst Root = styled.div({\r\n gridColumnEnd: 'span 4',\r\n display: 'flex',\r\n width: '100%',\r\n minWidth: theme.none,\r\n borderRadius: '10px',\r\n ...media(theme.mediaQuery.mediaMinSmall, {\r\n gridColumnEnd: 'span 2',\r\n gridGap: theme.tiny,\r\n }),\r\n ...media(theme.mediaQuery.mediaMinLarge, {\r\n gridColumnEnd: 'span 6',\r\n }),\r\n ...media(theme.mediaQuery.mediaMinHuge, {\r\n gridColumnEnd: 'span 4',\r\n }),\r\n ...media(theme.mediaQuery.mediaMinScreen, {\r\n gridColumnEnd: 'span 3',\r\n }),\r\n});\r\n\r\nconst StyledLoadingCircle = styled(LoadingCircle, {\r\n color: theme.white,\r\n height: theme.gamma,\r\n margin: { xy: 'auto' },\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n});\r\n\r\nexport default ProductCard;\r\n","import React, { useState, useEffect } from 'react';\r\nimport SearchPageModel from './Models/SearchPageModel.interface';\r\nimport useCurrentPage from '../Shared/Hooks/useCurrentPage';\r\nimport { InitSearchResult } from './Search';\r\nimport { styled, theme } from '../Theme';\r\nimport CardGrid from '../Shared/Grid/CardGrid';\r\nimport ProductCard from '../ProductCard/ProductCard';\r\nimport Dots from '../Shared/Button/Dots';\r\nimport { media, pseudo } from '@glitz/core';\r\nimport { useAppSettingsData } from '../Shared/AppSettingsProvider/AppSettingsProvider';\r\nimport { getUrlParameter } from '../Shared/Common/Helpers';\r\nimport {\r\n EventDispatcher,\r\n ON_SEARCH,\r\n ON_MOBILE_SEARCH_OPEN_CHANGE,\r\n ON_SEARCH_MODAL_OPEN_CHANGE,\r\n} from '../Shared/Common/EventDispatcher';\r\nimport ProductCardModel from '../ProductCard/Models/ProductCardModel.interface';\r\nimport KexLink from '../../Features/Shared/KexLink/KexLink';\r\nimport { mediaQuery } from '../Theme/mediaQueries';\r\nimport FullSearchResult from '../Search/Models/FullSearchResult.interface';\r\nimport { useKexLoadingCircle } from '../Shared/Loading/KexLoadingCircle/KexLoadingCircle';\r\nimport { useUserStateData } from '../Shared/UserContextProvider/UserContextProvider';\r\nimport LoadMoreContainer from '../Shared/LoadMoreContainer/LoadMoreContainer';\r\n\r\nfunction SearchPage() {\r\n const {\r\n translations: {\r\n 'search/pages': pagesLabel,\r\n 'searchPage/provideQuery': provideQueryLabel,\r\n 'searchPage/searchResultsFor': searchResultsForLabel,\r\n 'common/filter': filterLabel,\r\n 'common/sector': sectorLabel,\r\n 'search/noResults': noResultsLabel,\r\n 'searchPage/products': products,\r\n 'search/planogram': planogramLabel,\r\n 'search/loadMore': loadMoreLabel,\r\n 'search/category': categoryLabel,\r\n 'searchPage/counter': counter,\r\n 'common/showMore': showMoreLabel,\r\n },\r\n staticPages: { searchPage },\r\n languageRoute,\r\n requestToken,\r\n } = useAppSettingsData();\r\n\r\n const { organizationId } = useUserStateData();\r\n const dispatchLoading = useKexLoadingCircle();\r\n const { pageTitle, channelId, pageId, itemsPerLoad } = useCurrentPage<\r\n SearchPageModel\r\n >();\r\n const [isSearching, setIsSearching] = useState(false);\r\n const [searchModalIsOpen, setSearchModalIsOpen] = useState(false);\r\n const [searchResult, setSearchResult] = useState();\r\n const [isLoadingMore, setIsLoadingMore] = useState(false);\r\n const [visibleProducts, setVisibleProducts] = useState();\r\n const [visiblePlanograms, setVisiblePlanograms] = useState<\r\n ProductCardModel[]\r\n >();\r\n const [nrOfVisibleProducts, setNrOfVisibleProducts] = useState(itemsPerLoad);\r\n const [nrOfVisiblePlanograms, setNrOfVisiblePlanograms] = useState(\r\n itemsPerLoad\r\n );\r\n\r\n const showLoadMoreProducts =\r\n searchResult &&\r\n searchResult?.productSearchResult?.numberOfItems > itemsPerLoad;\r\n const showLoadMorePlanograms =\r\n searchResult &&\r\n searchResult?.planogramSearchResult?.numberOfItems > itemsPerLoad;\r\n\r\n const onSearch = (value: boolean) => {\r\n setIsSearching(value);\r\n };\r\n\r\n const onSearchModalChange = (isOpen: boolean) => {\r\n setSearchModalIsOpen(isOpen);\r\n };\r\n\r\n useEffect(() => {\r\n EventDispatcher.subscribe(ON_SEARCH, onSearch);\r\n EventDispatcher.subscribe(\r\n ON_MOBILE_SEARCH_OPEN_CHANGE,\r\n onSearchModalChange\r\n );\r\n EventDispatcher.subscribe(ON_SEARCH_MODAL_OPEN_CHANGE, onSearchModalChange);\r\n return () => {\r\n EventDispatcher.unsubscribe(ON_SEARCH, onSearch);\r\n EventDispatcher.unsubscribe(\r\n ON_SEARCH_MODAL_OPEN_CHANGE,\r\n onSearchModalChange\r\n );\r\n EventDispatcher.unsubscribe(\r\n ON_MOBILE_SEARCH_OPEN_CHANGE,\r\n onSearchModalChange\r\n );\r\n };\r\n });\r\n\r\n var query = getUrlParameter('searchQuery');\r\n\r\n useEffect(() => {\r\n dispatchLoading('add');\r\n InitSearchResult(\r\n query,\r\n requestToken,\r\n organizationId,\r\n pageId,\r\n channelId,\r\n languageRoute\r\n ).then(data => {\r\n setSearchResult(data);\r\n if (\r\n data?.productSearchResult &&\r\n data.productSearchResult?.numberOfItems > 0\r\n ) {\r\n let sliced = data.productSearchResult?.items.slice(0, itemsPerLoad);\r\n setVisibleProducts(sliced);\r\n } else {\r\n setVisibleProducts(undefined);\r\n }\r\n if (\r\n data?.planogramSearchResult &&\r\n data.planogramSearchResult?.numberOfItems > 0\r\n ) {\r\n let sliced = data.planogramSearchResult?.items.slice(0, itemsPerLoad);\r\n setVisiblePlanograms(sliced);\r\n } else {\r\n setVisiblePlanograms(undefined);\r\n }\r\n });\r\n dispatchLoading('remove');\r\n }, [query]);\r\n\r\n const noSearchResult =\r\n !searchResult?.contentSearchResult &&\r\n !searchResult?.productSearchResult &&\r\n ((searchResult?.categoryMatch && !!!searchResult?.categoryMatch.length) ||\r\n !searchResult?.categoryMatch) &&\r\n !searchResult?.planogramSearchResult;\r\n\r\n const loadMoreProducts = () => {\r\n if (searchResult) {\r\n setIsLoadingMore(true);\r\n\r\n let sliced = searchResult.productSearchResult?.items.slice(\r\n nrOfVisibleProducts,\r\n nrOfVisibleProducts + itemsPerLoad\r\n );\r\n let itemsToShow = visibleProducts?.concat(sliced);\r\n\r\n setVisibleProducts(itemsToShow);\r\n setIsLoadingMore(false);\r\n nrOfVisibleProducts &&\r\n setNrOfVisibleProducts(nrOfVisibleProducts + itemsPerLoad);\r\n }\r\n };\r\n\r\n const loadMorePlanograms = () => {\r\n if (searchResult) {\r\n setIsLoadingMore(true);\r\n\r\n let sliced = searchResult.planogramSearchResult?.items.slice(\r\n nrOfVisiblePlanograms,\r\n nrOfVisiblePlanograms + itemsPerLoad\r\n );\r\n let itemsToShow = visiblePlanograms?.concat(sliced);\r\n\r\n setVisiblePlanograms(itemsToShow);\r\n setIsLoadingMore(false);\r\n nrOfVisiblePlanograms &&\r\n setNrOfVisiblePlanograms(nrOfVisiblePlanograms + itemsPerLoad);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n <>\r\n {isSearching && !searchModalIsOpen ? (\r\n \r\n \r\n \r\n ) : !noSearchResult ? (\r\n \r\n \r\n {query ? searchResultsForLabel : provideQueryLabel}\r\n \r\n {query && {query}}\r\n \r\n ) : (\r\n \r\n \r\n {query ? noResultsLabel : provideQueryLabel}\r\n \r\n \r\n )}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n {searchResult?.contentSearchResult?.items && (\r\n \r\n {`${\r\n searchResult?.contentSearchResult?.items.length\r\n }${' '}${pagesLabel}`}\r\n \r\n {searchResult?.contentSearchResult?.items.map(\r\n item =>\r\n item.src && (\r\n \r\n {item.name}\r\n \r\n )\r\n )}\r\n \r\n \r\n )}\r\n {searchResult?.categoryMatch &&\r\n !!searchResult?.categoryMatch.length && (\r\n \r\n {`${\r\n searchResult?.categoryMatch?.length\r\n }${' '}${categoryLabel}`}\r\n \r\n {searchResult?.categoryMatch?.map(\r\n item =>\r\n item.url && (\r\n \r\n {item.name}\r\n \r\n )\r\n )}\r\n \r\n \r\n )}\r\n {searchResult &&\r\n searchResult?.planogramSearchResult?.numberOfItems > 0 && (\r\n \r\n {`${\r\n searchResult?.planogramSearchResult?.items.length\r\n }${' '}${planogramLabel}`}\r\n \r\n {visiblePlanograms &&\r\n !!visiblePlanograms.length &&\r\n visiblePlanograms.map(\r\n item =>\r\n item.url && (\r\n \r\n )\r\n )}\r\n \r\n {showLoadMorePlanograms && visiblePlanograms && (\r\n loadMorePlanograms()}\r\n availableItems={\r\n searchResult?.planogramSearchResult?.numberOfItems\r\n }\r\n disabled={\r\n searchResult &&\r\n nrOfVisiblePlanograms >=\r\n searchResult?.planogramSearchResult?.numberOfItems\r\n }\r\n isPlanograms={true}\r\n />\r\n )}\r\n \r\n )}\r\n {searchResult &&\r\n searchResult?.productSearchResult?.numberOfItems > 0 && (\r\n \r\n {`${\r\n searchResult?.productSearchResult?.items.length\r\n }${' '}${products}`}\r\n \r\n {visibleProducts &&\r\n !!visibleProducts.length &&\r\n visibleProducts.map(\r\n item =>\r\n item.url && (\r\n \r\n )\r\n )}\r\n \r\n {showLoadMoreProducts && visibleProducts && (\r\n loadMoreProducts()}\r\n availableItems={\r\n searchResult?.productSearchResult?.numberOfItems\r\n }\r\n disabled={\r\n searchResult &&\r\n nrOfVisibleProducts >=\r\n searchResult?.productSearchResult?.numberOfItems\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 SearchPage;\r\n\r\nconst Main = styled.main({\r\n backgroundColor: theme.primaryBackground,\r\n});\r\n\r\nconst StyledCardGrid = styled(CardGrid, { maxWidth: theme.screenMaxWidth });\r\n\r\nconst ProductCardGrid = styled(CardGrid, {\r\n paddingTop: '22px',\r\n maxWidth: theme.screenMaxWidth,\r\n paddingBottom: '42px',\r\n});\r\n\r\nconst SearchResultSpan = styled.span({\r\n fontSize: theme.delta,\r\n lineHeight: '22px',\r\n marginBottom: theme.spacing(2),\r\n});\r\n\r\nconst SearchQuery = styled.q({\r\n font: { size: theme.psi, weight: theme.fontWeight.bold },\r\n color: theme.black,\r\n lineHeight: '32px',\r\n});\r\n\r\nconst TopSection = styled.div({\r\n paddingTop: theme.spacing(11),\r\n paddingBottom: theme.spacing(13),\r\n});\r\n\r\nconst BottomSection = styled.div({\r\n margin: { x: theme.spacing(4), bottom: theme.spacing(8) },\r\n ...media(theme.mediaQuery.mediaMinLarge, {\r\n display: 'flex',\r\n padding: { x: theme.spacing(2) },\r\n }),\r\n});\r\n\r\nconst SearchResultContainer = styled.div({\r\n gridColumnEnd: 'span 4',\r\n ...media(theme.mediaQuery.mediaMinSmall, {\r\n gridColumnEnd: 'span 6',\r\n }),\r\n ...media(theme.mediaQuery.mediaMinLarge, {\r\n gridColumnStart: '2',\r\n gridColumnEnd: 'span 12',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n padding: { x: theme.spacing(2) },\r\n }),\r\n ...media(theme.mediaQuery.mediaMinHuge, {\r\n gridColumnStart: '3',\r\n }),\r\n ...media(theme.mediaQuery.mediaMinScreen, {\r\n gridColumnStart: '4',\r\n }),\r\n});\r\n\r\nconst DotsWrapper = styled.div({\r\n display: 'flex',\r\n justifyContent: 'center',\r\n paddingBottom: theme.spacing(9),\r\n});\r\n\r\nconst Divider = styled.div({\r\n borderBottom: { width: '1px', style: 'solid', color: theme.grayLine },\r\n marginBottom: theme.spacing(10),\r\n ...pseudo([':nth-child(n)[data-thicker=\"true\"]'], {\r\n marginTop: theme.spacing(6),\r\n border: {\r\n xy: { width: '1px', style: 'solid', color: theme.grayLine },\r\n },\r\n }),\r\n ...media(mediaQuery.mediaMinLarge, {\r\n marginBottom: theme.spacing(19),\r\n }),\r\n});\r\n\r\nconst QueryHeader = styled.h1({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n});\r\n\r\nconst PageResultContainer = styled.div({});\r\n\r\nconst PageResultItemsContainer = styled.div({\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n padding: { y: theme.spacing(5.5) },\r\n});\r\n\r\nconst PageResultHeading = styled.span({ fontSize: '22px', color: theme.black });\r\n\r\nconst PageResultItem = styled(KexLink, {\r\n display: 'flex',\r\n borderRadius: '50px',\r\n backgroundColor: theme.lightBlue,\r\n color: theme.primaryBlue,\r\n padding: { y: theme.spacing(4), x: theme.spacing(2) },\r\n marginRight: theme.spacing(5),\r\n marginBottom: theme.spacing(5),\r\n ':active': { backgroundColor: theme.primaryBlue, color: theme.white },\r\n textTransform: 'uppercase',\r\n ...media(mediaQuery.mediaMinLarge, {\r\n ':hover': { backgroundColor: theme.lightBlueHover },\r\n ':active': { backgroundColor: theme.primaryBlue, color: theme.white },\r\n }),\r\n});\r\n\r\nconst PageResultItemText = styled.div({\r\n padding: { x: theme.spacing(4) },\r\n font: { size: theme.beta, weight: theme.fontWeight.bold },\r\n lineHeight: '14px',\r\n});\r\n","import { useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { IS_SERVER_CONTEXT } from '../Configs/EnvConfig';\r\n\r\nconst useOnScreen = ({ ref, rootMargin = '0px', once = true }) => {\r\n const [isIntersecting, setIntersecting] = useState(false);\r\n const [observerObject, setObserverObject] = useState(false);\r\n\r\n useEffect(() => {\r\n const elm = ref.current;\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n setIntersecting(entry.isIntersecting);\r\n },\r\n {\r\n rootMargin,\r\n }\r\n );\r\n if (elm) {\r\n observer.observe(elm);\r\n }\r\n setObserverObject(observer);\r\n return () => {\r\n !Object.isEmpty(elm) && observer.unobserve(elm);\r\n };\r\n }, [ref, rootMargin]);\r\n\r\n if (\r\n once &&\r\n isIntersecting &&\r\n observerObject &&\r\n !Object.isEmpty(ref.current)\r\n ) {\r\n observerObject.unobserve(ref.current);\r\n }\r\n\r\n return IS_SERVER_CONTEXT ? true : isIntersecting;\r\n};\r\n\r\nuseOnScreen.propTypes /* remove-proptypes */ = {\r\n ref: PropTypes.shape({ current: PropTypes.element }),\r\n rootMargin: PropTypes.string,\r\n once: PropTypes.bool,\r\n};\r\n\r\nexport default useOnScreen;\r\n","import React from 'react';\r\nimport { styled, theme } from '../../Theme';\r\nimport { pseudo } from '@glitz/core';\r\n\r\ntype DotsType = {\r\n color?: string;\r\n lineHeight?: string;\r\n};\r\n\r\nfunction Dots({ color, lineHeight }: DotsType) {\r\n return (\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\nexport default Dots;\r\n\r\n// const Wrapper = styled.div({});\r\n\r\nconst Dot = styled.div({\r\n display: 'inline-block',\r\n font: { size: theme.massive },\r\n animationName: {\r\n '0%': {\r\n opacity: '.2',\r\n },\r\n '20%': {\r\n opacity: '1',\r\n },\r\n '100%': {\r\n opacity: '.2',\r\n },\r\n },\r\n animationDuration: theme.timings.sevenFifths,\r\n animationIterationCount: 'infinite',\r\n animationFillMode: 'both',\r\n ...pseudo(':nth-child(2)', {\r\n animationDelay: theme.timings.oneFifth,\r\n }),\r\n ...pseudo(':nth-child(3)', {\r\n animationDelay: theme.timings.twoFifths,\r\n }),\r\n});\r\n"],"sourceRoot":""}