{"version":3,"file":"dist/build-client/static/js/Pages-CampaignPage-CampaignPage.1b39d19f.chunk.js","mappings":"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","sources":["Organisms/Blocks/SmallHeroBlock.tsx","Pages/CampaignPage/CampaignPage.tsx"],"sourcesContent":["import { H1 } from 'Atoms/Typography/Headings/Heading';\r\nimport ImageModel from 'Models/Assets/ImageModel.interface';\r\nimport { applyEditModeAttr } from 'Shared/Common/Helpers';\r\nimport useMedia from 'Shared/Hooks/useMedia';\r\nimport { styled } from 'stitches.config';\r\nimport { mediaQueryTypes } from 'Theme/Settings/mediaQueries';\r\nimport ContentContainer from 'Molecules/ContentContainer/ContentContainer';\r\n\r\ntype HeroModuleType = {\r\n image: ImageModel;\r\n inEditMode?: boolean;\r\n header?: string;\r\n overlay?: boolean;\r\n};\r\n\r\nfunction SmallHeroBlock({\r\n header,\r\n inEditMode,\r\n image,\r\n overlay = false,\r\n}: HeroModuleType) {\r\n const isMobile = useMedia(mediaQueryTypes.mediaMaxMedium);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {header}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst ImageContainer = styled('div', {\r\n position: 'relative',\r\n display: 'flex',\r\n backgroundRepeat: 'no-repeat',\r\n backgroundSize: 'cover',\r\n color: '$heroTextPrimary',\r\n h: 54,\r\n '@mediaMinLarge': {\r\n h: 75,\r\n },\r\n variants: {\r\n overlay: {\r\n true: {\r\n '&:before': {\r\n position: 'absolute',\r\n content: '\"\"',\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n left: 0,\r\n backgroundColor: '$colors$backgroundPrimary',\r\n opacity: 0.4,\r\n },\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst HeroWrapper = styled('div', {\r\n display: 'flex',\r\n height: '100%',\r\n alignItems: 'flex-end',\r\n});\r\n\r\nconst TextContainer = styled('div', {\r\n position: 'relative',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n w: '100%',\r\n justifyContent: 'end',\r\n mt: 11,\r\n mb: 8,\r\n maxW: '$maxWidthMobile',\r\n '@mediaMinLarge': {\r\n mx: 0,\r\n maxW: 187,\r\n mb: 16,\r\n },\r\n});\r\n\r\nexport default SmallHeroBlock;\r\n","import { ProductType } from 'Enums/ProductType.enum';\r\nimport CampaignPageModel from 'Models/Pages/CampaignPage/CampaignPageModel.interface';\r\nimport ProductCardModel from 'Models/ProductCard/ProductCardModel.interface';\r\nimport ContentContainer from 'Molecules/ContentContainer/ContentContainer';\r\nimport LoadMoreContainer from 'Molecules/LoadMoreContainer/LoadMoreContainer';\r\nimport ProductCard from 'Organisms/ProductCard/ProductCard';\r\nimport FilterBar from 'Organisms/FilterComponent/FilterBar';\r\nimport { useQueryCategoryItems } from 'Pages/SearchPage/Search';\r\nimport React, { useEffect, useMemo } from 'react';\r\nimport { canUseDOM, isEmpty } from 'Shared/Common/Helpers';\r\nimport useCurrentPage from 'Shared/Hooks/useCurrentPage';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport { styled } from 'stitches.config';\r\nimport SmallHeroBlock from 'Organisms/Blocks/SmallHeroBlock';\r\nimport {\r\n FilterProvider,\r\n useFilterData,\r\n} from '../../Organisms/FilterComponent/FilterProvider';\r\nimport { useKexLoadingCircle } from '../../Kex/KexLoadingCircle';\r\n\r\nconst API_URL = 'GetCampaignItems';\r\n\r\nfunction CampaignPageWrapper() {\r\n if (!canUseDOM()) {\r\n return <>;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst CAMPAIGN_LOADING = 'CampaignPage[INITIAL LOADING]';\r\n\r\nfunction CategoryPage() {\r\n const { categoryLabels, commonLabels } = useTranslationData();\r\n const page = useCurrentPage();\r\n\r\n const [state, dispatch] = useFilterData();\r\n\r\n const {\r\n pageHeading,\r\n heroImage,\r\n inEditMode,\r\n heroDarkOverlay,\r\n promotions,\r\n shouldShowCoupon,\r\n validUntil,\r\n } = useCurrentPage();\r\n\r\n const [loadingState, loadingDispatch] = useKexLoadingCircle();\r\n\r\n const stateLoading = !!loadingState.has(CAMPAIGN_LOADING);\r\n\r\n const pagePath = page.breadcrumb[page.breadcrumb.length - 1]?.href || '';\r\n\r\n useEffect(() => dispatch({ type: 'onChangeCategory' }), [pagePath, dispatch]);\r\n\r\n const { facets, sorters, isLoading, result, paginate, loadingMore } =\r\n useQueryCategoryItems(API_URL, state.queryParams, pagePath);\r\n\r\n // clean up\r\n useEffect(() => {\r\n return () => {\r\n loadingDispatch({\r\n type: 'remove',\r\n from: CAMPAIGN_LOADING,\r\n });\r\n };\r\n }, [loadingDispatch]);\r\n\r\n useEffect(() => {\r\n if (isLoading && !stateLoading) {\r\n loadingDispatch({\r\n type: 'add',\r\n from: CAMPAIGN_LOADING,\r\n });\r\n } else if (!isLoading && stateLoading) {\r\n loadingDispatch({\r\n type: 'remove',\r\n from: CAMPAIGN_LOADING,\r\n });\r\n }\r\n }, [isLoading, stateLoading, loadingDispatch]);\r\n\r\n useEffect(\r\n () => facets && sorters && dispatch({ type: 'setFacets', facets, sorters }),\r\n [facets, sorters, dispatch]\r\n );\r\n\r\n const loadedPercentage = useMemo(() => {\r\n return result?.productSearchResult\r\n ? (result?.productSearchResult?.items.length /\r\n result?.productSearchResult?.availableItems) *\r\n 100\r\n : 0;\r\n }, [result?.productSearchResult]);\r\n\r\n const counterText = useMemo(() => {\r\n return result?.productSearchResult\r\n ? categoryLabels.counter\r\n .replace('{0}', result.productSearchResult?.items.length.toString())\r\n .replace('{1}', result.productSearchResult?.availableItems.toString())\r\n : '';\r\n }, [result?.productSearchResult, categoryLabels.counter]);\r\n\r\n const productType =\r\n !isEmpty(result?.productSearchResult?.items) &&\r\n result?.productSearchResult?.items[0].productType;\r\n\r\n return (\r\n <>\r\n {heroImage && (\r\n \r\n )}\r\n \r\n \r\n {!isEmpty(promotions) &&\r\n promotions\r\n .filter((p) => p.promotionName || p.couponCode)\r\n .map((p, i) => {\r\n return (\r\n !!shouldShowCoupon && (\r\n \r\n {commonLabels.useCouponCode.replace(\r\n '{0}',\r\n p.promotionName\r\n )}{' '}\r\n {p.couponCode}. {commonLabels.validUntilDate}{' '}\r\n {validUntil}\r\n \r\n )\r\n );\r\n })}{' '}\r\n \r\n\r\n \r\n \r\n \r\n \r\n {!isLoading ? (\r\n <>\r\n {productType === ProductType.MOTORCYCLES && (\r\n \r\n {result?.productSearchResult?.items.map(\r\n (product: ProductCardModel, index: number) => (\r\n \r\n \r\n \r\n )\r\n )}\r\n \r\n )}\r\n {productType !== ProductType.MOTORCYCLES && (\r\n \r\n {result?.productSearchResult?.items.map((product, index) => (\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 {!isLoading && !!result && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n}\r\n\r\nconst MCStyledGrid = styled('div', {\r\n display: 'grid',\r\n gridTemplateColumns: '1fr',\r\n gap: '16px',\r\n maxWidth: 'auto',\r\n '@media(min-width: 768px)': {\r\n gridTemplateColumns: '1fr 1fr',\r\n gap: '32px',\r\n },\r\n '@mediaMinLarge': {\r\n gridTemplateColumns: '1fr 1fr 1fr 1fr',\r\n gap: '32px',\r\n },\r\n});\r\n\r\nconst MCProductCardWrapper = styled('div', {\r\n minWidth: '220px',\r\n});\r\n\r\nconst NonMCStyledGrid = styled('div', {\r\n display: 'grid',\r\n gridTemplateColumns: '1fr 1fr',\r\n gap: '16px',\r\n maxWidth: 'auto',\r\n '@media(min-width: 768px)': {\r\n gridTemplateColumns: '1fr 1fr 1fr',\r\n gap: '32px',\r\n },\r\n '@mediaMinLarge': {\r\n gridTemplateColumns: '1fr 1fr 1fr 1fr',\r\n gap: '32px',\r\n },\r\n});\r\n\r\nconst NonMCProductCardWrapper = styled('div', {\r\n minWidth: '140px',\r\n});\r\n\r\nconst Padding = styled('div', {\r\n height: '400px',\r\n});\r\n\r\nconst LoadMoreContainerWrapper = styled('div', {\r\n marginTop: '48px',\r\n});\r\n\r\nconst ProductResults = styled('div', {\r\n backgroundColor: '$primary5',\r\n pt: 12,\r\n});\r\n\r\nconst PromotionText = styled('span', {\r\n pt: 12,\r\n display: 'block',\r\n});\r\n\r\nexport default CampaignPageWrapper;\r\n"],"names":["ImageContainer","styled","position","display","backgroundRepeat","backgroundSize","color","h","variants","overlay","true","content","top","right","bottom","left","backgroundColor","opacity","HeroWrapper","height","alignItems","TextContainer","flexDirection","w","justifyContent","mt","mb","maxW","mx","header","inEditMode","image","isMobile","useMedia","mediaQueryTypes","css","backgroundImage","mobileSrc","src","width","H1","applyEditModeAttr","m","CAMPAIGN_LOADING","CategoryPage","useTranslationData","categoryLabels","commonLabels","page","useCurrentPage","useFilterData","state","dispatch","pageHeading","heroImage","heroDarkOverlay","promotions","shouldShowCoupon","validUntil","useKexLoadingCircle","loadingState","loadingDispatch","stateLoading","has","pagePath","breadcrumb","length","href","useEffect","type","useQueryCategoryItems","queryParams","facets","sorters","isLoading","result","paginate","loadingMore","from","loadedPercentage","useMemo","productSearchResult","items","availableItems","counterText","counter","replace","toString","productType","isEmpty","PromotionText","filter","p","promotionName","couponCode","map","i","useCouponCode","validUntilDate","pb","results","productResults","ProductResults","Padding","ProductType","MCStyledGrid","product","index","MCProductCardWrapper","item","NonMCStyledGrid","NonMCProductCardWrapper","LoadMoreContainerWrapper","loaded","loadMore","disabled","onClick","gridTemplateColumns","gap","maxWidth","minWidth","marginTop","pt","canUseDOM","urlSearchString","window","location","search"],"sourceRoot":""}