{"version":3,"sources":["Enums/LinkType.enum.ts","Shared/Icons/TrashIcon.tsx","Shared/Hooks/useOutsideClick.ts","SearchPage/Search.ts","LoginPage/Account.ts","Shared/Icons/SignInIcon.tsx","Shared/Configs/CssConfig.js","Shared/Hooks/useLockBodyScroll.js","SearchModal/SearchModal.tsx","Shared/Common/Overlay.tsx","SearchPage/SearchInput.tsx","Shared/Icons/SignOutIcon.tsx","Shared/Icons/ShoppingBasket.tsx","MiniCart/MiniCartModal.tsx","Shared/Models/Headers/HeaderIconLink/HeaderIconLink.tsx","Cart/Cart.ts","Shared/CtaButton/CtaButton.tsx","Shared/Icons/ContactIcon.tsx","Shared/Icons/ProfileIcon.tsx","Shared/Button/Dots.tsx"],"names":["LinkType","styled","compose","Svg","width","height","viewBox","fill","xmlns","css","d","strokeLinecap","strokeLinejoin","useOutsideClick","ref","callback","handleClick","e","current","contains","target","useEffect","document","addEventListener","removeEventListener","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","SignIn","userCredentials","setError","setValidationMessage","setIsLoading","myPageUrl","accountUrl","language","fetch","method","headers","RequestVerificationToken","body","json","statusCode","updateRequestVerificationToken","updateHeader","updateUserState","message","SignOut","EmptyCart","redirectUrl","window","location","href","fillRule","clipRule","mdUp","screenSmMin","screenMdMin","screenLgMin","activeUseLockBodyScrolls","useLockBodyScroll","mediaQuery","lock","mediaQueryIsTrue","useMedia","useLayoutEffect","scrollPosition","rootEle","getElementById","header","id","Date","valueOf","pageYOffset","style","top","matchMedia","matches","classList","add","idScrollPos","Object","isEmpty","remove","scrollTo","SearchResultModalContainer","div","position","left","theme","spacing","right","bottom","overflowX","overflowY","zIndex","backgroundColor","white","borderRadius","media","mediaMinLarge","maxWidth","desktopSearchModalMaxWidth","margin","x","maxHeight","desktopSearchModalMaxHeight","ModalTabsWrapper","display","flexDirection","SearchResultWrapper","borderRight","tiny","color","veryLightGray","pseudo","StyledLink","KexLink","fontSize","gamma","linkColor","textDecoration","lineHeight","padding","y","ShowAllResultsButton","CtaButton","ListItem","li","ResultCategory","font","size","beta","weight","fontWeight","bold","lightBlue","primaryBlue","textTransform","ResultList","ul","listStyle","DotsWrapper","justifyContent","paddingBottom","NoResultsWrapper","Divider","borderBottom","grayLine","BottomSection","marginTop","ButtonContainer","paddingTop","boxShadow","marginLeft","SearchModal","searchResult","isOpen","currentSearchPhrase","setInputActive","onSearchResultChange","useState","isSearching","setIsSearching","isDesktop","useAppSettingsData","translations","showAllSearchResultsLabel","pagesLabel","productsLabel","categoryLabel","planogramLabel","noResultsLabel","authenticated","useUserStateData","onSearch","value","searchModalRef","useRef","ON_SEARCH_MODAL_OPEN_CHANGE","noSearchResult","contentSearchResult","categoryMatch","length","planogramSearchResult","subscribe","unsubscribe","onResultItemClick","ON_MOBILE_SEARCH_OPEN_CHANGE","undefined","availableItems","map","item","key","name","onClick","data-fullwidth","src","ON_MODAL_SEARCH","Overlay","clickEvnt","OverlayDiv","black","transition","property","timingFunction","duration","animationName","opacity","animationFillMode","animationDuration","timings","oneThird","desktopHeaderHeight","typeTimer","InputWrapper","alignItems","mobileHeaderTopSectionHeight","border","xy","iconLightBlue","InputField","input","outlineStyle","breadText","placeholder","CloseIconWrapper","cursor","StyledCloseIcon","CloseIcon","SearchInput","isActive","setIsActive","modalOpen","inputValue","setInputValue","placeholderText","searchPage","staticPages","useCurrentPage","inputRef","kexNavigate","useKexNavigate","baseUrl","doSearch","blur","onInputChange","useCallback","clearTimeout","setTimeout","then","catch","data-isactive","onChange","currentTarget","onKeyDown","type","autoFocus","onFocus","focus","stroke","strokeMiterlimit","Container","mediaMinMedium","Modal","mediaMaxMedium","FirstLevel","epsilon","paddingLeft","nearGreat","marginBottom","delta","Head","span","EmptyCartContainer","medium","TextLink","button","StyledTrashIcon","TrashIcon","marginRight","TotalProducts","SecondLevel","primaryBackground","Price","PriceHeading","TotalPrice","StyledCtaButton","textAlign","minWidth","MiniCartModal","GetCart","cart","miniCartModalRef","isLoading","headingLabel","totalProductsLabel","totalSumLabel","goToCartLabel","emptyCartLabel","checkoutPage","amountOfProductsText","replace","lineItems","numberOfItems","lineItem","quantity","getNumberOfCartItems","toString","ON_MINICART_OPEN_CHANGE","totalPrice","asLink","disabled","StyledKexLink","StyledCartButton","IconWrapper","ProductCircle","ProductCircleAmount","p","primaryDarkBlue","Text","letterSpacing","tau","IconLinkContainer","flexBasis","StyledContactIcon","ContactIcon","headerIconGray","StyledSignInIcon","SignInIcon","StyledSignOutIcon","SignOutIcon","StyledProfileIcon","ProfileIcon","StyledShoppingBasket","ShoppingBasket","HeaderIconLink","linkType","label","miniCartIsOpen","isHovered","setIsHovered","amountOfProducts","Icon","Contact","MiniCart","MyPages","iconHoveredStyle","onMouseOver","onMouseLeave","hasMounted","cartUrl","requestVerificationToken","setCart","pageCacheTime","fectchedCart","useSWR","FetchCart","initialData","revalidateOnFocus","IS_PRODUCTION_ENV","dedupingInterval","RemoveFromCart","productCode","ok","notification","NOTIFY_ACTION","mutate","UpdateCart","bookingNumber","updateQuantity","SetQuantity","Button","alpha","Link","ButtonText","LinkText","children","data-disabled","Dots","Dot","primary","massive","sevenFifths","animationIterationCount","animationDelay","oneFifth","twoFifths"],"mappings":"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","file":"Dist/build-client/static/js/1.df655215.chunk.js","sourcesContent":["export enum LinkType {\r\n Arrow = 'arrow',\r\n Document = 'document',\r\n SignIn = 'signIn',\r\n SignOut = 'signOut',\r\n Contact = 'contact',\r\n MyPages = 'myPages',\r\n MiniCart = 'miniCart',\r\n}\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\n\r\nfunction TrashIcon({ compose }: StyledProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(TrashIcon);\r\n","import { useEffect } from 'react';\r\n\r\nconst useOutsideClick = (ref: React.RefObject, callback: () => void) => {\r\n const handleClick = (e: MouseEvent) => {\r\n if (ref.current && !ref.current.contains(e.target)) {\r\n callback();\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n document.addEventListener('click', handleClick);\r\n\r\n return () => {\r\n document.removeEventListener('click', handleClick);\r\n };\r\n });\r\n};\r\n\r\nexport default useOutsideClick;\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 UserCredentials from '../LoginPage/Models/UserCredentials.interface';\r\nimport { updateHeader } from '../Shared/Models/Headers/useQueryHeader';\r\nimport { updateUserState } from '../Shared/UserContextProvider/useQueryUserState';\r\nimport { EmptyCart } from '../Cart/Cart';\r\n\r\nexport async function SignIn(\r\n userCredentials: UserCredentials,\r\n requestToken: string,\r\n channelId: string,\r\n setError: (value: boolean) => void,\r\n setValidationMessage: (value: string) => void,\r\n setIsLoading: (value: boolean) => void,\r\n myPageUrl: string\r\n) {\r\n setIsLoading(true);\r\n setError(false);\r\n setValidationMessage('');\r\n const accountUrl = `/api/${userCredentials.language}/account/`;\r\n const res = await fetch(`${accountUrl}SignIn`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'litium-request-context': JSON.stringify({\r\n channelSystemId: channelId,\r\n }),\r\n RequestVerificationToken: requestToken,\r\n },\r\n body: JSON.stringify(userCredentials),\r\n });\r\n const data = await res.json();\r\n\r\n if (data.statusCode === 200) {\r\n await updateRequestVerificationToken(userCredentials.language, myPageUrl);\r\n await updateHeader();\r\n await updateUserState();\r\n } else {\r\n setError(true);\r\n setValidationMessage(data.message);\r\n }\r\n setIsLoading(false);\r\n}\r\n\r\nexport async function SignOut(languageRoute: string, requestToken: string) {\r\n const accountUrl = `/api/${languageRoute}/account/`;\r\n const res = await fetch(`${accountUrl}SignOut`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n RequestVerificationToken: requestToken,\r\n },\r\n });\r\n const data = await res.json();\r\n\r\n if (data.statusCode === 200) {\r\n await updateRequestVerificationToken(languageRoute);\r\n await EmptyCart(languageRoute);\r\n await updateHeader();\r\n await updateUserState();\r\n }\r\n}\r\n\r\nexport async function ForgotPassword(\r\n userName: string,\r\n requestToken: string,\r\n languageRoute: string,\r\n channelId: string,\r\n setError: (value: boolean) => void,\r\n setValidationMessage: (value: string) => void,\r\n kexNavigate: (value: string) => void\r\n) {\r\n const accountUrl = `/api/${languageRoute}/account/`;\r\n const res = await fetch(`${accountUrl}ForgotPassword?userName=${userName}`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'litium-request-context': JSON.stringify({\r\n channelSystemId: channelId,\r\n }),\r\n RequestVerificationToken: requestToken,\r\n },\r\n });\r\n const data = await res.json();\r\n\r\n if (data.statusCode === 200) {\r\n updateHeader();\r\n updateUserState();\r\n kexNavigate(data.redirectUrl);\r\n } else {\r\n setError(true);\r\n setValidationMessage(data.message);\r\n }\r\n}\r\n\r\nexport async function ChangePassword(\r\n userCredentials: UserCredentials,\r\n requestToken: string,\r\n languageRoute: string,\r\n channelId: string,\r\n setError: (value: boolean) => void,\r\n setValidationMessage: (value: string) => void,\r\n kexNavigate: (value: string) => void\r\n) {\r\n const accountUrl = `/api/${languageRoute}/account/`;\r\n const res = await fetch(`${accountUrl}ChangePassword`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'litium-request-context': JSON.stringify({\r\n channelSystemId: channelId,\r\n }),\r\n RequestVerificationToken: requestToken,\r\n },\r\n body: JSON.stringify(userCredentials),\r\n });\r\n const data = await res.json();\r\n\r\n if (data.statusCode === 200) {\r\n updateHeader();\r\n updateUserState();\r\n kexNavigate(data.redirectUrl);\r\n } else {\r\n setError(true);\r\n setValidationMessage(data.message);\r\n }\r\n}\r\n\r\nasync function updateRequestVerificationToken(\r\n languageRoute: string,\r\n redirectUrl?: string\r\n) {\r\n const accountUrl = `/api/${languageRoute}/account/`;\r\n const res = await fetch(`${accountUrl}UpdateRequestVerificationToken`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n const data = await res.json();\r\n window.location.href = `${redirectUrl ? redirectUrl : data.redirectUrl}`;\r\n}\r\n","import React from 'react';\r\nimport { styled } from '../../Theme';\r\nimport { StyledProps } from '@glitz/react';\r\n\r\nfunction SignInIcon({ compose }: StyledProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(SignInIcon);\r\n","/* MEDIA VARIABLES */\r\n// Extra small screen / phone\r\nexport const screenXs = 480;\r\nexport const screenXsMin = screenXs;\r\n\r\n// Small screen / tablet\r\nexport const screenSm = 768;\r\nexport const screenSmMin = screenSm;\r\n\r\n// Medium screen / desktop\r\nexport const screenMd = 992;\r\nexport const screenMdMin = screenMd;\r\n\r\n// Large screen / wide desktop\r\nexport const screenLg = 1200;\r\nexport const screenLgMin = screenLg;\r\n\r\n// So media queries don't overlap when required, provide a maximum\r\nexport const screenXsMax = screenSmMin - 1;\r\nexport const screenSmMax = screenMdMin - 1;\r\nexport const screenMdMax = screenLgMin - 1;\r\n\r\nexport const xsOnly = `(max-width: ${screenXsMax}px)`;\r\n\r\nexport const smDown = `(max-width: ${screenSmMax}px)`;\r\nexport const smUp = `(min-width: ${screenSmMin}px)`;\r\nexport const smOnly = `(min-width: ${screenSmMin}px) and (max-width: ${screenSmMax}px)`;\r\n\r\nexport const mdUp = `(min-width: ${screenMdMin}px)`;\r\nexport const mdOnly = `(min-width: ${screenMdMin}px) and (max-width: ${screenMdMax}px)`;\r\n\r\nexport const lgUp = `(min-width: ${screenLgMin}px)`;\r\n\r\nexport const contentContainerWidth = 1200;\r\nexport const appMaxWidth = 1700;\r\n\r\nexport const standardDesktopHeaderHeightMdUp = 122;\r\nexport const mobileHeaderHeight = 55;\r\n","import { useLayoutEffect } from 'react';\r\n\r\nimport { mdUp } from '../Configs/CssConfig';\r\n\r\nimport useMedia from './useMedia';\r\n\r\nconst activeUseLockBodyScrolls = {};\r\nlet scrollPos = null;\r\n\r\nfunction useLockBodyScroll({ mediaQuery = false, lock = true } = {}) {\r\n const mediaQueryIsTrue = useMedia(mediaQuery);\r\n\r\n /**\r\n * for some reason we can't use useEffect because of infinite rerenders in ios\r\n * */\r\n useLayoutEffect(() => {\r\n if (mediaQuery && !mediaQueryIsTrue) return;\r\n\r\n let scrollPosition,\r\n rootEle = document.getElementById('root'),\r\n header = document.getElementById('fixed-site-header');\r\n const id = new Date().valueOf();\r\n\r\n if ((!mediaQuery || (mediaQueryIsTrue && mediaQuery)) && lock) {\r\n scrollPosition = window.pageYOffset;\r\n\r\n if (scrollPos === null) {\r\n rootEle.style.top = `${-scrollPosition}px`;\r\n header &&\r\n window.matchMedia(mdUp).matches &&\r\n (header.style.top = `${scrollPosition}px`);\r\n /*\r\n * global class declared in index.scss\r\n */\r\n rootEle.classList.add('rootlocked');\r\n }\r\n\r\n activeUseLockBodyScrolls[id] =\r\n scrollPos === null ? scrollPosition : scrollPos;\r\n }\r\n\r\n return () => {\r\n const idScrollPos = activeUseLockBodyScrolls[id];\r\n delete activeUseLockBodyScrolls[id];\r\n if (Object.isEmpty(activeUseLockBodyScrolls)) {\r\n header && (header.style.top = `0px`);\r\n /*\r\n * global class declared in index.scss\r\n */\r\n rootEle.classList.remove('rootlocked');\r\n window.scrollTo(0, idScrollPos);\r\n }\r\n };\r\n }, [lock, mediaQuery, mediaQueryIsTrue]);\r\n\r\n return mediaQueryIsTrue;\r\n}\r\n\r\nexport default useLockBodyScroll;\r\n","import React, { useEffect, useState, useRef } from 'react';\r\n\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 ON_MODAL_SEARCH,\r\n} from '../Shared/Common/EventDispatcher';\r\n\r\nimport Overlay from '../Shared/Common/Overlay';\r\nimport { styled, theme } from '../Theme';\r\nimport Dots from '../Shared/Button/Dots';\r\nimport FullSearchResult from '../Search/Models/FullSearchResult.interface';\r\nimport ContentModel from '../Search/Models/ContentModel.interface';\r\nimport KexLink from '../Shared/KexLink/KexLink';\r\nimport CtaButton from '../Shared/CtaButton/CtaButton';\r\nimport { useAppSettingsData } from '../Shared/AppSettingsProvider/AppSettingsProvider';\r\nimport { media, pseudo } from '@glitz/core';\r\nimport useOutsideClick from '../Shared/Hooks/useOutsideClick';\r\nimport useMedia from '../Shared/Hooks/useMedia';\r\nimport { mediaQuery } from '../Theme/mediaQueries';\r\nimport ProductCardModel from '../ProductCard/Models/ProductCardModel.interface';\r\nimport SearchLinkResult from '../Search/Models/SearchLinkResult.interface';\r\nimport { useUserStateData } from '../Shared/UserContextProvider/UserContextProvider';\r\n\r\ntype PropTypes = {\r\n searchResult?: FullSearchResult;\r\n isOpen: boolean;\r\n currentSearchPhrase: string;\r\n setInputActive?: any;\r\n onSearchResultChange?: any;\r\n};\r\n\r\nfunction SearchModal({\r\n searchResult,\r\n isOpen,\r\n currentSearchPhrase,\r\n setInputActive,\r\n onSearchResultChange,\r\n}: PropTypes) {\r\n const [isSearching, setIsSearching] = useState(false);\r\n const isDesktop = useMedia(theme.mediaQuery.mediaMinLarge);\r\n const {\r\n translations: {\r\n 'search/showAllSearchResults': showAllSearchResultsLabel,\r\n 'search/pages': pagesLabel,\r\n 'searchPage/products': productsLabel,\r\n 'search/category': categoryLabel,\r\n 'search/planogram': planogramLabel,\r\n 'search/noResults': noResultsLabel,\r\n },\r\n } = useAppSettingsData();\r\n\r\n const { authenticated } = useUserStateData();\r\n\r\n const onSearch = (value: boolean) => {\r\n setIsSearching(value);\r\n };\r\n\r\n const searchModalRef = useRef(null);\r\n\r\n useOutsideClick(searchModalRef, () => {\r\n if (isDesktop && isOpen) {\r\n EventDispatcher.dispatch(ON_SEARCH_MODAL_OPEN_CHANGE, false);\r\n setInputActive(false);\r\n }\r\n });\r\n\r\n const doSearch = () => {\r\n if (currentSearchPhrase.length > 0) {\r\n EventDispatcher.dispatch(ON_MODAL_SEARCH, true);\r\n }\r\n };\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 useEffect(() => {\r\n EventDispatcher.subscribe(ON_SEARCH, onSearch);\r\n return () => {\r\n EventDispatcher.unsubscribe(ON_SEARCH, onSearch);\r\n };\r\n });\r\n\r\n const onResultItemClick = () => {\r\n isDesktop\r\n ? EventDispatcher.dispatch(ON_SEARCH_MODAL_OPEN_CHANGE, false)\r\n : EventDispatcher.dispatch(ON_MOBILE_SEARCH_OPEN_CHANGE, false);\r\n setInputActive(false);\r\n onSearchResultChange(undefined, '');\r\n };\r\n\r\n return isOpen ? (\r\n <>\r\n \r\n <>\r\n \r\n {isSearching ? (\r\n \r\n \r\n \r\n ) : !isSearching && searchResult && noSearchResult ? (\r\n {noResultsLabel}\r\n ) : (\r\n \r\n {searchResult && authenticated && (\r\n \r\n {productsLabel}\r\n {searchResult?.productSearchResult?.availableItems && (\r\n \r\n {searchResult?.productSearchResult?.items.map(\r\n (item: ProductCardModel) =>\r\n item.url && (\r\n \r\n \r\n {item.name}\r\n \r\n \r\n )\r\n )}\r\n \r\n )}\r\n \r\n )}\r\n {searchResult && authenticated && (\r\n \r\n {planogramLabel}\r\n {searchResult?.planogramSearchResult?.availableItems && (\r\n \r\n {searchResult?.planogramSearchResult?.items.map(\r\n (item: ProductCardModel) =>\r\n item.url && (\r\n \r\n \r\n {item.name}\r\n \r\n \r\n )\r\n )}\r\n \r\n )}\r\n \r\n )}\r\n {searchResult && authenticated && (\r\n \r\n {categoryLabel}\r\n {!!searchResult?.categoryMatch?.length && (\r\n \r\n {searchResult?.categoryMatch?.map(\r\n (item: SearchLinkResult) => (\r\n \r\n {item.name}\r\n \r\n )\r\n )}\r\n \r\n )}\r\n \r\n )}\r\n {searchResult && (\r\n \r\n {pagesLabel}\r\n {searchResult?.contentSearchResult?.availableItems && (\r\n \r\n {searchResult?.contentSearchResult?.items.map(\r\n (item: ContentModel) =>\r\n item.src && (\r\n \r\n \r\n {item.name}\r\n \r\n \r\n )\r\n )}\r\n \r\n )}\r\n \r\n )}\r\n \r\n )}\r\n {!noSearchResult && !isSearching && (\r\n \r\n \r\n \r\n \r\n {showAllSearchResultsLabel}\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\nconst SearchResultModalContainer = styled.div({\r\n position: 'fixed',\r\n top: '188px',\r\n left: theme.spacing(4),\r\n right: theme.spacing(4),\r\n bottom: theme.spacing(4),\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n zIndex: 20,\r\n backgroundColor: theme.white,\r\n borderRadius: '10px',\r\n ...media(theme.mediaQuery.mediaMinLarge, {\r\n top: '90px',\r\n bottom: 'unset',\r\n overflowY: 'unset',\r\n maxWidth: theme.desktopSearchModalMaxWidth,\r\n margin: { x: 'auto' },\r\n maxHeight: theme.desktopSearchModalMaxHeight,\r\n }),\r\n});\r\n\r\nconst ModalTabsWrapper = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n ...media(theme.mediaQuery.mediaMinLarge, {\r\n flexDirection: 'row',\r\n }),\r\n});\r\n\r\nconst SearchResultWrapper = styled.div({\r\n width: '100%',\r\n ...media(theme.mediaQuery.mediaMinLarge, {\r\n width: '23.3%',\r\n borderRight: {\r\n style: 'solid',\r\n width: theme.tiny,\r\n color: theme.veryLightGray,\r\n },\r\n ...pseudo([':last-child'], {\r\n borderRight: {\r\n style: 'none',\r\n },\r\n }),\r\n ...pseudo([':first-child'], {\r\n width: '30%',\r\n }),\r\n ...pseudo([':nth-child(n)[data-fullwidth=\"true\"]'], { width: '100%' }),\r\n }),\r\n});\r\n\r\nconst StyledLink = styled(KexLink, {\r\n fontSize: theme.gamma,\r\n color: theme.linkColor,\r\n textDecoration: 'underline',\r\n width: '100%',\r\n lineHeight: '25.6px',\r\n padding: { y: theme.spacing(1) },\r\n});\r\n\r\nconst ShowAllResultsButton = styled(CtaButton, {});\r\n\r\nconst ListItem = styled.li({ display: 'flex' });\r\n\r\nconst ResultCategory = styled.div({\r\n font: { size: theme.beta, weight: theme.fontWeight.bold },\r\n backgroundColor: theme.lightBlue,\r\n color: theme.primaryBlue,\r\n textTransform: 'uppercase',\r\n padding: { x: theme.spacing(8), y: theme.spacing(3) },\r\n});\r\n\r\nconst ResultList = styled.ul({\r\n padding: { x: theme.spacing(8) },\r\n listStyle: 'none',\r\n margin: { y: theme.spacing(5) },\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 NoResultsWrapper = styled.div({\r\n display: 'flex',\r\n justifyContent: 'center',\r\n padding: { y: theme.spacing(11) },\r\n});\r\n\r\nconst Divider = styled.div({\r\n borderBottom: { width: '1px', style: 'solid', color: theme.grayLine },\r\n});\r\n\r\nconst BottomSection = styled.div({\r\n backgroundColor: theme.white,\r\n marginTop: theme.spacing(10),\r\n position: 'sticky',\r\n bottom: '0',\r\n});\r\n\r\nconst ButtonContainer = styled.div({\r\n display: 'flex',\r\n justifyContent: 'center',\r\n paddingTop: theme.spacing(8),\r\n paddingBottom: theme.spacing(9),\r\n ...media(mediaQuery.mediaMinLarge, {\r\n boxShadow: '0px -3px 11px rgba(0, 0, 0, 0.05)',\r\n justifyContent: 'left',\r\n marginLeft: '30px',\r\n }),\r\n});\r\n\r\nexport default SearchModal;\r\n","import React from 'react';\r\nimport { styled, theme } from '../../Theme';\r\nimport usePreventBackgroundScroll from '../Hooks/usePreventBackgroundScroll';\r\nimport useLockBodyScroll from '../Hooks/useLockBodyScroll';\r\nimport { media } from '@glitz/core';\r\nimport { mediaQuery } from '../../Theme/mediaQueries';\r\n\r\ntype PropTypes = {\r\n clickEvnt?: () => void;\r\n};\r\n\r\nfunction Overlay({ clickEvnt }: PropTypes) {\r\n useLockBodyScroll();\r\n\r\n return ;\r\n}\r\n\r\nexport default Overlay;\r\n\r\nconst OverlayDiv = styled.div({\r\n position: 'fixed',\r\n top: 0,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n backgroundColor: theme.black,\r\n zIndex: -1,\r\n transition: {\r\n property: 'opacity',\r\n timingFunction: '$main-timing-function',\r\n duration: '0.3s',\r\n },\r\n animationName: {\r\n '0%': {\r\n opacity: 0,\r\n },\r\n '100%': {\r\n opacity: 0.5,\r\n },\r\n },\r\n animationFillMode: 'forwards',\r\n animationDuration: theme.timings.oneThird,\r\n ...media(mediaQuery.mediaMinLarge, {\r\n top: theme.desktopHeaderHeight,\r\n }),\r\n});\r\n","import React, { useRef, useCallback, useEffect } from 'react';\r\n\r\nimport { theme, styled } from '../Theme';\r\n\r\nimport { QuickSearch } from '../SearchPage/Search';\r\n\r\nimport { useAppSettingsData } from '../Shared/AppSettingsProvider/AppSettingsProvider';\r\nimport useCurrentPage from '../Shared/Hooks/useCurrentPage';\r\nimport { useKexNavigate } from '../Shared/KexRouter/KexRouter';\r\nimport { pseudo } from '@glitz/core';\r\n\r\nimport {\r\n EventDispatcher,\r\n ON_MOBILE_SEARCH_OPEN_CHANGE,\r\n ON_SEARCH_MODAL_OPEN_CHANGE,\r\n ON_MODAL_SEARCH,\r\n} from '../Shared/Common/EventDispatcher';\r\n\r\nimport CloseIcon from '../Shared/Icons/CloseIcon';\r\nimport PageModelBase from '../Shared/Models/PageModelBase.interface';\r\nimport useMedia from '../Shared/Hooks/useMedia';\r\nimport { useUserStateData } from '../Shared/UserContextProvider/UserContextProvider';\r\n\r\nlet typeTimer: any;\r\n\r\ntype PropTypes = {\r\n onSearchResultChange: any;\r\n isActive: boolean;\r\n setIsActive: any;\r\n modalOpen?: boolean;\r\n inputValue: string;\r\n setInputValue?: any;\r\n};\r\n\r\nfunction SearchInput({\r\n onSearchResultChange,\r\n isActive,\r\n setIsActive,\r\n modalOpen,\r\n inputValue,\r\n setInputValue,\r\n}: PropTypes) {\r\n const {\r\n translations: { 'search/placeholder': placeholderText },\r\n staticPages: { searchPage },\r\n requestToken,\r\n languageRoute,\r\n } = useAppSettingsData();\r\n const { channelId, pageId } = useCurrentPage();\r\n const inputRef = useRef(null);\r\n const kexNavigate = useKexNavigate();\r\n const { organizationId } = useUserStateData();\r\n\r\n const isDesktop = useMedia(theme.mediaQuery.mediaMinLarge);\r\n\r\n const baseUrl = `/api/${languageRoute}/search/QuickSearch?organizationId=${organizationId}&query=`;\r\n\r\n const doSearch = () => {\r\n if (inputValue.length > 0) {\r\n EventDispatcher.dispatch(ON_MOBILE_SEARCH_OPEN_CHANGE, false);\r\n EventDispatcher.dispatch(ON_SEARCH_MODAL_OPEN_CHANGE, false);\r\n setInputValue('');\r\n setIsActive(false);\r\n inputRef.current?.blur();\r\n onSearchResultChange(undefined, '');\r\n kexNavigate(`${searchPage}?searchQuery=${inputValue}`);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n EventDispatcher.subscribe(ON_MODAL_SEARCH, doSearch);\r\n return () => {\r\n EventDispatcher.unsubscribe(ON_MODAL_SEARCH, doSearch);\r\n };\r\n });\r\n\r\n const onInputChange = useCallback(\r\n (value: string) => {\r\n isDesktop && EventDispatcher.dispatch(ON_SEARCH_MODAL_OPEN_CHANGE, true);\r\n setIsActive(!!value.length);\r\n setInputValue(value);\r\n if (!!value.length) {\r\n clearTimeout(typeTimer);\r\n typeTimer = setTimeout(() => {\r\n let url = baseUrl + value;\r\n setInputValue(value);\r\n QuickSearch(url, requestToken, pageId, channelId)\r\n .then(res => {\r\n onSearchResultChange(res, value);\r\n })\r\n .catch(() => {});\r\n }, 500);\r\n } else {\r\n clearTimeout(typeTimer);\r\n onSearchResultChange(undefined, '');\r\n EventDispatcher.dispatch(ON_SEARCH_MODAL_OPEN_CHANGE, false);\r\n }\r\n },\r\n [onSearchResultChange]\r\n );\r\n\r\n const onInputFocus = () => {\r\n setTimeout(() => {\r\n if (!modalOpen && !!inputValue.length) {\r\n EventDispatcher.dispatch(ON_SEARCH_MODAL_OPEN_CHANGE, true);\r\n setIsActive(true);\r\n }\r\n }, 100);\r\n };\r\n\r\n const onCrossClick = () => {\r\n setTimeout(() => {\r\n setInputValue('');\r\n setIsActive(false);\r\n inputRef.current?.focus();\r\n onSearchResultChange(undefined, '');\r\n }, 100);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n onInputChange(e.currentTarget.value)}\r\n onKeyDown={e => e.key === 'Enter' && doSearch()}\r\n ref={inputRef}\r\n type=\"text\"\r\n placeholder={placeholderText}\r\n autoFocus={!isDesktop}\r\n value={inputValue}\r\n onFocus={onInputFocus}\r\n />\r\n {!!inputValue.length && (\r\n \r\n \r\n \r\n )}\r\n \r\n >\r\n );\r\n}\r\n\r\nconst InputWrapper = styled.div({\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n backgroundColor: theme.white,\r\n color: theme.black,\r\n height: theme.mobileHeaderTopSectionHeight,\r\n width: '100%',\r\n borderRadius: '100px',\r\n padding: { x: theme.spacing(6) },\r\n fontSize: '15px',\r\n ...pseudo([':nth-child(n)[data-isActive=\"true\"]'], {\r\n border: {\r\n xy: { width: '2px', style: 'solid', color: theme.iconLightBlue },\r\n },\r\n }),\r\n});\r\n\r\nconst InputField = styled.input({\r\n width: '100%',\r\n outlineStyle: 'none',\r\n ...pseudo('::placeholder', {\r\n color: theme.breadText,\r\n }),\r\n ':focus': {\r\n ...pseudo('::placeholder', {\r\n color: theme.placeholder,\r\n }),\r\n },\r\n});\r\n\r\nconst CloseIconWrapper = styled.div({\r\n cursor: 'pointer',\r\n});\r\n\r\nconst StyledCloseIcon = styled(CloseIcon, {\r\n height: theme.spacing(4),\r\n});\r\n\r\nexport default SearchInput;\r\n","import React from 'react';\r\nimport { styled } from '../../Theme';\r\nimport { StyledProps } from '@glitz/react';\r\n\r\nfunction SignOutIcon({ compose }: StyledProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(SignOutIcon);\r\n","import React from 'react';\r\nimport { styled } from '../../Theme';\r\nimport { StyledProps } from '@glitz/react';\r\n\r\nfunction ShoppingBasket({ compose }: StyledProps) {\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\nexport default styled(ShoppingBasket);\r\n","import React, { useRef } from 'react';\r\nimport Overlay from '../Shared/Common/Overlay';\r\nimport { styled } from '@glitz/react';\r\nimport { theme } from '../Theme';\r\nimport { GetCart } from '../Cart/Cart';\r\nimport useOutsideClick from '../Shared/Hooks/useOutsideClick';\r\nimport {\r\n EventDispatcher,\r\n ON_MINICART_OPEN_CHANGE,\r\n} from '../Shared/Common/EventDispatcher';\r\nimport { media } from '@glitz/core';\r\nimport { mediaQuery } from '../Theme/mediaQueries';\r\nimport { useAppSettingsData } from '../Shared/AppSettingsProvider/AppSettingsProvider';\r\nimport CtaButton from '../Shared/CtaButton/CtaButton';\r\nimport TrashIcon from '../Shared/Icons/TrashIcon';\r\nimport { EmptyCart } from '../Cart/Cart';\r\n\r\ntype PropTypes = {\r\n isOpen?: boolean;\r\n};\r\n\r\nfunction MiniCartModal({ isOpen }: PropTypes) {\r\n const { cart, isLoading } = GetCart();\r\n const miniCartModalRef = useRef(null);\r\n\r\n const {\r\n translations: {\r\n 'miniCart/heading': headingLabel,\r\n 'miniCart/amountOfProducts': totalProductsLabel,\r\n 'miniCart/totalSum': totalSumLabel,\r\n 'miniCart/goToCart': goToCartLabel,\r\n 'common/emptyCart': emptyCartLabel,\r\n },\r\n staticPages: { checkoutPage },\r\n languageRoute,\r\n } = useAppSettingsData();\r\n\r\n const getNumberOfCartItems = () => {\r\n let numberOfItems = 0;\r\n cart &&\r\n cart.lineItems &&\r\n cart.lineItems.map(lineItem => {\r\n numberOfItems = numberOfItems + lineItem.quantity;\r\n });\r\n return numberOfItems;\r\n };\r\n\r\n const amountOfProductsText = totalProductsLabel.replace(\r\n '{0}',\r\n cart && cart.lineItems ? getNumberOfCartItems().toString() : '0'\r\n );\r\n\r\n useOutsideClick(miniCartModalRef, () => {\r\n if (isOpen) {\r\n EventDispatcher.dispatch(ON_MINICART_OPEN_CHANGE, false);\r\n }\r\n });\r\n\r\n const onEmptyCart = () => {\r\n EmptyCart(languageRoute);\r\n };\r\n\r\n return isOpen ? (\r\n <>\r\n \r\n \r\n \r\n \r\n {headingLabel}\r\n {amountOfProductsText}\r\n\r\n {cart && cart.numberOfItems > 0 && (\r\n onEmptyCart()}>\r\n \r\n {emptyCartLabel}\r\n \r\n )}\r\n \r\n \r\n \r\n {totalSumLabel}\r\n {cart.totalPrice}\r\n \r\n \r\n EventDispatcher.dispatch(ON_MINICART_OPEN_CHANGE, false)\r\n }\r\n disabled={cart && cart.lineItems && !!!cart.lineItems.length}\r\n >\r\n {goToCartLabel}\r\n \r\n \r\n \r\n \r\n >\r\n ) : (\r\n <>>\r\n );\r\n}\r\n\r\nconst Container = styled.div({\r\n ...media(mediaQuery.mediaMinMedium, {\r\n position: 'relative',\r\n }),\r\n});\r\n\r\nconst Modal = styled.div({\r\n position: 'absolute',\r\n zIndex: 10,\r\n top: '60px',\r\n backgroundColor: theme.white,\r\n borderRadius: '10px',\r\n ...media(mediaQuery.mediaMinMedium, { width: '275px', left: '-70px' }),\r\n ...media(mediaQuery.mediaMaxMedium, {\r\n right: '15px',\r\n maxWidth: '275px',\r\n }),\r\n ...media(mediaQuery.mediaMinLarge, {\r\n top: '70px',\r\n width: '275px',\r\n left: '-300px',\r\n }),\r\n});\r\n\r\nconst FirstLevel = styled.div({\r\n paddingTop: theme.epsilon,\r\n paddingLeft: theme.nearGreat,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'start',\r\n marginBottom: theme.delta,\r\n});\r\n\r\nconst Head = styled.span({\r\n fontSize: theme.delta,\r\n fontWeight: 700,\r\n color: theme.black,\r\n marginBottom: theme.gamma,\r\n});\r\n\r\nconst EmptyCartContainer = styled.div({\r\n display: 'flex',\r\n alignItems: 'flex-end',\r\n marginTop: theme.medium,\r\n});\r\n\r\nconst TextLink = styled.button({\r\n fontSize: theme.beta,\r\n color: theme.linkColor,\r\n textDecoration: 'underline',\r\n ':hover': {\r\n cursor: 'pointer',\r\n },\r\n});\r\n\r\nconst StyledTrashIcon = styled(TrashIcon, {\r\n stroke: theme.black,\r\n marginRight: '10px',\r\n ':hover': {\r\n cursor: 'pointer',\r\n },\r\n});\r\n\r\nconst TotalProducts = styled.span({\r\n fontSize: theme.beta,\r\n color: theme.black,\r\n});\r\n\r\nconst SecondLevel = styled.div({\r\n backgroundColor: theme.primaryBackground,\r\n paddingTop: theme.epsilon,\r\n padding: { x: theme.nearGreat },\r\n borderRadius: '10px',\r\n paddingBottom: theme.spacing(6),\r\n});\r\n\r\nconst Price = styled.div({\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n});\r\n\r\nconst PriceHeading = styled.span({\r\n color: theme.black,\r\n fontSize: theme.beta,\r\n});\r\n\r\nconst TotalPrice = styled.span({\r\n color: theme.black,\r\n fontSize: theme.delta,\r\n fontWeight: 700,\r\n});\r\n\r\nconst StyledCtaButton = styled(CtaButton, {\r\n marginTop: theme.spacing(4),\r\n //marginBottom: theme.spacing(6),\r\n width: '100%',\r\n textAlign: 'center',\r\n fontSize: '15px',\r\n ...media(mediaQuery.mediaMinLarge, {\r\n minWidth: '100%',\r\n }),\r\n});\r\n\r\nexport default MiniCartModal;\r\n","import React, { useState } from 'react';\r\n\r\nimport { theme } from '../../../../Theme';\r\nimport { styled } from '@glitz/react';\r\nimport KexLink from '../../../KexLink/KexLink';\r\nimport { LinkType } from '../../../../Enums/LinkType.enum';\r\nimport { useAppSettingsData } from '../../../AppSettingsProvider/AppSettingsProvider';\r\nimport { media, pseudo } from '@glitz/core';\r\nimport { StyleOrStyleArray } from '@glitz/type';\r\nimport useMedia from '../../../../Shared/Hooks/useMedia';\r\nimport SignInIcon from '../../../../Shared/Icons/SignInIcon';\r\nimport ContactIcon from '../../../../Shared/Icons/ContactIcon';\r\nimport SignOutIcon from '../../../../Shared/Icons/SignOutIcon';\r\nimport ProfileIcon from '../../../../Shared/Icons/ProfileIcon';\r\nimport ShoppingBasket from '../../../../Shared/Icons/ShoppingBasket';\r\nimport { SignOut } from '../../../../LoginPage/Account';\r\nimport MiniCartModal from '../../../../MiniCart/MiniCartModal';\r\nimport { GetCart } from '../../../../Cart/Cart';\r\n\r\nimport {\r\n EventDispatcher,\r\n ON_MINICART_OPEN_CHANGE,\r\n} from '../../../../Shared/Common/EventDispatcher';\r\n\r\ntype PropType = {\r\n linkType: string;\r\n label: string;\r\n href?: string;\r\n miniCartIsOpen?: boolean;\r\n isOpen?: boolean;\r\n};\r\n\r\nfunction HeaderIconLink({\r\n linkType,\r\n label,\r\n href,\r\n miniCartIsOpen = false,\r\n}: PropType) {\r\n const { requestToken, languageRoute } = useAppSettingsData();\r\n\r\n const { cart } = GetCart();\r\n\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n const isDesktop = useMedia(theme.mediaQuery.mediaMinLarge);\r\n\r\n const getNumberOfCartItems = () => {\r\n let numberOfItems = 0;\r\n cart &&\r\n cart.lineItems &&\r\n cart.lineItems.map(lineItem => {\r\n numberOfItems = numberOfItems + lineItem.quantity;\r\n });\r\n return numberOfItems;\r\n };\r\n\r\n const amountOfProducts =\r\n cart && cart.lineItems ? getNumberOfCartItems() : '0';\r\n\r\n const Icon =\r\n linkType === LinkType.SignOut\r\n ? StyledSignOutIcon\r\n : linkType === LinkType.Contact\r\n ? StyledContactIcon\r\n : linkType === LinkType.MiniCart\r\n ? StyledShoppingBasket\r\n : linkType === LinkType.MyPages\r\n ? StyledProfileIcon\r\n : StyledSignInIcon;\r\n\r\n const iconHoveredStyle: StyleOrStyleArray = {\r\n fill: isDesktop && isHovered ? theme.white : theme.headerIconGray,\r\n margin: { xy: 'auto' },\r\n };\r\n\r\n return (\r\n setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n >\r\n {href || linkType === LinkType.SignOut ? (\r\n \r\n linkType === LinkType.SignOut\r\n ? SignOut(languageRoute, requestToken)\r\n : undefined\r\n }\r\n >\r\n \r\n {label}\r\n \r\n ) : (\r\n \r\n EventDispatcher.dispatch(ON_MINICART_OPEN_CHANGE, true)\r\n }\r\n >\r\n \r\n \r\n \r\n {amountOfProducts}\r\n \r\n \r\n {label}\r\n \r\n )}\r\n {LinkType.MiniCart && }\r\n \r\n );\r\n}\r\n\r\nconst StyledKexLink = styled(KexLink, {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n ...media(theme.mediaQuery.mediaMinLarge, {\r\n justifyContent: 'space-evenly',\r\n }),\r\n});\r\n\r\nconst StyledCartButton = styled.button({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n ...media(theme.mediaQuery.mediaMinLarge, {\r\n justifyContent: 'space-evenly',\r\n }),\r\n});\r\n\r\nconst IconWrapper = styled.div({ position: 'relative' });\r\n\r\nconst ProductCircle = styled.div({\r\n position: 'absolute',\r\n top: '-8px',\r\n left: '18px',\r\n borderRadius: '50%',\r\n width: '15px',\r\n height: '15px',\r\n backgroundColor: theme.white,\r\n});\r\n\r\nconst ProductCircleAmount = styled.p({\r\n fontSize: '8px',\r\n marginTop: '3px',\r\n color: theme.primaryDarkBlue,\r\n fontWeight: 'bold',\r\n});\r\n\r\nconst Text = styled.span({\r\n letterSpacing: '0.05em',\r\n color: theme.white,\r\n marginTop: '8px',\r\n textTransform: 'uppercase',\r\n font: { size: theme.tau, weight: theme.fontWeight.bold },\r\n});\r\n\r\nconst IconLinkContainer = styled.div({\r\n display: 'flex',\r\n flexBasis: '25%',\r\n justifyContent: 'center',\r\n ...media(theme.mediaQuery.mediaMinLarge, {\r\n maxWidth: '70px',\r\n textAlign: 'center',\r\n flexBasis: 'unset',\r\n ...pseudo(':not(:last-child)', {\r\n marginRight: theme.spacing(6),\r\n }),\r\n }),\r\n});\r\n\r\nconst StyledContactIcon = styled(ContactIcon, {\r\n height: '20px',\r\n width: '20px',\r\n fill: theme.headerIconGray,\r\n ...media(theme.mediaQuery.mediaMinLarge, {\r\n height: '24px',\r\n width: '24px',\r\n }),\r\n});\r\n\r\nconst StyledSignInIcon = styled(SignInIcon, {\r\n height: '20px',\r\n width: '20px',\r\n fill: theme.headerIconGray,\r\n});\r\n\r\nconst StyledSignOutIcon = styled(SignOutIcon, {\r\n height: '20px',\r\n width: '20px',\r\n});\r\n\r\nconst StyledProfileIcon = styled(ProfileIcon, {\r\n height: '20px',\r\n width: '20px',\r\n fill: theme.headerIconGray,\r\n ...media(theme.mediaQuery.mediaMinLarge, {\r\n height: '24px',\r\n width: '24px',\r\n }),\r\n});\r\n\r\nconst StyledShoppingBasket = styled(ShoppingBasket, {\r\n height: '20px',\r\n width: '20px',\r\n fill: theme.headerIconGray,\r\n ...media(theme.mediaQuery.mediaMinLarge, {\r\n height: '24px',\r\n width: '24px',\r\n }),\r\n});\r\n\r\nexport default HeaderIconLink;\r\n","import { useEffect, useState } from 'react';\r\nimport useSWR, { mutate } from 'swr';\r\nimport IKexCart from './Models/KexCart.interface';\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 {\r\n EventDispatcher,\r\n NOTIFY_ACTION,\r\n} from '../Shared/Common/EventDispatcher';\r\nimport useCurrentPage from '../Shared/Hooks/useCurrentPage';\r\n\r\nlet abortController: AbortController = new AbortController();\r\nlet hasMounted = false;\r\nlet cartUrl = '';\r\nlet litiumContext = '';\r\nlet requestVerificationToken = '';\r\n\r\ntype CartReturnType = {\r\n cart: IKexCart;\r\n isLoading: boolean;\r\n};\r\n\r\nexport function GetCart(): CartReturnType {\r\n const tempCartObject: IKexCart = {} as IKexCart;\r\n\r\n const [cart, setCart] = useState(tempCartObject);\r\n const { pageCacheTime, languageRoute, requestToken } = useAppSettingsData();\r\n const { channelId } = useCurrentPage();\r\n const [isLoading, setIsLoading] = useState(true);\r\n cartUrl = `/api/${languageRoute}/PicturaCart/`;\r\n\r\n litiumContext = JSON.stringify({\r\n channelSystemId: channelId,\r\n });\r\n\r\n requestVerificationToken = requestToken;\r\n\r\n const { data: fectchedCart } = useSWR(\r\n `${cartUrl}GetCart`,\r\n () => FetchCart(`${cartUrl}GetCart`, litiumContext),\r\n {\r\n initialData: undefined,\r\n revalidateOnFocus: IS_PRODUCTION_ENV,\r\n dedupingInterval: pageCacheTime,\r\n }\r\n );\r\n\r\n useEffect(() => {\r\n if (!hasMounted) {\r\n hasMounted = true;\r\n } else {\r\n if (fectchedCart) {\r\n setCart(fectchedCart);\r\n setIsLoading(false);\r\n }\r\n }\r\n }, [fectchedCart]);\r\n\r\n return { cart, isLoading };\r\n}\r\n\r\nexport async function RemoveFromCart(\r\n productCode: string,\r\n languageRoute: string\r\n) {\r\n cartUrl = `/api/${languageRoute}/PicturaCart/`;\r\n const res = await fetch(`${cartUrl}RemoveItem?code=${productCode}`, {\r\n method: 'POST',\r\n headers: {\r\n 'litium-request-context': litiumContext,\r\n RequestVerificationToken: requestVerificationToken,\r\n },\r\n });\r\n if (res.ok) {\r\n const { cart, notification } = await res.json();\r\n EventDispatcher.dispatch(NOTIFY_ACTION, notification);\r\n mutate(`${cartUrl}GetCart`, cart, false);\r\n }\r\n}\r\n\r\nexport async function UpdateCart(\r\n productCode: string,\r\n quantity: number,\r\n languageRoute: string,\r\n bookingNumber?: string,\r\n setIsLoading?: (value: boolean) => void\r\n) {\r\n setIsLoading && setIsLoading(true);\r\n cartUrl = `/api/${languageRoute}/PicturaCart/`;\r\n const updateQuantity = quantity;\r\n const res = await fetch(\r\n `${cartUrl}Update?code=${productCode}&bookingNumber=${bookingNumber}&quantity=${updateQuantity}`,\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'litium-request-context': litiumContext,\r\n RequestVerificationToken: requestVerificationToken,\r\n },\r\n }\r\n );\r\n if (res.ok) {\r\n const { cart, notification } = await res.json();\r\n EventDispatcher.dispatch(NOTIFY_ACTION, notification);\r\n mutate(`${cartUrl}GetCart`, cart, false);\r\n setIsLoading && setIsLoading(false);\r\n return true;\r\n }\r\n setIsLoading && setIsLoading(false);\r\n return false;\r\n}\r\n\r\nexport async function SetQuantity(\r\n productCode: string,\r\n bookingNumber: string,\r\n quantity: number,\r\n languageRoute: string,\r\n setIsLoading?: (value: boolean) => void\r\n) {\r\n setIsLoading && setIsLoading(true);\r\n const updateQuantity = quantity;\r\n cartUrl = `/api/${languageRoute}/PicturaCart/`;\r\n const res = await fetch(\r\n `${cartUrl}SetQuantity?code=${productCode}&bookingNumber=${bookingNumber}&quantity=${updateQuantity}`,\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'litium-request-context': litiumContext,\r\n RequestVerificationToken: requestVerificationToken,\r\n },\r\n }\r\n );\r\n if (res.ok) {\r\n const { cart, notification } = await res.json();\r\n EventDispatcher.dispatch(NOTIFY_ACTION, notification);\r\n mutate(`${cartUrl}GetCart`, cart, false);\r\n setIsLoading && setIsLoading(false);\r\n }\r\n}\r\n\r\nexport async function EmptyCart(languageRoute: string) {\r\n cartUrl = `/api/${languageRoute}/PicturaCart/`;\r\n const res = await fetch(`${cartUrl}RemoveAllItems`, {\r\n method: 'POST',\r\n headers: {\r\n 'litium-request-context': litiumContext,\r\n RequestVerificationToken: requestVerificationToken,\r\n },\r\n });\r\n if (res.ok) {\r\n const { cart, notification } = await res.json();\r\n EventDispatcher.dispatch(NOTIFY_ACTION, notification);\r\n mutate(`${cartUrl}GetCart`, cart, false);\r\n return true;\r\n }\r\n}\r\n\r\nfunction FetchCart(url: string, litiumContext: string) {\r\n abortController.abort();\r\n abortController = new AbortController();\r\n const signal = abortController.signal;\r\n\r\n return Fetcher(\r\n url,\r\n signal,\r\n (data, resolve) => {\r\n if (data.cart) {\r\n resolve(data.cart);\r\n }\r\n\r\n resolve(data);\r\n },\r\n litiumContext\r\n );\r\n}\r\n","import React from 'react';\r\n\r\nimport { theme, styled } from '../../Theme';\r\n\r\nimport { media, pseudo } from '@glitz/core';\r\nimport { mediaQuery } from '../../Theme/mediaQueries';\r\nimport { StyledProps } from '@glitz/react';\r\n\r\nimport KexLink from '../KexLink/KexLink';\r\n\r\ntype PropTypes = StyledProps & {\r\n onClick?: () => void;\r\n asLink?: boolean;\r\n href?: string;\r\n children?: any;\r\n disabled?: boolean;\r\n};\r\n\r\nfunction CtaButton({\r\n compose,\r\n onClick,\r\n asLink,\r\n href,\r\n children,\r\n disabled,\r\n}: PropTypes) {\r\n return asLink ? (\r\n \r\n {children}\r\n \r\n ) : (\r\n \r\n );\r\n}\r\n\r\nconst Button = styled.button({\r\n backgroundColor: theme.primaryBlue,\r\n font: { size: theme.alpha, weight: theme.fontWeight.bold },\r\n display: 'flex',\r\n justifyContent: 'center',\r\n borderRadius: '50px',\r\n padding: { y: theme.spacing(4), x: theme.spacing(6) },\r\n ...media(mediaQuery.mediaMinLarge, {\r\n ':hover': { backgroundColor: theme.primaryDarkBlue },\r\n }),\r\n ':disabled': {\r\n cursor: 'not-allowed',\r\n backgroundColor: theme.headerIconGray,\r\n ':hover': { backgroundColor: theme.headerIconGray },\r\n },\r\n});\r\n\r\nconst Link = styled(KexLink, {\r\n backgroundColor: theme.primaryBlue,\r\n font: { size: theme.alpha, weight: theme.fontWeight.bold },\r\n display: 'flex',\r\n justifyContent: 'center',\r\n borderRadius: '50px',\r\n padding: { y: theme.spacing(4), x: theme.spacing(6) },\r\n ...media(mediaQuery.mediaMinLarge, {\r\n ':hover': { backgroundColor: theme.primaryDarkBlue },\r\n }),\r\n ...pseudo([':nth-child(n)[data-disabled=\"true\"]'], {\r\n cursor: 'not-allowed',\r\n backgroundColor: theme.headerIconGray,\r\n ':hover': { backgroundColor: theme.headerIconGray },\r\n }),\r\n});\r\n\r\nconst ButtonText = styled.span({\r\n color: theme.white,\r\n textTransform: 'uppercase',\r\n letterSpacing: '0.05em',\r\n});\r\n\r\nconst LinkText = styled.span({\r\n padding: { x: theme.spacing(2) },\r\n color: theme.white,\r\n textTransform: 'uppercase',\r\n letterSpacing: '0.05em',\r\n});\r\n\r\nexport default CtaButton;\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\n\r\nfunction ContactIcon({ compose }: StyledProps) {\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\nexport default styled(ContactIcon);\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\n\r\nfunction ProfileIcon({ compose }: StyledProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default styled(ProfileIcon);\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":""}