{"version":3,"file":"component---src-templates-product-category-js-af7956f037bcff50076e.js","mappings":"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","sources":["webpack://imi-webstore/./src/components/widgets/promoBanner.js","webpack://imi-webstore/./src/components/productCategory/productLister.js","webpack://imi-webstore/./src/components/widgets/brandsBar.js","webpack://imi-webstore/./src/components/widgets/subCategoryPanel.js","webpack://imi-webstore/./src/components/productCategory/subcategoriesLister.js","webpack://imi-webstore/./src/templates/productCategory.js","webpack://imi-webstore/./src/utils/pageBuilding.js"],"sourcesContent":["import { Link } from 'gatsby'\r\nimport React, { useEffect, useState } from 'react'\r\nimport { GatsbyImage, getImage } from 'gatsby-plugin-image'\r\nimport { buildUrl } from '../../services/urlService'\r\n\r\nconst PromoBanner = ({ banner }) => {\r\n const [bannerStylingClass, setBannerStylingClass] = useState(null)\r\n const [textStylingClass, setTextStylingClass] = useState(null)\r\n const [preheaderStylingClass, setPreheaderStylingClass] = useState(null)\r\n const [bannerUrl, setBannerUrl] = useState()\r\n const [image, setImage] = useState(null)\r\n\r\n useEffect(() => {\r\n if (banner !== undefined && banner !== null) {\r\n setBannerUrl(buildUrl(banner.page, ''))\r\n setImage(getImage(banner.image))\r\n\r\n if (banner.background === 'Dark Grey') {\r\n setBannerStylingClass('is-darktolight')\r\n setTextStylingClass('text-light')\r\n setPreheaderStylingClass('text-light')\r\n } else {\r\n setBannerStylingClass('is-greytolight')\r\n setTextStylingClass('text-dark')\r\n setPreheaderStylingClass(null)\r\n }\r\n }\r\n }, [banner])\r\n\r\n return (\r\n <section className={`promo-banner ${bannerStylingClass} ${textStylingClass}`}>\r\n <div className=\"container\">\r\n <div className=\"row\">\r\n <div className=\"col-lg-6\">\r\n <div className=\"promo-banner__text\">\r\n <h2>\r\n {banner.preHeader ? (\r\n <>\r\n <span className={preheaderStylingClass}>{banner.preHeader}</span>\r\n <span>{banner.heading}</span>\r\n </>\r\n ) : (\r\n <>{banner.heading}</>\r\n )}\r\n </h2>\r\n\r\n <h4 className=\"font__light mt-4\">{banner.paragraph.paragraph}</h4>\r\n <Link to={bannerUrl} className=\"btn has-arrow text-uppercase\">\r\n {banner.button}\r\n </Link>\r\n </div>\r\n </div>\r\n <div className=\"col-lg-9\">\r\n <div className=\"override-gatsby promo-banner__image\">\r\n <GatsbyImage image={image} alt={banner.heading} className=\"image__fit--cover\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n )\r\n}\r\n\r\nexport default PromoBanner\r\n","import React, { useState, useContext, useEffect } from 'react'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { useCategoriesI18n } from '../../hooks/i18n/useCategoriesI18n'\r\nimport SearchResult from '../widgets/newSearchResult'\r\nimport Paging from '../widgets/paging'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport FredhopperFilters from '../fredhopper/filters/fredhopperFilters'\r\n\r\nconst ProductLister = ({\r\n loading,\r\n searchItems,\r\n filters,\r\n viewSize,\r\n changeViewSize,\r\n breadcrumbs,\r\n handlePagingChange,\r\n forcePage,\r\n}) => {\r\n const locale = useContext(LocaleContext)\r\n const microcopy = useCategoriesI18n(locale)\r\n const [showProductsAsGrid, setShowProductsAsGrid] = useState(true)\r\n const [paging, setPaging] = useState(true)\r\n const [optionsGridClass, setOptionsGridClass] = useState(\r\n 'grid-lister__options--item d-flex align-items-baseline'\r\n )\r\n const [optionsListClass, setOptionsListClass] = useState(\r\n 'grid-lister__options--item d-flex align-items-baseline'\r\n )\r\n const [productGridClasses, setProductGridClasses] = useState(\r\n 'grid-lister has-filter filter-visible p-0 is-lister '\r\n )\r\n\r\n useEffect(() => {\r\n let optionsGridClass = 'grid-lister__options--item d-flex align-items-baseline'\r\n let optionsListClass = 'grid-lister__options--item d-flex align-items-baseline'\r\n let productGridClasses = 'grid-lister has-filter filter-visible p-0 is-lister '\r\n\r\n if (showProductsAsGrid) {\r\n productGridClasses = productGridClasses + ' grid-view'\r\n optionsGridClass = optionsGridClass + ' is-showing'\r\n optionsListClass = 'grid-lister__options--item d-flex align-items-baseline'\r\n } else {\r\n productGridClasses = productGridClasses + ' list-view'\r\n optionsListClass = optionsListClass + ' is-showing'\r\n optionsGridClass = 'grid-lister__options--item d-flex align-items-baseline'\r\n }\r\n\r\n setOptionsGridClass(optionsGridClass)\r\n setOptionsListClass(optionsListClass)\r\n setProductGridClasses(productGridClasses)\r\n }, [showProductsAsGrid])\r\n\r\n useEffect(() => {\r\n setPaging({\r\n viewSize: searchItems !== undefined ? searchItems.viewSize : null,\r\n totalItems: searchItems !== undefined ? searchItems.totalItems : null,\r\n startIndex: searchItems !== undefined ? searchItems.startIndex : null,\r\n forcePage: forcePage,\r\n })\r\n }, [searchItems, forcePage])\r\n\r\n function showProductsInList() {\r\n setShowProductsAsGrid(false)\r\n }\r\n\r\n function showProductsInGrid() {\r\n setShowProductsAsGrid(true)\r\n }\r\n\r\n return (\r\n <section className={productGridClasses}>\r\n <div className=\"container\">\r\n {loading === true || searchItems === undefined || searchItems === null ? null : (\r\n <div className=\"row\">\r\n <div className=\"col-15 grid-lister__content-filter is-lister\">\r\n <div className=\"grid-lister__filter top row d-flex align-items-center\">\r\n <div className=\"col-md-4\">\r\n <div className=\"grid-lister__product-count\">\r\n <span className=\"font__bold\">\r\n {searchItems.totalItems} \r\n {getI18nText(microcopy, 'categories.products')}\r\n </span>\r\n </div>\r\n </div>\r\n <div className=\"col d-flex justify-content-end\">\r\n <div className=\"grid-lister__view-filter\">\r\n <div className=\"grid-lister__button d-flex align-items-center justify-content-end\">\r\n <span>{getI18nText(microcopy, 'categories.view')}</span>\r\n <i className=\"icon-Arrow-Down\"></i>\r\n </div>\r\n <div className=\"grid-lister__options\">\r\n <ul className=\"no-bullets\">\r\n <li\r\n className={optionsGridClass}\r\n data-grid-csslabel=\"grid-view\"\r\n onClick={showProductsInGrid}\r\n >\r\n <p className=\"flex-grow-1\">\r\n {getI18nText(microcopy, 'categories.view.gridview')}\r\n </p>\r\n <i className=\"icon-Tick\"></i>\r\n </li>\r\n <li\r\n className={optionsListClass}\r\n data-grid-csslabel=\"list-view\"\r\n onClick={showProductsInList}\r\n >\r\n <p className=\"flex-grow-1\">\r\n {getI18nText(microcopy, 'categories.view.listview')}\r\n </p>\r\n <i className=\"icon-Tick\"></i>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div className=\"grid-lister__show-filter\">\r\n <div className=\"grid-lister__button d-flex align-items-center justify-content-end\">\r\n <span>{getI18nText(microcopy, 'categories.show')}</span>\r\n <i className=\"icon-Arrow-Down\"></i>\r\n </div>\r\n <div className=\"grid-lister__options\">\r\n <ul className=\"no-bullets\">\r\n <li\r\n className={\r\n viewSize === 6\r\n ? 'grid-lister__options--item d-flex align-items-baseline is-showing'\r\n : 'grid-lister__options--item d-flex align-items-baseline'\r\n }\r\n onClick={() => changeViewSize(6)}\r\n >\r\n <p className=\"flex-grow-1\">6</p>\r\n <i className=\"icon-Tick\"></i>\r\n </li>\r\n <li\r\n className={\r\n viewSize === 12\r\n ? 'grid-lister__options--item d-flex align-items-baseline is-showing'\r\n : 'grid-lister__options--item d-flex align-items-baseline'\r\n }\r\n onClick={() => changeViewSize(12)}\r\n >\r\n <p className=\"flex-grow-1\">12</p>\r\n <i className=\"icon-Tick\"></i>\r\n </li>\r\n <li\r\n className={\r\n viewSize === 24\r\n ? 'grid-lister__options--item d-flex align-items-baseline is-showing'\r\n : 'grid-lister__options--item d-flex align-items-baseline'\r\n }\r\n onClick={() => changeViewSize(24)}\r\n >\r\n <p className=\"flex-grow-1\">24</p>\r\n <i className=\"icon-Tick\"></i>\r\n </li>\r\n <li\r\n className={\r\n viewSize === 36\r\n ? 'grid-lister__options--item d-flex align-items-baseline is-showing'\r\n : 'grid-lister__options--item d-flex align-items-baseline'\r\n }\r\n onClick={() => changeViewSize(36)}\r\n >\r\n <p className=\"flex-grow-1\">36</p>\r\n <i className=\"icon-Tick\"></i>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"col-15 col-md accordion grid-lister__product-filter\">\r\n <FredhopperFilters breadcrumbs={breadcrumbs} filters={filters} />\r\n </div>\r\n\r\n <div className=\"col-15 col-md grid-lister__products is-lister\">\r\n <div className=\"row\">\r\n {searchItems.items.map((item, index) => {\r\n return <SearchResult key={index} item={item} />\r\n })}\r\n </div>\r\n <div className=\"row\">\r\n <Paging paging={paging} onChangeCallback={handlePagingChange} />\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </section>\r\n )\r\n}\r\n\r\nexport default ProductLister\r\n","import { GatsbyImage, getImage } from 'gatsby-plugin-image'\r\nimport React, { useContext } from 'react'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { useCategoriesI18n } from '../../hooks/i18n/useCategoriesI18n'\r\nimport { getI18nText } from '../../services/i18nService'\r\n\r\nconst BrandsBar = ({ brands }) => {\r\n const locale = useContext(LocaleContext)\r\n const microcopy = useCategoriesI18n(locale)\r\n\r\n if (brands !== null && brands !== undefined) {\r\n return (\r\n <section className=\"brands-bar\">\r\n <div className=\"container\">\r\n <div className=\"row\">\r\n <div className=\"col\">\r\n <h2 className=\"text-center\">{getI18nText(microcopy, 'categories.brands')}</h2>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col\">\r\n <ul className=\"d-flex align-items-center justify-content-center flex-wrap no-bullets\">\r\n {brands !== null && brands !== undefined\r\n ? brands.map((element, index) => {\r\n let brandImage = getImage(element.logo)\r\n\r\n return (\r\n <li key={index} className=\"d-flex justify-content-center\">\r\n <GatsbyImage image={brandImage} alt={element.name} />\r\n </li>\r\n )\r\n })\r\n : null}\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n )\r\n } else {\r\n return null\r\n }\r\n}\r\n\r\nexport default BrandsBar\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport StandardButton, { StandardButtonArrowIcon } from './standardButton'\r\nimport { useCategoriesI18n } from '../../hooks/i18n/useCategoriesI18n'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { GatsbyImage, getImage } from 'gatsby-plugin-image'\r\nimport { Link } from 'gatsby'\r\nimport { getI18nText } from '../../services/i18nService'\r\n\r\nconst SubCategoryPanel = ({ subCategory, path }) => {\r\n const locale = useContext(LocaleContext)\r\n const microcopy = useCategoriesI18n(locale)\r\n const [navigationPath, setNavigationPath] = useState()\r\n const [image, setImage] = useState()\r\n\r\n useEffect(() => {\r\n setNavigationPath(\r\n subCategory.navigation_element\r\n ? `${path}/${subCategory.navigation_element[0].slug}`\r\n : subCategory.link\r\n ? `${path}/${subCategory.link.slug}`\r\n : path\r\n )\r\n\r\n setImage(getImage(subCategory.image))\r\n }, [subCategory, path])\r\n\r\n return (\r\n <div className=\"col grid-lister__item d-flex\">\r\n <div className=\"product-category-lister grid-lister__image\">\r\n {image !== null && image !== undefined ? (\r\n <Link to={navigationPath}>\r\n <GatsbyImage\r\n image={image}\r\n alt={subCategory.pageTitle}\r\n objectFit={'contain'}\r\n imgClassName=\"image__fit--cover no-opacity\"\r\n ></GatsbyImage>\r\n </Link>\r\n ) : (\r\n <img\r\n src=\"https://dummyimage.com/300x300/b5b1b5/000000&text=+\"\r\n alt=\"\"\r\n className=\"image__fit--cover\"\r\n />\r\n )}\r\n </div>\r\n\r\n <div className=\"grid-lister__details bg-stone d-flex flex-column align-items-start flex-grow-1\">\r\n <Link to={navigationPath}>\r\n <h4>\r\n {subCategory.pageTitle\r\n ? subCategory.pageTitle\r\n : subCategory.title\r\n ? subCategory.title\r\n : null}\r\n </h4>\r\n <div className=\"d-flex flex-column align-items-start flex-grow-1\">\r\n <p className=\"mt-4\">{subCategory.shortSummary}</p>\r\n </div>\r\n </Link>\r\n <StandardButton path={navigationPath} icon={StandardButtonArrowIcon}>\r\n {getI18nText(microcopy, 'categories.discover')}\r\n </StandardButton>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default SubCategoryPanel\r\n","import React, { useState, useContext, useEffect } from 'react'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { useCategoriesI18n } from '../../hooks/i18n/useCategoriesI18n'\r\nimport BrandsBar from '../widgets/brandsBar'\r\nimport PromoBanner from '../widgets/promoBanner'\r\nimport SubCategoryPanel from '../widgets/subCategoryPanel'\r\nimport { getI18nText } from '../../services/i18nService'\r\n\r\nconst SubcategoriesLister = ({ subCategories, path, banner, brands }) => {\r\n const locale = useContext(LocaleContext)\r\n const microcopy = useCategoriesI18n(locale)\r\n const [showAsGrid, setShowAsGrid] = useState(true)\r\n const [optionsGridClass, setOptionsGridClass] = useState(\r\n 'grid-lister__options--item d-flex align-items-center'\r\n )\r\n const [optionsListClass, setOptionsListClass] = useState(\r\n 'grid-lister__options--item d-flex align-items-center'\r\n )\r\n const [gridClasses, setGridClasses] = useState('grid-lister p-0 grid-col-3 is-products')\r\n\r\n useEffect(() => {\r\n let gridClasses = 'grid-lister p-0 grid-col-3 is-products'\r\n let optionsGridClass = 'grid-lister__options--item d-flex align-items-center'\r\n let optionsListClass = 'grid-lister__options--item d-flex align-items-center'\r\n\r\n if (showAsGrid) {\r\n gridClasses = gridClasses + ' grid-view'\r\n optionsGridClass = optionsGridClass + ' is-showing'\r\n } else {\r\n gridClasses = gridClasses + ' list-view'\r\n optionsListClass = optionsListClass + ' is-showing'\r\n }\r\n\r\n setOptionsGridClass(optionsGridClass)\r\n setOptionsListClass(optionsListClass)\r\n setGridClasses(gridClasses)\r\n }, [showAsGrid])\r\n\r\n function showCategoriesAsList() {\r\n setShowAsGrid(false)\r\n }\r\n\r\n function showCategoriesAsGrid() {\r\n setShowAsGrid(true)\r\n }\r\n\r\n return (\r\n <>\r\n <section className={gridClasses}>\r\n <div className=\"container\">\r\n <div className=\"row\">\r\n <div className=\"col\">\r\n <h2 className=\"text-center\">\r\n {getI18nText(microcopy, 'categories.productcategories')}\r\n </h2>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"col-15\">\r\n <div className=\"grid-lister__filter top row d-flex align-items-center\">\r\n <div className=\"col d-flex justify-content-end\">\r\n <div className=\"grid-lister__view-filter\">\r\n <div className=\"grid-lister__button d-flex align-items-center justify-content-end\">\r\n <span>{getI18nText(microcopy, 'categories.view')}</span>\r\n <i className=\"icon-Arrow-Down\"></i>\r\n </div>\r\n <div className=\"grid-lister__options\">\r\n <ul className=\"no-bullets\">\r\n <li\r\n className={optionsGridClass}\r\n data-grid-csslabel=\"grid-view\"\r\n onClick={showCategoriesAsGrid}\r\n >\r\n <p className=\"flex-grow-1\">\r\n {getI18nText(microcopy, 'categories.view.gridview')}\r\n </p>\r\n <i className=\"icon-Tick\"></i>\r\n </li>\r\n <li\r\n className={optionsListClass}\r\n data-grid-csslabel=\"list-view\"\r\n onClick={showCategoriesAsList}\r\n >\r\n <p className=\"flex-grow-1\">\r\n {getI18nText(microcopy, 'categories.view.listview')}\r\n </p>\r\n <i className=\"icon-Tick\"></i>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {subCategories.map((subCategory) => {\r\n if (subCategory.pageTitle || subCategory.title) {\r\n return (\r\n <SubCategoryPanel key={subCategory.id} subCategory={subCategory} path={path} />\r\n )\r\n } else {\r\n return null\r\n }\r\n })}\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <BrandsBar brands={brands} />\r\n {banner !== undefined && banner !== null ? <PromoBanner banner={banner} /> : null}\r\n </>\r\n )\r\n}\r\n\r\nexport default SubcategoriesLister\r\n","import React, { useState, useEffect, useRef, useContext } from 'react'\r\nimport { graphql, navigate } from 'gatsby'\r\nimport { Helmet } from 'react-helmet'\r\nimport Layout from '../components/pageComponents/layout'\r\nimport Breadcrumb from '../components/breadcrumb'\r\nimport { getProducts } from '../services/backendApiService'\r\nimport { v4 as uuid } from 'uuid'\r\nimport Error from '../components/notifications/error'\r\nimport { logException } from '../services/loggingService'\r\nimport { useCallingCountries } from '../hooks/useCountries'\r\nimport { getGeolocation } from '../services/geolocationService'\r\nimport { extract } from '../utils/pageBuilding'\r\nimport { buildFredhopperUrl, buildUrl } from '../services/urlService'\r\nimport Spinner from 'react-bootstrap/Spinner'\r\nimport {\r\n HeroBannerWithHeaderImageAndPanel,\r\n HeroBannerWithPanel,\r\n StandardHeroBanner,\r\n} from '../components/widgets/heroBanner'\r\nimport ProductLister from '../components/productCategory/productLister'\r\nimport SubcategoriesLister from '../components/productCategory/subcategoriesLister'\r\nimport { useSeoHrefLangRemovingUnstranslated } from '../hooks/useSeoHrefLang'\r\nimport { getImage } from 'gatsby-plugin-image'\r\nimport {\r\n addQueryParamToLocationPath,\r\n removeQueryParamFromLocationPath,\r\n getQueryParamValue,\r\n} from '../services/queryParamService'\r\nimport { useLocation } from '@reach/router'\r\nimport Seo from '../components/pageComponents/seo'\r\nimport { buildViewItemListEvent, publishViewItemListEvent } from '../services/dataLayerService'\r\nimport UserContext from '../contexts/userContext'\r\nimport BasketContext from '../contexts/basketContext'\r\nimport DataLayerContext from '../contexts/dataLayerContext'\r\n\r\nconst ProductCategoryTemplate = (props) => {\r\n const { eventApi } = useContext(DataLayerContext)\r\n const location = useLocation()\r\n const [locale] = useState(props.pageContext.locale)\r\n const [data] = useState(extract(\r\n props.data.allContentfulProductCategory,\r\n props.pageContext.id,\r\n props.pageContext.locale\r\n ))\r\n const facetmap = useRef(undefined)\r\n const friendlyFilters = useRef(undefined)\r\n const breadcrumbFriendlyFilters = useRef(undefined)\r\n const previousFilter = useRef({\r\n fhUrl: undefined,\r\n searchParams: undefined,\r\n page: undefined,\r\n })\r\n const callingCountries = useRef(useCallingCountries(locale))\r\n const { accountNumber, isDistributor } = useContext(UserContext)\r\n const { basketCurrency } = useContext(BasketContext)\r\n const [breadcrumbs, setBreadcrumbs] = useState(undefined)\r\n const [loading, setLoading] = useState(true)\r\n const [error, setError] = useState(false)\r\n const [showSubCategories, setShowSubCategories] = useState(false)\r\n const [robotsContent, setRobotsContent] = useState(undefined)\r\n const [headPreviousLink, setHeadPreviousLink] = useState(undefined)\r\n const [headNextLink, setHeadNextLink] = useState(undefined)\r\n const [pageTitle, setPageTitle] = useState()\r\n const [forcePage, setForcePage] = useState()\r\n const [fhQuery, setFhQuery] = useState()\r\n const fhAdditionalParams = useRef(undefined)\r\n const fhStartIndexParam = useRef('fh_start_index')\r\n const [fhTrigger, setFhTrigger] = useState(1)\r\n const viewSize = useRef(12)\r\n const [updatedAltPath, setUpdatedAltPath] = useState(undefined)\r\n const [searchItems, setsearchItems] = useState(undefined)\r\n const [filters, setFilters] = useState(undefined)\r\n const [eventModelToPublish, setEventModelToPublish] = useState()\r\n const [panelUrl, setPanelUrl] = useState('')\r\n\r\n useEffect(() => {\r\n setForcePage(getQueryParamValue('page', location))\r\n const activeSearch = removeQueryParamFromLocationPath('page', location)\r\n\r\n let newAltPaths = {}\r\n Object.entries(props.pageContext.altPaths).forEach((element) => {\r\n newAltPaths[element[0]] = element[1] + activeSearch\r\n })\r\n setUpdatedAltPath(newAltPaths)\r\n\r\n let currentPageValue = getQueryParamValue('page', location)\r\n function setFredhopperUniverses() {\r\n setLoading(true)\r\n if (\r\n data.fredhopperFacets !== undefined &&\r\n data.fredhopperFacets !== null &&\r\n data.fredhopperFacets.fredhopper_url !== null &&\r\n data.fredhopperFacets.fredhopper_url.fredhopper_url\r\n ) {\r\n const fredhopperUrl = data.fredhopperFacets.fredhopper_url.fredhopper_url\r\n const searchParams =\r\n activeSearch !== undefined && activeSearch.length > 1 ? activeSearch : undefined\r\n\r\n if (searchParams === undefined) {\r\n setPageTitle(data.pageTitle)\r\n }\r\n\r\n if (\r\n fhAdditionalParams.current !== undefined &&\r\n (fredhopperUrl !== previousFilter.current.fhUrl ||\r\n searchParams !== previousFilter.current.searchParams)\r\n ) {\r\n // reset - a different filter has been applied\r\n previousFilter.current = {\r\n fhUrl: fredhopperUrl,\r\n searchParams: searchParams,\r\n page: currentPageValue,\r\n }\r\n fhAdditionalParams.current = undefined\r\n currentPageValue = 1\r\n setForcePage(undefined)\r\n }\r\n\r\n {\r\n const showSubCategories = searchParams === undefined ? true : false\r\n const robotsContent =\r\n searchParams === undefined\r\n ? currentPageValue !== undefined && currentPageValue > 1\r\n ? 'noindex,follow'\r\n : 'index,follow'\r\n : 'noindex,follow'\r\n\r\n if (\r\n fhAdditionalParams.current === undefined &&\r\n currentPageValue !== undefined &&\r\n currentPageValue > 1\r\n ) {\r\n // zero index\r\n let currentPageMultiplier = parseInt(currentPageValue)\r\n if (isNaN(currentPageMultiplier) === false && currentPageMultiplier !== 0) {\r\n currentPageMultiplier = currentPageMultiplier - 1\r\n fhAdditionalParams.current = `${fhStartIndexParam.current}=${\r\n currentPageMultiplier * viewSize.current\r\n }&forcedPage=true`\r\n }\r\n }\r\n\r\n const fhUrl = buildFredhopperUrl(fredhopperUrl, fhAdditionalParams.current)\r\n\r\n if (searchParams !== undefined) {\r\n setShowSubCategories(showSubCategories)\r\n }\r\n\r\n setRobotsContent(robotsContent)\r\n setHeadPreviousLink(undefined)\r\n setHeadNextLink(undefined)\r\n\r\n getGeolocation(callingCountries.current)\r\n .then((geolocation) => {\r\n const requestId = uuid()\r\n getProducts(\r\n fhUrl,\r\n searchParams,\r\n geolocation.callingCountry,\r\n viewSize.current,\r\n requestId,\r\n location.search,\r\n locale\r\n )\r\n .then((data) => {\r\n if (data.requestId === requestId) {\r\n setsearchItems(data.categoryResponse.items)\r\n\r\n if (data.categoryResponse.filters) {\r\n setFilters(data.categoryResponse.filters)\r\n }\r\n\r\n if (data.categoryResponse.breadcrumbs) {\r\n setBreadcrumbs(data.categoryResponse.breadcrumbs)\r\n }\r\n\r\n previousFilter.current = {\r\n fhUrl: fredhopperUrl,\r\n searchParams: searchParams,\r\n page: currentPageValue,\r\n }\r\n\r\n setFhQuery(data.queryString)\r\n setHeadLinks(data.categoryResponse.items)\r\n\r\n if (\r\n friendlyFilters.current === undefined ||\r\n data.friendlyFilters.filterGroups.length > 0\r\n ) {\r\n friendlyFilters.current = data.friendlyFilters\r\n }\r\n\r\n if (\r\n breadcrumbFriendlyFilters.current === undefined ||\r\n data.breadcrumbFriendlyFilters.length > 0\r\n ) {\r\n breadcrumbFriendlyFilters.current = data.breadcrumbFriendlyFilters\r\n }\r\n\r\n setShowSubCategories(showSubCategories)\r\n setLoading(false)\r\n setError(false)\r\n }\r\n })\r\n .catch((error) => {\r\n logException('Error during getProducts request', error)\r\n setLoading(false)\r\n setHeadLinks(null)\r\n setError(true)\r\n })\r\n })\r\n .catch((error) => {\r\n logException('Error during getGeolocation request', error)\r\n setLoading(false)\r\n setHeadLinks(null)\r\n setError(true)\r\n })\r\n }\r\n } else {\r\n setRobotsContent('index,follow')\r\n setShowSubCategories(true)\r\n setLoading(false)\r\n }\r\n }\r\n\r\n setFredhopperUniverses()\r\n }, [data, fhTrigger, location])\r\n\r\n useEffect(() => {\r\n if (searchItems) {\r\n try {\r\n const startIndex = parseInt(searchItems.startIndex)\r\n let products = []\r\n for (let index = 0; index < searchItems.items.length; index++) {\r\n const element = searchItems.items[index]\r\n const product = {\r\n category: props.data.allContentfulProductCategory.nodes[0].fredhopperFacets.title,\r\n position: startIndex + index,\r\n series: element.attributes.series.value,\r\n sku: element.attributes.productid.value,\r\n productName: element.attributes.description.value,\r\n quantity: 1,\r\n price: null,\r\n }\r\n products.push(product)\r\n }\r\n\r\n setEventModelToPublish(\r\n buildViewItemListEvent(products, basketCurrency, locale, accountNumber, isDistributor)\r\n )\r\n } catch (error) {\r\n console.log(error)\r\n }\r\n }\r\n }, [searchItems])\r\n\r\n useEffect(() => {\r\n if (eventApi && eventModelToPublish) {\r\n publishViewItemListEvent(eventApi, eventModelToPublish)\r\n }\r\n }, [eventApi, eventModelToPublish])\r\n\r\n useEffect(() => {\r\n setPanelUrl(data.panel ? buildUrl(data.panel.page, '') : '')\r\n setPageTitle(data.pageTitle)\r\n }, [data])\r\n\r\n function handlePagingChange(event) {\r\n let additionalParams = `${searchItems.startIndexParamName}=${event.startIndex}`\r\n fhAdditionalParams.current = additionalParams\r\n\r\n setForcePage(event.forcePage)\r\n\r\n let navigateTo = ''\r\n if (event.forcePage === 1) {\r\n navigateTo = removeQueryParamFromLocationPath('page', location)\r\n } else {\r\n navigateTo = addQueryParamToLocationPath('page', event.forcePage, location)\r\n }\r\n\r\n navigate(navigateTo)\r\n }\r\n\r\n function changeViewSize(amount) {\r\n setForcePage(undefined)\r\n fhAdditionalParams.current = undefined\r\n viewSize.current = amount\r\n\r\n if (getQueryParamValue('page', location) === undefined) {\r\n setFhTrigger(fhTrigger + 1)\r\n } else {\r\n navigate(removeQueryParamFromLocationPath('page', location))\r\n }\r\n }\r\n\r\n function appliedFilters(filters) {\r\n let title = data.pageTitle\r\n\r\n if (filters && filters.length > 0) {\r\n let count = 0\r\n title += ' ('\r\n filters.forEach((item) => {\r\n if (count === 0) {\r\n title += item\r\n } else {\r\n if (count !== filters.length) {\r\n title += ','\r\n }\r\n title += ` ${item}`\r\n }\r\n\r\n count++\r\n })\r\n title += ')'\r\n }\r\n\r\n setPageTitle(title)\r\n }\r\n\r\n function setHeadLinks(searchItems) {\r\n if (searchItems) {\r\n const myTotalPages = Math.ceil(searchItems.totalItems / searchItems.viewSize)\r\n const myCurrentPage = Math.floor(searchItems.startIndex / searchItems.viewSize) + 1\r\n\r\n if (myCurrentPage === 1) {\r\n setHeadPreviousLink(undefined)\r\n } else {\r\n let path = addQueryParamToLocationPath('page', myCurrentPage - 1, location)\r\n if (myCurrentPage - 1 === 1) {\r\n path = removeQueryParamFromLocationPath('page', location)\r\n }\r\n\r\n setHeadPreviousLink(`${process.env.GATSBY_CANONICAL_BASE_URL}${location.pathname}${path}`)\r\n }\r\n\r\n if (myCurrentPage === myTotalPages) {\r\n setHeadNextLink(undefined)\r\n } else {\r\n let path = addQueryParamToLocationPath('page', myCurrentPage + 1, location)\r\n setHeadNextLink(`${process.env.GATSBY_CANONICAL_BASE_URL}${location.pathname}${path}`)\r\n }\r\n } else {\r\n setHeadPreviousLink(null)\r\n setHeadNextLink(null)\r\n }\r\n }\r\n\r\n return (\r\n <Layout\r\n locale={props.pageContext.locale}\r\n altPaths={props.pageContext.altPaths}\r\n categoryPaths={props.pageContext.categoryPaths}\r\n darkTheme={data.header === undefined || data.header === null}\r\n id={props.pageContext.navId}\r\n title={pageTitle}\r\n >\r\n <Helmet>\r\n {robotsContent !== undefined ? <meta name=\"robots\" content={robotsContent} /> : null}\r\n {headPreviousLink !== undefined ? <link rel=\"prev\" href={headPreviousLink} /> : null}\r\n {headNextLink !== undefined ? <link rel=\"next\" href={headNextLink} /> : null}\r\n {fhQuery ? <meta name=\"fh_q\" content={fhQuery} /> : null}\r\n {useSeoHrefLangRemovingUnstranslated({\r\n locale: props.pageContext.locale,\r\n altPaths: updatedAltPath,\r\n })}\r\n </Helmet>\r\n {data.panel !== undefined && data.panel !== null ? (\r\n <>\r\n {data.header !== undefined && data.header !== null ? (\r\n <HeroBannerWithHeaderImageAndPanel\r\n title={pageTitle}\r\n primaryDescription={data.summary.summary}\r\n panel={data.panel}\r\n panelUrl={panelUrl}\r\n headerImage={getImage(data.header)}\r\n brackets={data.brackets}\r\n />\r\n ) : (\r\n <HeroBannerWithPanel\r\n title={pageTitle}\r\n primaryDescription={data.summary.summary}\r\n panel={data.panel}\r\n panelUrl={panelUrl}\r\n brackets={data.brackets}\r\n />\r\n )}\r\n </>\r\n ) : (\r\n <StandardHeroBanner\r\n title={pageTitle}\r\n primaryDescription={data.summary.summary}\r\n brackets={data.brackets}\r\n />\r\n )}\r\n {error === true ? (\r\n <Error />\r\n ) : loading === true ? (\r\n <div className=\"spinner-container\">\r\n <Spinner className=\"spinner spinner-medium\" animation=\"border\" />\r\n </div>\r\n ) : (\r\n <>\r\n {data.subCategories === null || showSubCategories === false ? null : (\r\n <SubcategoriesLister\r\n subCategories={data.subCategories}\r\n brands={data.brands}\r\n path={props.path}\r\n banner={data.banner}\r\n />\r\n )}\r\n <ProductLister\r\n loading={loading}\r\n searchItems={searchItems}\r\n filters={filters}\r\n viewSize={viewSize.current}\r\n changeViewSize={changeViewSize}\r\n breadcrumbs={breadcrumbs}\r\n facetmap={facetmap}\r\n handlePagingChange={handlePagingChange}\r\n breadcrumbFriendlyFilters={breadcrumbFriendlyFilters}\r\n friendlyFilters={friendlyFilters}\r\n forcePage={forcePage}\r\n appliedFiltersCallback={appliedFilters}\r\n />\r\n </>\r\n )}\r\n\r\n <Breadcrumb id={props.pageContext.navId} />\r\n </Layout>\r\n )\r\n}\r\n\r\nexport default ProductCategoryTemplate\r\n\r\nexport function Head(props) {\r\n const [data] = useState(extract(\r\n props.data.allContentfulProductCategory,\r\n props.pageContext.id,\r\n props.pageContext.locale\r\n ))\r\n\r\n return (\r\n <>\r\n <Seo title={data.pageTitle} description={props.pageContext.metaDescription} />\r\n </>\r\n )\r\n}\r\n\r\n// ... on ContentfulProductCategoryTile {\r\n// id\r\n// node_locale\r\n// title\r\n// shortSummary\r\n// link {\r\n// slug\r\n// }\r\n// image {\r\n// gatsbyImageData(placeholder: BLURRED)\r\n// }\r\n// }\r\n\r\n// panel {\r\n// button\r\n// heading\r\n// paragraph {\r\n// paragraph\r\n// }\r\n// page {\r\n// slug\r\n// navigation_element {\r\n// slug\r\n// navigation_element {\r\n// slug\r\n// navigation_element {\r\n// slug\r\n// }\r\n// }\r\n// }\r\n// }\r\n// }\r\n\r\nexport const pageQuery = graphql`\r\n query ($locale: String, $id: String) {\r\n allContentfulProductCategory(filter: { node_locale: { eq: $locale }, id: { eq: $id } }) {\r\n nodes {\r\n id\r\n node_locale\r\n pageTitle\r\n brackets\r\n header {\r\n gatsbyImageData(placeholder: BLURRED)\r\n }\r\n summary {\r\n summary\r\n }\r\n subCategories {\r\n ... on ContentfulProductCategory {\r\n id\r\n node_locale\r\n pageTitle\r\n shortSummary\r\n navigation_element {\r\n slug\r\n }\r\n image {\r\n gatsbyImageData(placeholder: BLURRED)\r\n }\r\n }\r\n ... on ContentfulProductCategoryTile {\r\n id\r\n node_locale\r\n title\r\n shortSummary\r\n link {\r\n slug\r\n }\r\n image {\r\n gatsbyImageData(placeholder: BLURRED)\r\n }\r\n }\r\n }\r\n fredhopperFacets {\r\n id\r\n title\r\n fredhopperUrl\r\n fredhopper_url {\r\n fredhopper_url\r\n }\r\n }\r\n panel {\r\n button\r\n heading\r\n paragraph {\r\n paragraph\r\n }\r\n page {\r\n slug\r\n navigation_element {\r\n slug\r\n navigation_element {\r\n slug\r\n navigation_element {\r\n slug\r\n }\r\n }\r\n }\r\n }\r\n }\r\n banner {\r\n button\r\n heading\r\n paragraph {\r\n paragraph\r\n }\r\n background\r\n preHeader\r\n image {\r\n gatsbyImageData(placeholder: BLURRED)\r\n }\r\n page {\r\n slug\r\n navigation_element {\r\n slug\r\n navigation_element {\r\n slug\r\n navigation_element {\r\n slug\r\n navigation_element {\r\n slug\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`\r\n","export function extract(result, id, locale) {\r\n if (result) {\r\n for (let i = 0; i < result.nodes.length; i++) {\r\n let node = result.nodes[i]\r\n if (node.id === id && node.node_locale === locale) {\r\n return node\r\n }\r\n }\r\n }\r\n\r\n return undefined\r\n}"],"names":["_ref","banner","bannerStylingClass","setBannerStylingClass","useState","textStylingClass","setTextStylingClass","preheaderStylingClass","setPreheaderStylingClass","bannerUrl","setBannerUrl","image","setImage","useEffect","buildUrl","page","getImage","background","React","className","preHeader","heading","paragraph","Link","to","button","GatsbyImage","alt","loading","searchItems","filters","viewSize","changeViewSize","breadcrumbs","handlePagingChange","forcePage","locale","useContext","LocaleContext","microcopy","useCategoriesI18n","showProductsAsGrid","setShowProductsAsGrid","paging","setPaging","optionsGridClass","setOptionsGridClass","optionsListClass","setOptionsListClass","productGridClasses","setProductGridClasses","undefined","totalItems","startIndex","getI18nText","onClick","FredhopperFilters","items","map","item","index","SearchResult","key","Paging","onChangeCallback","brands","element","brandImage","logo","name","subCategory","path","navigationPath","setNavigationPath","navigation_element","slug","link","pageTitle","objectFit","imgClassName","src","title","shortSummary","StandardButton","icon","StandardButtonArrowIcon","subCategories","showAsGrid","setShowAsGrid","gridClasses","setGridClasses","SubCategoryPanel","id","BrandsBar","PromoBanner","props","eventApi","DataLayerContext","location","useLocation","pageContext","data","extract","allContentfulProductCategory","facetmap","useRef","friendlyFilters","breadcrumbFriendlyFilters","previousFilter","fhUrl","searchParams","callingCountries","useCallingCountries","accountNumber","isDistributor","UserContext","basketCurrency","BasketContext","setBreadcrumbs","setLoading","error","setError","showSubCategories","setShowSubCategories","robotsContent","setRobotsContent","headPreviousLink","setHeadPreviousLink","headNextLink","setHeadNextLink","setPageTitle","setForcePage","fhQuery","setFhQuery","fhAdditionalParams","fhStartIndexParam","fhTrigger","setFhTrigger","updatedAltPath","setUpdatedAltPath","setsearchItems","setFilters","eventModelToPublish","setEventModelToPublish","panelUrl","setPanelUrl","setHeadLinks","myTotalPages","Math","ceil","myCurrentPage","floor","addQueryParamToLocationPath","removeQueryParamFromLocationPath","pathname","getQueryParamValue","activeSearch","newAltPaths","Object","entries","altPaths","forEach","currentPageValue","fredhopperFacets","fredhopper_url","fredhopperUrl","length","current","currentPageMultiplier","parseInt","isNaN","buildFredhopperUrl","getGeolocation","then","geolocation","requestId","uuid","getProducts","callingCountry","search","categoryResponse","queryString","filterGroups","catch","logException","setFredhopperUniverses","products","product","category","nodes","position","series","attributes","value","sku","productid","productName","description","quantity","price","push","buildViewItemListEvent","console","log","publishViewItemListEvent","panel","Layout","categoryPaths","darkTheme","header","navId","Helmet","content","rel","href","useSeoHrefLangRemovingUnstranslated","HeroBannerWithHeaderImageAndPanel","primaryDescription","summary","headerImage","brackets","HeroBannerWithPanel","StandardHeroBanner","Error","Spinner","animation","SubcategoriesLister","ProductLister","amount","navigate","event","additionalParams","startIndexParamName","navigateTo","appliedFiltersCallback","count","Breadcrumb","Head","Seo","metaDescription","result","i","node","node_locale"],"sourceRoot":""}