{"version":3,"file":"262c164ca22c5987febcba6a171825eba481477b-48bc405063a56d479dee.js","mappings":"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","sources":["webpack://imi-webstore/./node_modules/classnames/index.js","webpack://imi-webstore/./node_modules/dom-helpers/esm/ownerWindow.js","webpack://imi-webstore/./node_modules/dom-helpers/esm/ownerDocument.js","webpack://imi-webstore/./node_modules/dom-helpers/esm/hyphenate.js","webpack://imi-webstore/./node_modules/dom-helpers/esm/hyphenateStyle.js","webpack://imi-webstore/./node_modules/dom-helpers/esm/isTransform.js","webpack://imi-webstore/./node_modules/dom-helpers/esm/css.js","webpack://imi-webstore/./node_modules/dom-helpers/esm/getComputedStyle.js","webpack://imi-webstore/./src/components/breadcrumb.js","webpack://imi-webstore/./src/components/header/whoAmI.js","webpack://imi-webstore/./src/contexts/altPathsContext.js","webpack://imi-webstore/./src/contexts/categoryPathsContext.js","webpack://imi-webstore/./src/components/pageComponents/checkoutHeader.js","webpack://imi-webstore/./src/hooks/i18n/useFooterI18n.js","webpack://imi-webstore/./src/hooks/useFooterLinks.js","webpack://imi-webstore/./src/hooks/navigation/useContactNavigation.js","webpack://imi-webstore/./src/components/pageComponents/standardFooter.js","webpack://imi-webstore/./src/hooks/useSocialMediaLinks.js","webpack://imi-webstore/./src/components/pageComponents/checkoutFooter.js","webpack://imi-webstore/./src/components/notifications/notificationsPanel.js","webpack://imi-webstore/./src/components/pageComponents/dynamicDataLayer.js","webpack://imi-webstore/./src/components/header/login.js","webpack://imi-webstore/./src/hooks/slugs/useSearchSlug.js","webpack://imi-webstore/./src/components/header/search.js","webpack://imi-webstore/./src/components/header/languages.js","webpack://imi-webstore/./src/components/header/basket.js","webpack://imi-webstore/./src/components/header/liveChat.js","webpack://imi-webstore/./src/components/header/distributors.js","webpack://imi-webstore/./src/components/header/suggestionResults/suggestionResultLink.js","webpack://imi-webstore/./src/components/header/suggestionResults/productSuggestionResult.js","webpack://imi-webstore/./src/components/header/suggestionResults/datasheetSuggestionResult.js","webpack://imi-webstore/./src/components/header/suggestionResults/partNumberSuggestionResult.js","webpack://imi-webstore/./src/hooks/navigation/useConfiguratorsNavigation.js","webpack://imi-webstore/./src/components/header/suggestionResults/categorySuggestionsResult.js","webpack://imi-webstore/./src/components/header/suggestionResults/contentSuggestionsResult.js","webpack://imi-webstore/./src/components/header/suggestions.js","webpack://imi-webstore/./src/hooks/useSuggestFacet.js","webpack://imi-webstore/./src/components/header/navigation.js","webpack://imi-webstore/./src/components/header/languagesSelect.js","webpack://imi-webstore/./src/components/header/mobileMenu.js","webpack://imi-webstore/./src/components/offcanvas/loggedinOffcanvas.js","webpack://imi-webstore/./src/components/offcanvas/loginOffcanvas.js","webpack://imi-webstore/./src/components/pageComponents/standardHeader.js","webpack://imi-webstore/./src/components/pageComponents/jobs/unfinishedAddMultipleProductsToBasketJobs.js","webpack://imi-webstore/./src/components/pageComponents/jobs/unfinishedJobs.js","webpack://imi-webstore/./src/components/pageComponents/messageBar.js","webpack://imi-webstore/./src/hooks/useAlertRow.js","webpack://imi-webstore/./src/components/pageComponents/layout.js","webpack://imi-webstore/./src/components/widgets/standardButton.js","webpack://imi-webstore/./src/contexts/headerHeightContext.js","webpack://imi-webstore/./src/contexts/localeContext.js","webpack://imi-webstore/./src/hooks/i18n/useAccountI18n.js","webpack://imi-webstore/./src/hooks/i18n/useBasketI18n.js","webpack://imi-webstore/./src/hooks/i18n/useConfiguratorI18n.js","webpack://imi-webstore/./src/hooks/i18n/useContactI18n.js","webpack://imi-webstore/./src/hooks/i18n/useHeaderI18n.js","webpack://imi-webstore/./src/hooks/i18n/useLoginI18n.js","webpack://imi-webstore/./src/hooks/i18n/useRegisterI18n.js","webpack://imi-webstore/./src/hooks/i18n/useSearchI18n.js","webpack://imi-webstore/./src/hooks/navigation/useBlogNavigation.js","webpack://imi-webstore/./src/hooks/navigation/useDistributorsNavigation.js","webpack://imi-webstore/./src/hooks/navigation/useVMConfiguratorNavigation.js","webpack://imi-webstore/./src/hooks/navigation/useVRConfiguratorNavigation.js","webpack://imi-webstore/./src/hooks/navigation/useVRQConfiguratorNavigation.js","webpack://imi-webstore/./src/hooks/navigation/useVSConfiguratorNavigation.js","webpack://imi-webstore/./src/hooks/slugs/useAccountSlug.js","webpack://imi-webstore/./src/hooks/slugs/useBasketSlug.js","webpack://imi-webstore/./src/hooks/slugs/useProductSlug.js","webpack://imi-webstore/./src/hooks/slugs/useRegisterSlug.js","webpack://imi-webstore/./src/hooks/useBlogs.js","webpack://imi-webstore/./src/hooks/useCountries.js","webpack://imi-webstore/./src/hooks/useNavigationHome.js","webpack://imi-webstore/./src/hooks/useOnPageLoad.js","webpack://imi-webstore/./src/hooks/useOnResize.js","webpack://imi-webstore/./src/hooks/useOnScroll.js","webpack://imi-webstore/./src/services/currencyService.js","webpack://imi-webstore/./src/services/dataLayerService.js","webpack://imi-webstore/./src/services/domService.js","webpack://imi-webstore/./src/services/jobApiService.js","webpack://imi-webstore/./src/services/queryParamService.js","webpack://imi-webstore/./src/services/subjects/jobSubject.js","webpack://imi-webstore/./src/services/urlService.js","webpack://imi-webstore/./src/services/userService.js","webpack://imi-webstore/./src/services/valveIslandConfiguratorService.js","webpack://imi-webstore/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://imi-webstore/./node_modules/uncontrollable/lib/esm/utils.js","webpack://imi-webstore/./node_modules/uncontrollable/lib/esm/hook.js","webpack://imi-webstore/./node_modules/@restart/hooks/esm/useCommittedRef.js","webpack://imi-webstore/./node_modules/@restart/hooks/esm/useEventCallback.js","webpack://imi-webstore/./node_modules/react-bootstrap/esm/AlertHeading.js","webpack://imi-webstore/./node_modules/react-bootstrap/esm/divWithClassName.js","webpack://imi-webstore/./node_modules/@restart/hooks/esm/useIsomorphicEffect.js","webpack://imi-webstore/./node_modules/@restart/hooks/esm/useResizeObserver.js","webpack://imi-webstore/./node_modules/@restart/ui/esm/Button.js","webpack://imi-webstore/./node_modules/@restart/ui/esm/Anchor.js","webpack://imi-webstore/./node_modules/react-bootstrap/esm/AlertLink.js","webpack://imi-webstore/./node_modules/react-bootstrap/esm/Fade.js","webpack://imi-webstore/./node_modules/react-bootstrap/esm/CloseButton.js","webpack://imi-webstore/./node_modules/react-bootstrap/esm/Alert.js","webpack://imi-webstore/./node_modules/react-bootstrap/esm/createChainedFunction.js","webpack://imi-webstore/./node_modules/react-bootstrap/esm/Collapse.js","webpack://imi-webstore/./node_modules/react-bootstrap/esm/Spinner.js","webpack://imi-webstore/./node_modules/react-bootstrap/esm/ThemeProvider.js","webpack://imi-webstore/./node_modules/@restart/hooks/esm/useMergedRefs.js","webpack://imi-webstore/./node_modules/react-bootstrap/esm/TransitionWrapper.js","webpack://imi-webstore/./node_modules/react-bootstrap/esm/safeFindDOMNode.js","webpack://imi-webstore/./node_modules/dom-helpers/esm/canUseDOM.js","webpack://imi-webstore/./node_modules/dom-helpers/esm/addEventListener.js","webpack://imi-webstore/./node_modules/dom-helpers/esm/removeEventListener.js","webpack://imi-webstore/./node_modules/dom-helpers/esm/listen.js","webpack://imi-webstore/./node_modules/dom-helpers/esm/transitionEnd.js","webpack://imi-webstore/./node_modules/dom-helpers/esm/triggerEvent.js","webpack://imi-webstore/./node_modules/react-bootstrap/esm/transitionEndListener.js","webpack://imi-webstore/./node_modules/react-bootstrap/esm/triggerBrowserReflow.js","webpack://imi-webstore/./node_modules/react-is/cjs/react-is.production.min.js","webpack://imi-webstore/./node_modules/react-is/index.js","webpack://imi-webstore/./node_modules/react-transition-group/esm/config.js","webpack://imi-webstore/./node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack://imi-webstore/./node_modules/react-transition-group/esm/Transition.js","webpack://imi-webstore/./node_modules/react-transition-group/esm/utils/reflow.js","webpack://imi-webstore/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://imi-webstore/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://imi-webstore/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://imi-webstore/./node_modules/@loadable/component/dist/esm/loadable.esm.mjs"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import ownerDocument from './ownerDocument';\n/**\n * Returns the owner window of a given element.\n * \n * @param node the element\n */\n\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc && doc.defaultView || window;\n}","/**\n * Returns the owner document of a given element.\n * \n * @param node the element\n */\nexport default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n var css = '';\n var transforms = '';\n\n if (typeof property === 'string') {\n return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n }\n\n Object.keys(property).forEach(function (key) {\n var value = property[key];\n\n if (!value && value !== 0) {\n node.style.removeProperty(hyphenate(key));\n } else if (isTransform(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += hyphenate(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += \"transform: \" + transforms + \";\";\n }\n\n node.style.cssText += \";\" + css;\n}\n\nexport default style;","import ownerWindow from './ownerWindow';\n/**\n * Returns one or all computed style properties of an element.\n * \n * @param node the element\n * @param psuedoElement the style property\n */\n\nexport default function getComputedStyle(node, psuedoElement) {\n return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","import React, { useContext, useEffect, useState } from 'react'\r\nimport { Link } from 'gatsby'\r\nimport LocaleContext from '../contexts/localeContext'\r\nimport { useNavigationHome } from '../hooks/useNavigationHome'\r\nimport { useHeaderI18n } from '../hooks/i18n/useHeaderI18n'\r\nimport { useBlogs } from '../hooks/useBlogs'\r\nimport { getI18nText } from '../services/i18nService'\r\n\r\nconst Breadcrumb = ({ id, finalCrumb }) => {\r\n const locale = useContext(LocaleContext)\r\n const home = useNavigationHome(locale)\r\n const microcopy = useHeaderI18n(locale)\r\n const blogs = useBlogs(locale)\r\n const [currentCrumbs, setCurrentCrumbs] = useState()\r\n\r\n useEffect(() => {\r\n let crumbs = {}\r\n let homeCrumbs = [{ slug: home.slug, label: home.name, path: '/' + home.slug, id: home.id }]\r\n\r\n crumbs[home.id] = homeCrumbs\r\n\r\n buildCrumbsFromChildPages(crumbs, homeCrumbs, home.childPages, blogs)\r\n\r\n setCurrentCrumbs(crumbs[id])\r\n }, [home, id, blogs])\r\n\r\n // loop round and build crumbs\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
    \r\n
  • {getI18nText(microcopy, 'header.breadcrumbstart')}
  • \r\n {currentCrumbs === undefined\r\n ? null\r\n : currentCrumbs.map((crumb) => {\r\n return (\r\n
  • \r\n {crumb.id === id && !finalCrumb ? (\r\n crumb.label\r\n ) : (\r\n {crumb.label}\r\n )}\r\n
  • \r\n )\r\n })}\r\n {finalCrumb ?
  • {finalCrumb}
  • : null}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nfunction buildCrumbsForChild(parentCrumbs, currentChild) {\r\n let pathElements = []\r\n\r\n for (let index = 0; index < parentCrumbs.length; index++) {\r\n let crumb = parentCrumbs[index]\r\n pathElements.push(crumb.slug)\r\n }\r\n\r\n pathElements.push(currentChild.slug)\r\n let path = '/' + pathElements.join('/')\r\n\r\n let childCrumbs = [\r\n { slug: currentChild.slug, label: currentChild.name, path: path, id: currentChild.id },\r\n ]\r\n return [...parentCrumbs, ...childCrumbs]\r\n}\r\n\r\nexport function buildCrumbsFromChildPages(crumbs, parentCrumbs, childPages, blogs) {\r\n if (childPages !== null && childPages !== undefined) {\r\n for (let index = 0; index < childPages.length; index++) {\r\n let child = childPages[index]\r\n let childCrumbs = buildCrumbsForChild(parentCrumbs, child)\r\n crumbs[child.id] = childCrumbs\r\n\r\n buildCrumbsFromChildPages(crumbs, childCrumbs, child.childPages, blogs)\r\n\r\n if (\r\n child.page !== null &&\r\n child.page !== undefined &&\r\n child.page.internal !== undefined &&\r\n child.page.internal !== null &&\r\n child.page.internal.type === 'ContentfulBlogHomePage'\r\n ) {\r\n let blogChildPages = []\r\n blogs.forEach((blog) => {\r\n blogChildPages.push({ childpages: null, id: blog.id, name: blog.title, slug: blog.slug })\r\n })\r\n buildCrumbsFromChildPages(crumbs, childCrumbs, blogChildPages)\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default Breadcrumb\r\n","import { useEffect, useContext, useRef } from 'react'\r\nimport { v4 as uuid } from 'uuid'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { getValidCurrencies, whoAmI } from '../../services/backendApiService'\r\nimport { logException } from '../../services/loggingService'\r\nimport UserContext from '../../contexts/userContext'\r\nimport BasketContext from '../../contexts/basketContext'\r\nimport { getMyBasket } from '../../services/basketService'\r\nimport { useCountries } from '../../hooks/useCountries'\r\nimport GeolocationContext from '../../contexts/geolocationContext'\r\nimport LanguageContext from '../../contexts/languageContext'\r\nimport CurrencyContext from '../../contexts/currencyContext'\r\nimport { GetCurrencyByMaxMind } from '../../services/currencyService'\r\n\r\nlet whoAmIPromise = undefined\r\n\r\nconst WhoAmI = ({ basketContextId, skipGetBasket }) => {\r\n const locale = useContext(LocaleContext)\r\n const { country } = useContext(GeolocationContext)\r\n const { language } = useContext(LanguageContext)\r\n const userContext = useRef(useContext(UserContext))\r\n const basketContext = useRef(useContext(BasketContext))\r\n const currencyContext = useRef(useContext(CurrencyContext))\r\n const countries = useRef(useCountries(locale))\r\n\r\n useEffect(() => {\r\n function checkLogin() {\r\n whoAmIPromise = new Promise(() => {\r\n const requestId = uuid()\r\n userContext.current.setQueryingUser(true)\r\n whoAmI(requestId)\r\n .then(async (data) => {\r\n if (data && data.requestId === requestId) {\r\n let isAnonymous = true\r\n\r\n if (data.email === null) {\r\n userContext.current.setEmail(null)\r\n userContext.current.setFirstName(null)\r\n userContext.current.setLastName(null)\r\n userContext.current.setAccountType(null)\r\n userContext.current.setCanCheckout(false)\r\n userContext.current.setCountry(null)\r\n userContext.current.setPAndASearchFeatureEnabled(false)\r\n userContext.current.setIsDistributor(false)\r\n userContext.current.setOrganisationId(null)\r\n userContext.current.setAccountNumber(null)\r\n userContext.current.setAllowPromoCodes(false)\r\n userContext.current.setAllowCertificateOfConformity(false)\r\n userContext.current.setInvoicesFeatureEnabled(false)\r\n userContext.current.setQuotesFeatureEnabled(false)\r\n } else {\r\n isAnonymous = false\r\n userContext.current.setEmail(data.email)\r\n userContext.current.setFirstName(data.firstName)\r\n userContext.current.setLastName(data.lastName)\r\n userContext.current.setAccountType(data.accountType)\r\n userContext.current.setCanCheckout(data.canCheckout)\r\n userContext.current.setCountry(data.country)\r\n userContext.current.setPAndASearchFeatureEnabled(data.pAndASearchFeatureEnabled)\r\n userContext.current.setIsDistributor(data.isDistributorAccount)\r\n userContext.current.setOrganisationId(data.organisationId)\r\n userContext.current.setAccountNumber(data.accountNumber)\r\n userContext.current.setAllowPromoCodes(data.allowPromoCodes)\r\n userContext.current.setAllowCertificateOfConformity(\r\n data.allowCertificateOfConformity\r\n )\r\n userContext.current.setInvoicesFeatureEnabled(data.invoicesFeatureEnabled)\r\n userContext.current.setQuotesFeatureEnabled(data.quotesFeatureEnabled)\r\n }\r\n\r\n userContext.current.setQueryingUser(false)\r\n\r\n let validCurrencies\r\n if (!currencyContext.current.validCurrencies) {\r\n const requestId = uuid()\r\n await getValidCurrencies(requestId).then((data) => {\r\n currencyContext.current.setValidCurrencies(data.validCurrencies)\r\n validCurrencies = data.currencies\r\n })\r\n } else {\r\n validCurrencies = currencyContext.current.validCurrencies\r\n }\r\n\r\n if (isAnonymous && country) {\r\n const currency = GetCurrencyByMaxMind(country, countries.current, validCurrencies)\r\n\r\n const webstoreCountry = countries.current.find(\r\n (element) => element.maxmindCode.toUpperCase() === country.toUpperCase()\r\n ).alpha2Code\r\n\r\n if (\r\n currency !== null &&\r\n currency !== undefined &&\r\n webstoreCountry !== null &&\r\n webstoreCountry !== undefined\r\n ) {\r\n getBasket(basketContext.current.basketId, currency, webstoreCountry, requestId)\r\n }\r\n } else if (isAnonymous === false) {\r\n let basketId = data.basketId\r\n if (\r\n data.basketId !== basketContext.current.basketId &&\r\n basketContext.current.basketId !== null &&\r\n basketContext.current.basketId !== undefined &&\r\n basketContext.current.basketItemsCount > 0\r\n ) {\r\n basketId = basketContext.current.basketId\r\n }\r\n\r\n getBasket(basketId, null, null, requestId)\r\n }\r\n }\r\n })\r\n .catch((error) => {\r\n if (error.requestId === requestId) {\r\n logException('Error during WhoAmI request', error)\r\n userContext.current.setEmail(null)\r\n userContext.current.setFirstName(null)\r\n userContext.current.setLastName(null)\r\n userContext.current.setAccountType(null)\r\n userContext.current.setCanCheckout(false)\r\n userContext.current.setCountry(null)\r\n userContext.current.setQueryingUser(false)\r\n userContext.current.setPAndASearchFeatureEnabled(false)\r\n userContext.current.setIsDistributor(false)\r\n userContext.current.setOrganisationId(null)\r\n userContext.current.setAccountNumber(null)\r\n basketContext.current.setBasketFeatureAvailability(false)\r\n userContext.current.setAllowPromoCodes(false)\r\n userContext.current.setAllowCertificateOfConformity(false)\r\n userContext.current.setInvoicesFeatureEnabled(false)\r\n userContext.current.setQuotesFeatureEnabled(false)\r\n }\r\n })\r\n .finally(() => {\r\n whoAmIPromise = undefined\r\n })\r\n })\r\n }\r\n\r\n function getBasket(basketId, currency, country, requestId) {\r\n if (skipGetBasket && skipGetBasket === true) {\r\n return\r\n }\r\n getMyBasket(basketId, currency, country, requestId, basketContextId, language)\r\n .then((data) => {\r\n try {\r\n if (data.requestId === requestId) {\r\n basketContext.current.setBasket(data.basket)\r\n basketContext.current.setBasketFeatureAvailability(true)\r\n }\r\n } catch (error) {\r\n logException('Error when trying to set basket', error)\r\n }\r\n })\r\n .catch((err) => {\r\n if (err.requestId === requestId) {\r\n logException('Error while retrieving basket', err)\r\n if (err['basketAvailable'] === undefined || err['basketAvailable'] === false) {\r\n basketContext.current.setBasketFeatureAvailability(false)\r\n } else {\r\n basketContext.current.setBasketFeatureAvailability(true)\r\n }\r\n }\r\n })\r\n }\r\n\r\n if (country && whoAmIPromise === undefined) {\r\n checkLogin()\r\n }\r\n }, [country, userContext, countries, locale, language])\r\n\r\n return null\r\n}\r\n\r\nexport default WhoAmI\r\n","import React from 'react'\r\n\r\nconst AltPathsContext = React.createContext({})\r\n\r\nexport const AltPathsProvider = AltPathsContext.Provider\r\nexport default AltPathsContext","import React from 'react'\r\n\r\nconst CateogryPathsContext = React.createContext({})\r\n\r\nexport const CategoryPathsProvider = CateogryPathsContext.Provider\r\nexport default CateogryPathsContext\r\n","import React, { useContext } from 'react'\r\nimport loadable from '@loadable/component'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { useNavigationHome } from '../../hooks/useNavigationHome'\r\nimport { Link } from 'gatsby'\r\nimport { useHeaderI18n } from '../../hooks/i18n/useHeaderI18n'\r\nimport { BasketContextCheckout } from '../../services/backendApiService'\r\nimport { getI18nText } from '../../services/i18nService'\r\n\r\nconst WhoAmI = loadable(() => import('../header/whoAmI'))\r\n\r\nconst CheckoutHeader = ({ skipGetBasket }) => {\r\n const locale = useContext(LocaleContext)\r\n const microcopy = useHeaderI18n(locale)\r\n const home = useNavigationHome(locale)\r\n\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

{getI18nText(microcopy, 'header.securecheckout')}

\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default CheckoutHeader\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveMicrocopyFromResourcesQueryResultForLocale } from '../../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n en: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en\" }, key: { eq: \"footer\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n de: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"de\" }, key: { eq: \"footer\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n nl: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"nl\" }, key: { eq: \"footer\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n fr: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"fr\" }, key: { eq: \"footer\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n it: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"it\" }, key: { eq: \"footer\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n es: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"es\" }, key: { eq: \"footer\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n enUS: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en-US\" }, key: { eq: \"footer\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n cs: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"cs\" }, key: { eq: \"footer\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n pl: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"pl\" }, key: { eq: \"footer\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n pt: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"pt\" }, key: { eq: \"footer\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const useFooterI18n = (locale) => {\r\n return resolveMicrocopyFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveNodesFromResourcesQueryResultForLocale } from '../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n en: allContentfulFooterLinks(filter: { node_locale: { eq: \"en\" } }) {\r\n nodes {\r\n ...CoreFooterLinksFields\r\n }\r\n }\r\n de: allContentfulFooterLinks(filter: { node_locale: { eq: \"de\" } }) {\r\n nodes {\r\n ...CoreFooterLinksFields\r\n }\r\n }\r\n nl: allContentfulFooterLinks(filter: { node_locale: { eq: \"nl\" } }) {\r\n nodes {\r\n ...CoreFooterLinksFields\r\n }\r\n }\r\n fr: allContentfulFooterLinks(filter: { node_locale: { eq: \"fr\" } }) {\r\n nodes {\r\n ...CoreFooterLinksFields\r\n }\r\n }\r\n it: allContentfulFooterLinks(filter: { node_locale: { eq: \"it\" } }) {\r\n nodes {\r\n ...CoreFooterLinksFields\r\n }\r\n }\r\n es: allContentfulFooterLinks(filter: { node_locale: { eq: \"es\" } }) {\r\n nodes {\r\n ...CoreFooterLinksFields\r\n }\r\n }\r\n enUS: allContentfulFooterLinks(filter: { node_locale: { eq: \"en-US\" } }) {\r\n nodes {\r\n ...CoreFooterLinksFields\r\n }\r\n }\r\n cs: allContentfulFooterLinks(filter: { node_locale: { eq: \"cs\" } }) {\r\n nodes {\r\n ...CoreFooterLinksFields\r\n }\r\n }\r\n pl: allContentfulFooterLinks(filter: { node_locale: { eq: \"pl\" } }) {\r\n nodes {\r\n ...CoreFooterLinksFields\r\n }\r\n }\r\n pt: allContentfulFooterLinks(filter: { node_locale: { eq: \"pt\" } }) {\r\n nodes {\r\n ...CoreFooterLinksFields\r\n }\r\n }\r\n }\r\n`\r\nexport const useFooterLinks = (locale) => {\r\n return resolveNodesFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n ContactNavigationElements: allContentfulNavigationElement(\r\n filter: { navigation_id: { eq: \"Contact\" } }\r\n ) {\r\n nodes {\r\n navigation_id\r\n node_locale\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 useContactNavigation = (locale) => {\r\n const { ContactNavigationElements } = useStaticQuery(resourcesQuery)\r\n let navigationElement\r\n ContactNavigationElements.nodes.forEach((element) => {\r\n if (element.node_locale === locale) {\r\n navigationElement = element\r\n }\r\n })\r\n return navigationElement\r\n}\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport { useFooterI18n } from '../../hooks/i18n/useFooterI18n'\r\nimport { useFooterLinks } from '../../hooks/useFooterLinks'\r\nimport { useNavigationHome } from '../../hooks/useNavigationHome'\r\nimport { useRegisterSlug } from '../../hooks/slugs/useRegisterSlug'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { Link } from 'gatsby'\r\nimport { useRegisterI18n } from '../../hooks/i18n/useRegisterI18n'\r\nimport { buildUrl, extractDomain } from '../../services/urlService'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport { useContactNavigation } from '../../hooks/navigation/useContactNavigation'\r\nimport { useSocialMediaLinks } from '../../hooks/useSocialMediaLinks'\r\nimport {\r\n buildContactButtonInteractionEvent,\r\n publishContactButtonInteractionEvent,\r\n buildRegisterButtonInteractionEvent,\r\n publishRegisterButtonInteractionEvent,\r\n} from '../../services/dataLayerService'\r\nimport DataLayerContext from '../../contexts/dataLayerContext'\r\n\r\nconst StandardFooter = () => {\r\n const { eventApi } = useContext(DataLayerContext)\r\n const locale = useContext(LocaleContext)\r\n const footerLinks = useFooterLinks(locale)\r\n const navigationHome = useNavigationHome(locale).slug\r\n const socialMediaLinks = useSocialMediaLinks(locale)\r\n const registerUrl = '/' + navigationHome + '/' + useRegisterSlug(locale)\r\n const contactUrl = buildUrl(useContactNavigation(locale), '')\r\n const microcopy = useFooterI18n(locale)\r\n const registerMicrocopy = useRegisterI18n(locale)\r\n const [firstQuickLinksColumn, setFirstQuickLinksColumn] = useState([])\r\n const [secondQuickLinksColumn, setSecondQuickLinksColumn] = useState([])\r\n const [helpLinksColumn, setHelpLinksColumn] = useState([])\r\n const [legalLinksColumn, setLegalLinksColumn] = useState([])\r\n const [eventModelToPublish, setEventModelToPublish] = useState()\r\n\r\n useEffect(() => {\r\n let quickLinks = footerLinks.find((element) => element.navigation_id === 'Quick Links')\r\n setFirstQuickLinksColumn(buildLinksColumn(quickLinks, navigationHome, 0, 5))\r\n setSecondQuickLinksColumn(buildLinksColumn(quickLinks, navigationHome, 6, 11))\r\n\r\n let helpLinks = footerLinks.find((element) => element.navigation_id === 'Help')\r\n setHelpLinksColumn(buildLinksColumn(helpLinks, navigationHome, 0, 6))\r\n\r\n let legalLinks = footerLinks.find((element) => element.navigation_id === 'Legal')\r\n setLegalLinksColumn(buildLinksColumn(legalLinks, navigationHome, 0, 6))\r\n }, [footerLinks, navigationHome])\r\n\r\n useEffect(() => {\r\n if (eventApi && eventModelToPublish) {\r\n if (eventModelToPublish.eventId === 'Contact') {\r\n publishContactButtonInteractionEvent(eventApi, eventModelToPublish.eventModel)\r\n } else if (eventModelToPublish.eventId === 'Register') {\r\n publishRegisterButtonInteractionEvent(eventApi, eventModelToPublish.eventModel)\r\n }\r\n }\r\n }, [eventApi, eventModelToPublish])\r\n\r\n const handleContactClick = (e) => {\r\n let linkClasses = e.target.className\r\n let linkDomain = extractDomain(e.target.href)\r\n let linkId = e.target.id\r\n let linkUrl = e.target.href\r\n let linkText = e.target.textContent\r\n\r\n setEventModelToPublish({\r\n eventId: 'Contact',\r\n eventModel: buildContactButtonInteractionEvent(\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText\r\n ),\r\n })\r\n }\r\n\r\n const handleRegisterClick = (e) => {\r\n let linkClasses = e.target.className\r\n let linkDomain = extractDomain(e.target.href)\r\n let linkId = e.target.id\r\n let linkUrl = e.target.href\r\n let linkText = e.target.textContent\r\n\r\n setEventModelToPublish({\r\n eventId: 'Register',\r\n eventModel: buildRegisterButtonInteractionEvent(\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText\r\n ),\r\n })\r\n }\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default StandardFooter\r\n\r\nfunction buildLinksColumn(linksObject, navigationHome, startIndex, endIndex) {\r\n let linksColumn = []\r\n for (var i = startIndex; i <= endIndex; i++) {\r\n const link = linksObject.links[i]\r\n if (link !== null && link !== undefined) {\r\n let url\r\n\r\n if (link.slug !== navigationHome) {\r\n url = buildUrl(link, '')\r\n } else {\r\n url = '/' + link.slug\r\n }\r\n\r\n linksColumn.push(\r\n
  • \r\n {link.name}\r\n
  • \r\n )\r\n }\r\n }\r\n\r\n return linksColumn\r\n}\r\n\r\nexport const DefaultFooterLogo = () => {\r\n return \r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveNodesFromResourcesQueryResultForLocale } from '../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n en: allContentfulSocialMediaLink(filter: { node_locale: { eq: \"en\" } }) {\r\n nodes {\r\n ...CoreSocialMediaLinkFields\r\n }\r\n }\r\n de: allContentfulSocialMediaLink(filter: { node_locale: { eq: \"de\" } }) {\r\n nodes {\r\n ...CoreSocialMediaLinkFields\r\n }\r\n }\r\n nl: allContentfulSocialMediaLink(filter: { node_locale: { eq: \"nl\" } }) {\r\n nodes {\r\n ...CoreSocialMediaLinkFields\r\n }\r\n }\r\n fr: allContentfulSocialMediaLink(filter: { node_locale: { eq: \"fr\" } }) {\r\n nodes {\r\n ...CoreSocialMediaLinkFields\r\n }\r\n }\r\n it: allContentfulSocialMediaLink(filter: { node_locale: { eq: \"it\" } }) {\r\n nodes {\r\n ...CoreSocialMediaLinkFields\r\n }\r\n }\r\n es: allContentfulSocialMediaLink(filter: { node_locale: { eq: \"es\" } }) {\r\n nodes {\r\n ...CoreSocialMediaLinkFields\r\n }\r\n }\r\n enUS: allContentfulSocialMediaLink(filter: { node_locale: { eq: \"en-US\" } }) {\r\n nodes {\r\n ...CoreSocialMediaLinkFields\r\n }\r\n }\r\n cs: allContentfulSocialMediaLink(filter: { node_locale: { eq: \"cs\" } }) {\r\n nodes {\r\n ...CoreSocialMediaLinkFields\r\n }\r\n }\r\n pl: allContentfulSocialMediaLink(filter: { node_locale: { eq: \"pl\" } }) {\r\n nodes {\r\n ...CoreSocialMediaLinkFields\r\n }\r\n }\r\n pt: allContentfulSocialMediaLink(filter: { node_locale: { eq: \"pt\" } }) {\r\n nodes {\r\n ...CoreSocialMediaLinkFields\r\n }\r\n }\r\n socialLinks: allContentfulSocialMediaLink {\r\n nodes {\r\n navigationId\r\n name\r\n link\r\n node_locale\r\n }\r\n }\r\n }\r\n`\r\nexport const useSocialMediaLinks = (locale) => {\r\n const nodes = resolveNodesFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)\r\n let socialMediaLinks = {}\r\n\r\n for (let index = 0, length = nodes.length; index < length; index++) {\r\n const node = nodes[index]\r\n socialMediaLinks[node.navigationId] = node\r\n }\r\n\r\n return socialMediaLinks\r\n}\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport { useFooterI18n } from '../../hooks/i18n/useFooterI18n'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport { useFooterLinks } from '../../hooks/useFooterLinks'\r\nimport { buildUrl } from '../../services/urlService'\r\nimport { useNavigationHome } from '../../hooks/useNavigationHome'\r\nimport { DefaultFooterLogo } from './standardFooter'\r\n\r\nconst CheckoutFooter = () => {\r\n const locale = useContext(LocaleContext)\r\n const microcopy = useFooterI18n(locale)\r\n const footerLinks = useFooterLinks(locale)\r\n const navigationHome = useNavigationHome(locale).slug\r\n const [legalLinksColumn, setLegalLinksColumn] = useState([])\r\n\r\n useEffect(() => {\r\n let legalLinks = footerLinks.find((element) => element.navigation_id === 'Legal')\r\n setLegalLinksColumn(buildLinksRow(legalLinks, navigationHome, 0, 6))\r\n }, [footerLinks, navigationHome])\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default CheckoutFooter\r\n\r\nfunction buildLinksRow(linksObject, navigationHome, startIndex, endIndex) {\r\n let linksRow = []\r\n for (var i = startIndex; i < endIndex; i++) {\r\n if (linksObject.links[i] !== null && linksObject.links[i] !== undefined) {\r\n let url\r\n\r\n if (linksObject.links[i].slug !== navigationHome) {\r\n url = buildUrl(linksObject.links[i], '')\r\n } else {\r\n url = '/' + linksObject.links[i].slug\r\n }\r\n\r\n linksRow.push(\r\n \r\n \r\n {linksObject.links[i].name}\r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n return linksRow\r\n}\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport { Link } from 'gatsby'\r\nimport { Alert } from 'react-bootstrap'\r\nimport NotificationsContext, {\r\n NotificationLevel,\r\n unpublishNotification,\r\n} from '../../contexts/notificationsContext'\r\n\r\nconst NotificationsPanel = ({ isCheckout }) => {\r\n const { clearNotifications } = useContext(NotificationsContext)\r\n const [classNames, setClassNames] = useState('notifications-panel p-0')\r\n\r\n useEffect(() => {\r\n let isMounted = true\r\n\r\n if (isMounted) {\r\n } else {\r\n }\r\n\r\n return () => {\r\n isMounted = false\r\n clearNotifications()\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (isCheckout && isCheckout === true) {\r\n setClassNames('notifications-panel checkout p-0')\r\n } else {\r\n setClassNames('notifications-panel p-0')\r\n }\r\n }, [isCheckout])\r\n\r\n return (\r\n \r\n {(notifications) =>\r\n notifications.notifications && notifications.notifications.length > 0 ? (\r\n
    \r\n
    \r\n {notifications.notifications.map((notification) => (\r\n \r\n ))}\r\n
    \r\n
    \r\n ) : null\r\n }\r\n
    \r\n )\r\n}\r\n\r\nconst DisplayNotification = ({ notification }) => {\r\n const { deleteNotification } = useContext(NotificationsContext)\r\n const [notificationId] = useState(notification.id)\r\n const [variant] = useState(notificationLevel(notification))\r\n const [show, setShow] = useState(true)\r\n let myInterval = null\r\n\r\n useEffect(() => {\r\n let isMounted = true\r\n myInterval = setInterval(function () {\r\n if (isMounted) {\r\n if (notification.expireOn !== null && notification.expireOn < new Date()) {\r\n if (show === true) {\r\n if (myInterval) {\r\n clearInterval(myInterval)\r\n myInterval = null\r\n }\r\n\r\n setShow(false)\r\n handleOnClose()\r\n }\r\n }\r\n }\r\n }, 1000)\r\n\r\n return () => {\r\n isMounted = false\r\n if (myInterval) {\r\n clearInterval(myInterval)\r\n myInterval = null\r\n }\r\n unpublishNotification(notificationId, deleteNotification)\r\n }\r\n }, [])\r\n\r\n function handleOnClose() {\r\n setTimeout(function () {\r\n unpublishNotification(notificationId, deleteNotification)\r\n }, 1000)\r\n }\r\n\r\n function handleClose() {\r\n setShow(false)\r\n }\r\n\r\n return (\r\n \r\n <>\r\n {notification.link ? (\r\n

    \r\n {notification.message}\r\n

    \r\n ) : (\r\n

    {notification.message}

    \r\n )}\r\n \r\n \r\n )\r\n}\r\nexport default NotificationsPanel\r\n\r\nfunction notificationLevel(notification) {\r\n switch (notification.level) {\r\n case NotificationLevel.ERROR:\r\n return 'danger'\r\n case NotificationLevel.SUCCESS:\r\n return 'success'\r\n case NotificationLevel.WARNING:\r\n default:\r\n return 'warning'\r\n }\r\n}\r\n","import { useEffect } from 'react'\r\n\r\nconst DynamicDataLayer = () => {\r\n useEffect(() => {\r\n window.dl = window.dl || []\r\n }, [])\r\n\r\n return null\r\n}\r\nexport default DynamicDataLayer","import React, { useContext, useRef } from 'react'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { useHeaderI18n } from '../../hooks/i18n/useHeaderI18n'\r\nimport { buildLoginUrl, buildReturnUrl } from '../../services/urlService'\r\nimport { logException } from '../../services/loggingService'\r\nimport { useNavigationHome } from '../../hooks/useNavigationHome'\r\nimport UserContext from '../../contexts/userContext'\r\nimport { Link, navigate } from 'gatsby'\r\nimport { useAccountSlug } from '../../hooks/slugs/useAccountSlug'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport SearchContext from '../../contexts/searchContext'\r\nimport { useState } from 'react'\r\nimport { Spinner } from 'react-bootstrap'\r\n\r\nconst Login = ({ isMobile, toggleLoginOffCanvasCallback }) => {\r\n const locale = useContext(LocaleContext)\r\n const { email } = useContext(UserContext)\r\n const classes = isMobile ? '' : 'header__toplinks--item d-none d-md-block'\r\n\r\n return (\r\n
  • \r\n {email ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
  • \r\n )\r\n}\r\n\r\nconst LoggedIn = ({ locale, isMobile }) => {\r\n const microcopy = useHeaderI18n(locale)\r\n const home = useNavigationHome(locale)\r\n const searchContext = useRef(useContext(SearchContext))\r\n const accountPath = '/' + home.slug + '/' + useAccountSlug(locale)\r\n\r\n function logoClicked() {\r\n searchContext.current.closeSuggestions()\r\n navigate(accountPath)\r\n }\r\n\r\n return isMobile ? (\r\n
    \r\n \r\n \r\n \r\n {getI18nText(microcopy, 'header.account')}\r\n
    \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {getI18nText(microcopy, 'header.account')}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nconst LoggedOut = ({ locale, isMobile, toggleLoginOffCanvasCallback }) => {\r\n const microcopy = useHeaderI18n(locale)\r\n const home = useNavigationHome(locale)\r\n const searchContext = useRef(useContext(SearchContext))\r\n const [hasBeenClicked, setHasBeenClicked] = useState(false)\r\n\r\n const onLogin = (e) => {\r\n e.preventDefault()\r\n searchContext.current.closeSuggestions()\r\n\r\n if (toggleLoginOffCanvasCallback) {\r\n toggleLoginOffCanvasCallback()\r\n } else {\r\n performLogIn(hasBeenClicked, setHasBeenClicked, home.slug)\r\n //performSilentLogIn(hasBeenClicked, setHasBeenClicked)\r\n }\r\n }\r\n\r\n return isMobile ? (\r\n \r\n
    \r\n \r\n {getI18nText(microcopy, 'header.login')}\r\n
    \r\n \r\n ) : hasBeenClicked ? (\r\n
    \r\n \r\n
    \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n {getI18nText(microcopy, 'header.login')}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default Login\r\n\r\nexport const performLogIn = (\r\n loginButtonHasBeenClicked,\r\n setLoginButtonHasBeenClickedCallback,\r\n homeSlug\r\n) => {\r\n if (loginButtonHasBeenClicked === false) {\r\n setLoginButtonHasBeenClickedCallback(true)\r\n const returnUrl = buildReturnUrl(`/${homeSlug}`)\r\n\r\n buildLoginUrl(returnUrl)\r\n .then((url) => {\r\n window.location.href = url\r\n })\r\n .catch((error) => {\r\n logException('Failed to build login url', error)\r\n setLoginButtonHasBeenClickedCallback(false)\r\n })\r\n }\r\n}\r\n\r\n/*\r\nexport const performSilentLogIn = (\r\n loginButtonHasBeenClicked,\r\n setLoginButtonHasBeenClickedCallback\r\n) => {\r\n if (loginButtonHasBeenClicked === false) {\r\n setLoginButtonHasBeenClickedCallback(true)\r\n let container = document.getElementById('silent-login-container')\r\n\r\n if (container) {\r\n buildSilentLoginUrl()\r\n .then((url) => {\r\n try {\r\n const html = ``\r\n const htmljs = ``\r\n let iframe = document.createElement('iframe')\r\n //iframe.sandbox = 'allow-scripts'\r\n //iframe.referrerPolicy = 'strict-origin-when-cross-origin'\r\n iframe.src = url\r\n\r\n container.appendChild(iframe)\r\n\r\n //iframe.contentWindow.document.open()\r\n //iframe.contentWindow.document.write(htmljs)\r\n //iframe.contentWindow.document.close()\r\n\r\n } catch (error) {console.log(error)}\r\n\r\n setLoginButtonHasBeenClickedCallback(false)\r\n })\r\n .catch((error) => {\r\n logException('Failed to build login url', error)\r\n setLoginButtonHasBeenClickedCallback(false)\r\n })\r\n }\r\n }\r\n}\r\n*/","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveSlugsFromResourcesQueryResultForLocale } from '../../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n en: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"en\" }, navigation_id: { eq: \"Search\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n de: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"de\" }, navigation_id: { eq: \"Search\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n nl: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"nl\" }, navigation_id: { eq: \"Search\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n fr: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"fr\" }, navigation_id: { eq: \"Search\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n it: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"it\" }, navigation_id: { eq: \"Search\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n es: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"es\" }, navigation_id: { eq: \"Search\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n enUS: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"en-US\" }, navigation_id: { eq: \"Search\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n cs: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"cs\" }, navigation_id: { eq: \"Search\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n pl: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"pl\" }, navigation_id: { eq: \"Search\" }}\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n pt: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"pt\" }, navigation_id: { eq: \"Search\" }}\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n }\r\n`\r\nexport const useSearchSlug = (locale) => {\r\n return resolveSlugsFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)\r\n}\r\n","import React, { useContext, useState, useEffect, useRef } from 'react'\r\nimport { navigate } from 'gatsby-link'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { useSearchSlug } from '../../hooks/slugs/useSearchSlug'\r\nimport { useHeaderI18n } from '../../hooks/i18n/useHeaderI18n'\r\nimport SearchContext from '../../contexts/searchContext'\r\nimport MobileNavContext from '../../contexts/mobileNavContext'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport { getQueryParamValue } from '../../services/queryParamService'\r\nimport NotificationsContext, { publishDismissableError } from '../../contexts/notificationsContext'\r\n\r\nconst ShowCloseClasses = 'header__search--close icon-Close-Bold'\r\nconst HideCloseClasses = 'header__search--close icon-Close-Bold d-none'\r\nconst ShowSearchMobileClasses = 'row header__search header__search--mobile-only w-100 container mx-auto'\r\nconst HideSearchMobileClasses = 'row header__search header__search--mobile-only w-100 container mx-auto d-none'\r\nconst HideSearchClasses = 'header__search d-none d-lg-block'\r\n\r\nconst Search = ({ isMobile }) => {\r\n const locale = useContext(LocaleContext)\r\n const { isMobileNavOpen, setIsMobileNavOpen } = useContext(MobileNavContext)\r\n const { searchValue, closeSuggestions, setShowSuggestions, setSearchValue } =\r\n useContext(SearchContext)\r\n const microcopy = useHeaderI18n(locale)\r\n const searchSlug = useSearchSlug(locale)\r\n const [searchInput, setSearchInput] = useState(searchValue)\r\n const { clearNotifications, setNotification } = useContext(NotificationsContext)\r\n const [searchName] = useState(isMobile ? 'header.search.mobile' : 'header.search')\r\n const [searchClasses, setSearchClasses] = useState(isMobile ? HideSearchMobileClasses : HideSearchClasses)\r\n const searchValueUpdateTimeoutRef = useRef(null)\r\n const searchInputRef = useRef(null)\r\n\r\n useEffect(() => {\r\n const activeSearch = window.location.search\r\n const searchTerm =\r\n activeSearch.length > 1 ? getQueryParamValue('q', window.location) : undefined\r\n if (searchTerm !== undefined && searchTerm !== null) {\r\n let decodedSearchTerm = ''\r\n if (searchTerm) {\r\n decodedSearchTerm = decodeURIComponent(searchTerm)\r\n }\r\n\r\n setSearchValue(decodedSearchTerm)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n return () => {\r\n setSearchValue('')\r\n if (searchValueUpdateTimeoutRef.current) {\r\n clearTimeout(searchValueUpdateTimeoutRef.current)\r\n searchValueUpdateTimeoutRef.current = null\r\n }\r\n }\r\n }, [searchValueUpdateTimeoutRef])\r\n\r\n useEffect(() => {\r\n setSearchClasses(\r\n isMobile\r\n ? isMobileNavOpen\r\n ? ShowSearchMobileClasses\r\n : HideSearchMobileClasses\r\n : HideSearchClasses\r\n )\r\n }, [isMobile, isMobileNavOpen])\r\n\r\n function goToSearch() {\r\n if (searchInput) {\r\n clearSearch()\r\n closeSuggestions()\r\n\r\n if (isMobileNavOpen) {\r\n setIsMobileNavOpen(false)\r\n }\r\n\r\n navigate('/' + locale.toLowerCase() + '/' + searchSlug + '/?q=' + searchInput, {\r\n state: { search: searchInput },\r\n })\r\n }\r\n }\r\n\r\n function handleOnChange(e) {\r\n if (e.target.value) {\r\n if (e.target.value.length < 150) {\r\n updateSearchValue(e.target.value, true)\r\n } else {\r\n clearNotifications()\r\n publishDismissableError(\r\n null,\r\n getI18nText(microcopy, 'header.searchtoolong'),\r\n setNotification\r\n )\r\n }\r\n } else {\r\n updateSearchValue('', false)\r\n }\r\n }\r\n\r\n function updateSearchValue(value, show) {\r\n setSearchInput(value)\r\n if (searchValueUpdateTimeoutRef.current) {\r\n clearTimeout(searchValueUpdateTimeoutRef.current)\r\n searchValueUpdateTimeoutRef.current = null\r\n }\r\n\r\n searchValueUpdateTimeoutRef.current = setTimeout(function () {\r\n setSearchValue(value)\r\n setShowSuggestions(show)\r\n clearTimeout(searchValueUpdateTimeoutRef.current)\r\n searchValueUpdateTimeoutRef.current = null\r\n }, 750)\r\n }\r\n\r\n function handleKeyPress(e) {\r\n if (e.key === 'Enter') {\r\n e.preventDefault()\r\n e.target.blur()\r\n goToSearch()\r\n }\r\n }\r\n\r\n function clearSearch() {\r\n if (searchValueUpdateTimeoutRef.current) {\r\n clearTimeout(searchValueUpdateTimeoutRef.current)\r\n searchValueUpdateTimeoutRef.current = null\r\n }\r\n\r\n setSearchInput('')\r\n setSearchValue('')\r\n if (searchInputRef.current) {\r\n searchInputRef.current.value = ''\r\n }\r\n }\r\n\r\n function isSearchEmpty() {\r\n return isEmpty(searchInput)\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nfunction isEmpty(value) {\r\n if (value === null || value === undefined || value === '') {\r\n return true\r\n }\r\n\r\n return false\r\n}\r\n\r\nexport default Search\r\n","import React, { useContext } from 'react'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { useNavigationHome } from '../../hooks/useNavigationHome'\r\nimport { useLanguageI18n } from '../../hooks/i18n/useLanguageI18n'\r\nimport { Link } from 'gatsby'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport { useLanguages } from '../../hooks/useLanguages'\r\n\r\nconst Languages = ({ onClick }) => {\r\n const locale = useContext(LocaleContext)\r\n const microcopy = useLanguageI18n(locale)\r\n const linkPath = '/' + useNavigationHome(locale).slug\r\n const languages = useLanguages(locale)\r\n\r\n return (\r\n <>\r\n {languages && languages.length > 1 ? (\r\n
  • \r\n \r\n \r\n \r\n \r\n {getI18nText(microcopy, 'language.languages')}\r\n \r\n \r\n
  • \r\n ) : null}\r\n \r\n )\r\n}\r\n\r\nexport default Languages\r\n","import React, { useContext, useRef } from 'react'\r\nimport { navigate } from 'gatsby'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport BasketContext from '../../contexts/basketContext'\r\nimport { useHeaderI18n } from '../../hooks/i18n/useHeaderI18n'\r\nimport { useBasketSlug } from '../../hooks/slugs/useBasketSlug'\r\nimport { useNavigationHome } from '../../hooks/useNavigationHome'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport SearchContext from '../../contexts/searchContext'\r\n\r\nconst Basket = () => {\r\n const locale = useContext(LocaleContext)\r\n const microcopy = useHeaderI18n(locale)\r\n const basketPath = '/' + useNavigationHome(locale).slug + '/' + useBasketSlug(locale)\r\n const searchContext = useRef(useContext(SearchContext))\r\n\r\n function logoClicked() {\r\n searchContext.current.closeSuggestions()\r\n navigate(basketPath)\r\n }\r\n\r\n return (\r\n \r\n {({ basketFeatureAvailable, basketItemsCount }) =>\r\n basketFeatureAvailable === true ? (\r\n
  • \r\n
    \r\n \r\n \r\n \r\n {basketItemsCount}\r\n \r\n \r\n \r\n {getI18nText(microcopy, 'header.basket')}\r\n \r\n \r\n
  • \r\n ) : null\r\n }\r\n
    \r\n )\r\n}\r\n\r\nexport default Basket\r\n","import React, { useContext, useRef } from 'react'\r\nimport { navigate } from 'gatsby'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport MobileNavContext from '../../contexts/mobileNavContext'\r\nimport SearchContext from '../../contexts/searchContext'\r\nimport { useContactNavigation } from '../../hooks/navigation/useContactNavigation'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport { buildUrl } from '../../services/urlService'\r\nimport { useContactI18n } from '../../hooks/i18n/useContactI18n'\r\n\r\nconst LiveChat = ({ isMobile }) => {\r\n const locale = useContext(LocaleContext)\r\n const { isMobileNavOpen, setIsMobileNavOpen } = useContext(MobileNavContext)\r\n const contactPath = buildUrl(useContactNavigation(locale), '')\r\n const contactMicrocopy = useContactI18n(locale)\r\n const searchContext = useRef(useContext(SearchContext))\r\n const classes = isMobile ? '' : 'header__toplinks--item d-none d-md-block'\r\n\r\n function handleContact() {\r\n searchContext.current.closeSuggestions()\r\n\r\n if (isMobileNavOpen) {\r\n setIsMobileNavOpen(false)\r\n }\r\n\r\n navigate(contactPath)\r\n }\r\n\r\n return (\r\n
  • \r\n {isMobile ? (\r\n
    \r\n \r\n {getI18nText(contactMicrocopy, 'contact.contact')}\r\n
    \r\n ) : (\r\n <>\r\n
    \r\n \r\n \r\n \r\n {getI18nText(contactMicrocopy, 'contact.contact')}\r\n \r\n \r\n \r\n )}\r\n
  • \r\n )\r\n}\r\n\r\nexport default LiveChat\r\n","import { navigate } from 'gatsby'\r\nimport React, { useContext, useRef } from 'react'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport SearchContext from '../../contexts/searchContext'\r\nimport { useDistributorsNavigation } from '../../hooks/navigation/useDistributorsNavigation'\r\nimport { useHeaderI18n } from '../../hooks/i18n/useHeaderI18n'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport { buildUrl } from '../../services/urlService'\r\n\r\nconst Distributors = ({ isMobile }) => {\r\n const locale = useContext(LocaleContext)\r\n const microcopy = useHeaderI18n(locale)\r\n const linkPath = buildUrl(useDistributorsNavigation(locale), '')\r\n const classes = isMobile ? '' : 'header__toplinks--item d-none d-md-block'\r\n const searchContext = useRef(useContext(SearchContext))\r\n\r\n function logoClicked() {\r\n searchContext.current.closeSuggestions()\r\n navigate(linkPath)\r\n }\r\n\r\n return (\r\n
  • \r\n {isMobile ? (\r\n
    \r\n \r\n {getI18nText(microcopy, 'header.distributors')}\r\n
    \r\n ) : (\r\n <>\r\n
    \r\n \r\n \r\n \r\n {getI18nText(microcopy, 'header.distributors')}\r\n \r\n \r\n \r\n )}\r\n
  • \r\n )\r\n}\r\n\r\nexport default Distributors\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport { Link } from 'gatsby'\r\nimport {\r\n buildSearchResultEvent,\r\n publishSearchResultEvent,\r\n} from '../../../services/dataLayerService'\r\nimport SearchContext from '../../../contexts/searchContext'\r\nimport { extractDomain } from '../../../services/urlService'\r\nimport { findParentElementA } from '../../../services/domService'\r\nimport MobileNavContext from '../../../contexts/mobileNavContext'\r\nimport DataLayerContext from '../../../contexts/dataLayerContext'\r\n\r\nconst SuggestionResultLink = ({ to, className, isExternalLink, children, handleClickCallback }) => {\r\n const { eventApi } = useContext(DataLayerContext)\r\n const { setShowSuggestions, searchValue } = useContext(SearchContext)\r\n const { isMobileNavOpen, setIsMobileNavOpen } = useContext(MobileNavContext)\r\n const [eventModelToPublish, setEventModelToPublish] = useState()\r\n\r\n useEffect(() => {\r\n if (eventApi && eventModelToPublish) {\r\n publishSearchResultEvent(eventApi, eventModelToPublish)\r\n }\r\n }, [eventApi, eventModelToPublish])\r\n\r\n const handleClick = (e) => {\r\n let linkClasses = e.target.className\r\n let linkDomain = null\r\n let linkId = e.target.id\r\n let linkUrl = null\r\n let linkText = e.target.textContent\r\n\r\n var linkElement = findParentElementA(e.target, 0, 4)\r\n\r\n if (linkElement !== null) {\r\n linkUrl = linkElement.href\r\n linkDomain = extractDomain(linkUrl)\r\n }\r\n\r\n setEventModelToPublish(\r\n buildSearchResultEvent(searchValue, linkClasses, linkDomain, linkId, linkUrl, linkText)\r\n )\r\n\r\n if (isMobileNavOpen === true) {\r\n setIsMobileNavOpen(false)\r\n }\r\n\r\n if (handleClickCallback !== undefined && handleClickCallback !== null) {\r\n handleClickCallback(e)\r\n } else {\r\n if (isExternalLink === undefined || isExternalLink === false) {\r\n setShowSuggestions(false)\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {isExternalLink !== undefined && isExternalLink === true ? (\r\n \r\n {children}\r\n \r\n ) : (\r\n \r\n {children}\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default SuggestionResultLink\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport LocaleContext from '../../../contexts/localeContext'\r\nimport { useProductSlug } from '../../../hooks/slugs/useProductSlug'\r\nimport { useNavigationHome } from '../../../hooks/useNavigationHome'\r\nimport { makePartNumberUrlSafe } from '../../../services/urlService'\r\nimport SuggestionResultLink from './suggestionResultLink'\r\n\r\nconst ProductSuggestionResult = ({ description, productId, image }) => {\r\n const locale = useContext(LocaleContext)\r\n const [suggestionDescription, setSuggestionDescription] = useState(description)\r\n const productSlug =\r\n '/' +\r\n useNavigationHome(locale).slug +\r\n '/' +\r\n useProductSlug(locale) +\r\n '/' +\r\n makePartNumberUrlSafe(productId)\r\n\r\n useEffect(() => {\r\n import('he').then((he) => {\r\n if (description) {\r\n setSuggestionDescription(he.decode(description))\r\n }\r\n })\r\n }, [])\r\n\r\n return (\r\n
  • \r\n \r\n \"\"\r\n
    \r\n
    {suggestionDescription}
    \r\n

    {productId}

    \r\n
    \r\n
    \r\n
  • \r\n )\r\n}\r\n\r\nexport default ProductSuggestionResult\r\n","import React from 'react'\r\nimport SuggestionResultLink from './suggestionResultLink'\r\n\r\nconst DatasheetSuggestionResult = ({ description, location }) => {\r\n return (\r\n
  • \r\n \r\n
    {description}
    \r\n
    \r\n
  • \r\n )\r\n}\r\n\r\nexport default DatasheetSuggestionResult\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport { v4 as uuid } from 'uuid'\r\nimport { Spinner } from 'react-bootstrap'\r\nimport LocaleContext from '../../../contexts/localeContext'\r\nimport { useProductSlug } from '../../../hooks/slugs/useProductSlug'\r\nimport { useNavigationHome } from '../../../hooks/useNavigationHome'\r\nimport {\r\n makePartNumberUrlSafe,\r\n makeExtrabasePartNumberUrlSafe,\r\n buildUrl,\r\n} from '../../../services/urlService'\r\nimport SuggestionResultLink from './suggestionResultLink'\r\nimport { useConfiguratorsNavigation } from '../../../hooks/navigation/useConfiguratorsNavigation'\r\nimport { getConfiguratorVersion } from '../../../services/configuratorApiService'\r\nimport { startValveIslandConfiguratorWithoutAutoNavigate } from '../../../services/valveIslandConfiguratorService'\r\nimport { useVRConfiguratorNavigation } from '../../../hooks/navigation/useVRConfiguratorNavigation'\r\nimport { useVRQConfiguratorNavigation } from '../../../hooks/navigation/useVRQConfiguratorNavigation'\r\nimport { useVMConfiguratorNavigation } from '../../../hooks/navigation/useVMConfiguratorNavigation'\r\nimport { useVSConfiguratorNavigation } from '../../../hooks/navigation/useVSConfiguratorNavigation'\r\nimport NotificationsContext, {\r\n publishPermanentDismissableError,\r\n} from '../../../contexts/notificationsContext'\r\nimport SearchContext from '../../../contexts/searchContext'\r\nimport { getI18nText } from '../../../services/i18nService'\r\nimport { useConfiguratorI18n } from '../../../hooks/i18n/useConfiguratorI18n'\r\nimport { navigate } from 'gatsby'\r\nimport ConfiguratorContext from '../../../contexts/newConfiguratorContext'\r\nimport BasketContext from '../../../contexts/basketContext'\r\n\r\nconst PartNumberSuggestionResult = ({ suggestion }) => {\r\n return (\r\n <>\r\n {suggestion.isExtraBaseProduct === undefined ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default PartNumberSuggestionResult\r\n\r\nconst OldPartNumberSuggestionContent = ({ suggestion }) => {\r\n const locale = useContext(LocaleContext)\r\n const baseProductLink = `/${useNavigationHome(locale).slug}/${useProductSlug(locale)}/`\r\n const [productId] = useState(getProductId(suggestion))\r\n const [link] = useState(generateLink(suggestion, baseProductLink))\r\n\r\n function isExtraBaseProduct(suggestion) {\r\n return (\r\n suggestion.productIdExtraBaseSearch !== null &&\r\n suggestion.productIdExtraBaseSearch !== undefined &&\r\n suggestion.productIdExtraBaseSearch.length > 0\r\n )\r\n }\r\n\r\n function getProductId(suggestion) {\r\n const isExtraBase = isExtraBaseProduct(suggestion)\r\n return isExtraBase ? suggestion.productIdExtraBaseSearch : suggestion.productId\r\n }\r\n\r\n function generateLink(suggestion, baseProductLink) {\r\n const isExtraBase = isExtraBaseProduct(suggestion)\r\n\r\n if (isExtraBase) {\r\n return generateExtraBaseProductLink(baseProductLink, suggestion.productIdExtraBaseSearch)\r\n } else {\r\n return generateProductLink(baseProductLink, suggestion.productId)\r\n }\r\n }\r\n\r\n return (\r\n
  • \r\n \r\n
    {productId}
    \r\n
    \r\n
  • \r\n )\r\n}\r\n\r\nconst PartNumberSuggestionContent = ({ suggestion }) => {\r\n const locale = useContext(LocaleContext)\r\n const configuratorContext = useContext(ConfiguratorContext)\r\n const { setVersion } = useContext(ConfiguratorContext)\r\n const { setNotification } = useContext(NotificationsContext)\r\n const { setShowSuggestions } = useContext(SearchContext)\r\n const { basketCurrency } = useContext(BasketContext)\r\n const [productId] = useState(suggestion.productId)\r\n const [link, setLink] = useState()\r\n const [loading, setLoading] = useState(false)\r\n const configuratorsNavigation = useConfiguratorsNavigation(locale)\r\n const VRURL = useVRConfiguratorNavigation(locale)\r\n const VRQURL = useVRQConfiguratorNavigation(locale)\r\n const VMURL = useVMConfiguratorNavigation(locale)\r\n const VSURL = useVSConfiguratorNavigation(locale)\r\n const baseProductLink = `/${useNavigationHome(locale).slug}/${useProductSlug(locale)}/`\r\n const configuratorMicrocopy = useConfiguratorI18n(locale)\r\n\r\n useEffect(() => {\r\n function buildBaseConfiguredProductLink() {\r\n const baseConfiguredProductLink = buildUrl(configuratorsNavigation, '')\r\n return baseConfiguredProductLink\r\n }\r\n\r\n if (suggestion.isConfiguredProductFRL === true || suggestion.isConfiguredProductVI === true) {\r\n if (suggestion.isConfiguredProductVI === true) {\r\n setLink(`${buildBaseConfiguredProductLink()}`)\r\n } else {\r\n setLink(null)\r\n }\r\n } else if (suggestion.isExtraBaseProduct === true) {\r\n setLink(generateExtraBaseProductLink(baseProductLink, productId))\r\n } else {\r\n setLink(generateProductLink(baseProductLink, productId))\r\n }\r\n }, [suggestion])\r\n\r\n const handleClick = (e) => {\r\n if (suggestion.isConfiguredProductFRL === true || suggestion.isConfiguredProductVI === true) {\r\n e.preventDefault()\r\n setLoading(true)\r\n let requestId = uuid()\r\n getConfiguratorVersion(requestId).then((data) => {\r\n if (data && data.version) {\r\n setVersion(data.version)\r\n startValveIslandConfiguratorWithoutAutoNavigate(\r\n productId,\r\n buildUrl(VRURL, ''),\r\n buildUrl(VRQURL, ''),\r\n buildUrl(VMURL, ''),\r\n buildUrl(VSURL, ''),\r\n locale,\r\n configuratorContext,\r\n basketCurrency\r\n )\r\n .then((data) => {\r\n setShowSuggestions(false)\r\n setLoading(false)\r\n navigate(data.navigateURL, data.options)\r\n })\r\n .catch((data) => {\r\n setLoading(false)\r\n setShowSuggestions(false)\r\n if (data.error === 'Invalid PartNumber') {\r\n publishPermanentDismissableError(\r\n null,\r\n getI18nText(configuratorMicrocopy, 'configurator.errorinvalidpartnumber'),\r\n setNotification\r\n )\r\n } else {\r\n publishPermanentDismissableError(\r\n null,\r\n getI18nText(configuratorMicrocopy, 'configurator.errorstartingconfigurator'),\r\n setNotification\r\n )\r\n }\r\n })\r\n }\r\n })\r\n } else {\r\n setShowSuggestions(false)\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {link !== null && link !== undefined ? (\r\n
  • \r\n {loading ? (\r\n \r\n ) : null}\r\n \r\n
    {productId}
    \r\n
    \r\n
  • \r\n ) : null}\r\n \r\n )\r\n}\r\n\r\nfunction generateExtraBaseProductLink(baseProductLink, productId) {\r\n return `${baseProductLink}extrabase/${makeExtrabasePartNumberUrlSafe(productId)}`\r\n}\r\n\r\nfunction generateProductLink(baseProductLink, productId) {\r\n return `${baseProductLink}${makePartNumberUrlSafe(productId)}`\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n ConfiguratorsNavigationElements: allContentfulNavigationElement(\r\n filter: { navigation_id: { eq: \"Configurators\" } }\r\n ) {\r\n nodes {\r\n navigation_id\r\n node_locale\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\nexport const useConfiguratorsNavigation = (locale) => {\r\n const { ConfiguratorsNavigationElements } = useStaticQuery(resourcesQuery)\r\n let navigationElement\r\n ConfiguratorsNavigationElements.nodes.forEach((element) => {\r\n if (element.node_locale === locale) {\r\n navigationElement = element\r\n }\r\n })\r\n return navigationElement\r\n}\r\n","import React, { useContext } from 'react'\r\nimport CategoryPathsContext from '../../../contexts/categoryPathsContext'\r\nimport SuggestionResultLink from './suggestionResultLink'\r\n\r\nconst CategorySuggestionResult = ({ category, value }) => {\r\n const categoryPaths = useContext(CategoryPathsContext)\r\n const url = categoryPaths[category]\r\n\r\n return url !== undefined ? (\r\n
  • \r\n \r\n
    {value}
    \r\n
    \r\n
  • \r\n ) : null\r\n}\r\n\r\nexport default CategorySuggestionResult\r\n","import React from 'react'\r\nimport SuggestionResultLink from './suggestionResultLink'\r\n\r\nconst ContentSuggestionResult = ({ name, url }) => {\r\n return (\r\n
  • \r\n \r\n
    {name}
    \r\n
    \r\n
  • \r\n )\r\n}\r\n\r\nexport default ContentSuggestionResult\r\n","import React, { useEffect, useContext, useState, useRef } from 'react'\r\nimport ProductSuggestionResult from './suggestionResults/productSuggestionResult'\r\nimport DatasheetSuggestionResult from './suggestionResults/datasheetSuggestionResult'\r\nimport PartNumberSuggestionResult from './suggestionResults/partNumberSuggestionResult'\r\nimport CategorySuggestionResult from './suggestionResults/categorySuggestionsResult'\r\nimport { v4 as uuid } from 'uuid'\r\nimport { suggest } from '../../services/backendApiService'\r\nimport { useSuggestFacet } from '../../hooks/useSuggestFacet'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport SearchContext from '../../contexts/searchContext'\r\nimport { useSearchI18n } from '../../hooks/i18n/useSearchI18n'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport CategoryPathsContext from '../../contexts/categoryPathsContext'\r\nimport { getGeolocation } from '../../services/geolocationService'\r\nimport { useCallingCountries } from '../../hooks/useCountries'\r\nimport ContentSuggestionResult from './suggestionResults/contentSuggestionsResult'\r\n\r\nconst Suggestions = ({}) => {\r\n const locale = useContext(LocaleContext)\r\n const microcopy = useSearchI18n(locale)\r\n const categoryPaths = useContext(CategoryPathsContext)\r\n const {\r\n productSuggestions,\r\n setProductSuggestions,\r\n datasheetSuggestions,\r\n setDatasheetSuggestions,\r\n categoriesSuggestions,\r\n setCategoriesSuggestions,\r\n partNumberSuggestions,\r\n setPartNumberSuggestions,\r\n contentSuggestions,\r\n setContentSuggestions,\r\n showSuggestions,\r\n searchValue,\r\n setSuggestionsOpen,\r\n } = useContext(SearchContext)\r\n const [hasSuggestions, setHasSuggestions] = useState(false)\r\n const callingCountries = useRef(useCallingCountries(locale))\r\n\r\n const suggestLocale = useSuggestFacet(locale)\r\n\r\n useEffect(() => {\r\n if (showSuggestions === true && searchValue && searchValue.length > 2) {\r\n let requestId = uuid()\r\n getGeolocation(callingCountries.current)\r\n .then((geolocation) => {\r\n suggest(searchValue.trim(), suggestLocale, geolocation.callingCountry, requestId)\r\n .then((data) => {\r\n const hasProducts =\r\n data.productSuggestions !== null &&\r\n data.productSuggestions !== undefined &&\r\n data.productSuggestions.length > 0\r\n\r\n setProductSuggestions(data.productSuggestions ?? [])\r\n\r\n const hasDatasheets =\r\n data.datasheetSuggestions !== null &&\r\n data.datasheetSuggestions !== undefined &&\r\n data.datasheetSuggestions.length > 0\r\n\r\n setDatasheetSuggestions(data.datasheetSuggestions ?? [])\r\n\r\n let hasPartNumbers = false\r\n\r\n if (\r\n data.limitedPartNumberSuggestions !== null &&\r\n data.limitedPartNumberSuggestions !== undefined &&\r\n data.limitedPartNumberSuggestions.length > 0\r\n ) {\r\n // the newer model\r\n hasPartNumbers = true\r\n setPartNumberSuggestions(data.limitedPartNumberSuggestions)\r\n } else if (\r\n data.partNumberSuggestions !== null &&\r\n data.partNumberSuggestions !== undefined &&\r\n data.partNumberSuggestions.length > 0\r\n ) {\r\n hasPartNumbers = true\r\n setPartNumberSuggestions(data.partNumberSuggestions)\r\n } else {\r\n setPartNumberSuggestions([])\r\n }\r\n\r\n const hasContentSuggestions =\r\n data.contentSuggestions !== null &&\r\n data.contentSuggestions !== undefined &&\r\n data.contentSuggestions.length > 0\r\n\r\n setContentSuggestions(data.contentSuggestions ?? [])\r\n\r\n let hasCategories = false\r\n\r\n let myCategorySuggestions = []\r\n if (data.categorySuggestions) {\r\n for (let index = 0; index < data.categorySuggestions.length; index++) {\r\n const element = data.categorySuggestions[index]\r\n if (element && categoryPaths) {\r\n const url = categoryPaths[element.category]\r\n if (url !== null && url !== undefined) {\r\n myCategorySuggestions.push(element)\r\n hasCategories = true\r\n }\r\n }\r\n }\r\n }\r\n setCategoriesSuggestions(myCategorySuggestions)\r\n\r\n const myHasSuggestions =\r\n hasPartNumbers ||\r\n hasCategories ||\r\n hasProducts ||\r\n hasDatasheets ||\r\n hasContentSuggestions\r\n setHasSuggestions(myHasSuggestions)\r\n setSuggestionsOpen(myHasSuggestions && showSuggestions)\r\n })\r\n .catch((error) => {})\r\n })\r\n .catch((error) => {})\r\n } else {\r\n setProductSuggestions([])\r\n setDatasheetSuggestions([])\r\n setPartNumberSuggestions([])\r\n setCategoriesSuggestions([])\r\n setContentSuggestions([])\r\n setSuggestionsOpen(false)\r\n setHasSuggestions(false)\r\n }\r\n }, [searchValue, showSuggestions, suggestLocale])\r\n\r\n return hasSuggestions && showSuggestions ? (\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n ) : null\r\n}\r\n\r\nexport default Suggestions\r\n\r\nconst ProductSuggestionsContent = ({ suggestions, microcopy }) =>\r\n suggestions && suggestions.length > 0 ? (\r\n
    \r\n
    {getI18nText(microcopy, 'search.products')}
    \r\n
      \r\n {suggestions.map((suggestion) => {\r\n return (\r\n \r\n )\r\n })}\r\n
    \r\n
    \r\n ) : null\r\n\r\nconst DatasheetsSuggestionsContent = ({ suggestions, microcopy }) =>\r\n suggestions && suggestions.length > 0 ? (\r\n
    \r\n
    {getI18nText(microcopy, 'search.datasheets')}
    \r\n
      \r\n {suggestions.map((suggestion) => {\r\n return (\r\n \r\n )\r\n })}\r\n
    \r\n
    \r\n ) : null\r\n\r\nconst PartNumberSuggestionsContent = ({ suggestions, microcopy }) =>\r\n suggestions && suggestions.length > 0 ? (\r\n
    \r\n
    {getI18nText(microcopy, 'search.partnumbers')}
    \r\n
      \r\n {suggestions.map((suggestion) => {\r\n return \r\n })}\r\n
    \r\n
    \r\n ) : null\r\n\r\nconst CategoriesSuggestionsContent = ({ suggestions, microcopy }) =>\r\n suggestions && suggestions.length > 0 ? (\r\n
    \r\n
    {getI18nText(microcopy, 'search.categories')}
    \r\n
      \r\n {suggestions.map((suggestion) => {\r\n return (\r\n \r\n )\r\n })}\r\n
    \r\n
    \r\n ) : null\r\n\r\nconst ContentSuggestionsContent = ({ suggestions, microcopy }) =>\r\n suggestions && suggestions.length > 0 ? (\r\n
    \r\n
    {getI18nText(microcopy, 'search.content')}
    \r\n
      \r\n {suggestions.map((suggestion) => {\r\n return (\r\n \r\n )\r\n })}\r\n
    \r\n
    \r\n ) : null\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveNodesFromResourcesQueryResultForLocale } from '../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n en: allContentfulFredhopperFacets(\r\n filter: { node_locale: { eq: \"en\" }, title: { eq: \"Suggest\" } }\r\n ) {\r\n nodes {\r\n ...CoreFredhopperFacetsFields\r\n }\r\n }\r\n de: allContentfulFredhopperFacets(\r\n filter: { node_locale: { eq: \"de\" }, title: { eq: \"Suggest\" } }\r\n ) {\r\n nodes {\r\n ...CoreFredhopperFacetsFields\r\n }\r\n }\r\n nl: allContentfulFredhopperFacets(\r\n filter: { node_locale: { eq: \"nl\" }, title: { eq: \"Suggest\" } }\r\n ) {\r\n nodes {\r\n ...CoreFredhopperFacetsFields\r\n }\r\n }\r\n fr: allContentfulFredhopperFacets(\r\n filter: { node_locale: { eq: \"fr\" }, title: { eq: \"Suggest\" } }\r\n ) {\r\n nodes {\r\n ...CoreFredhopperFacetsFields\r\n }\r\n }\r\n it: allContentfulFredhopperFacets(\r\n filter: { node_locale: { eq: \"it\" }, title: { eq: \"Suggest\" } }\r\n ) {\r\n nodes {\r\n ...CoreFredhopperFacetsFields\r\n }\r\n }\r\n es: allContentfulFredhopperFacets(\r\n filter: { node_locale: { eq: \"es\" }, title: { eq: \"Suggest\" } }\r\n ) {\r\n nodes {\r\n ...CoreFredhopperFacetsFields\r\n }\r\n }\r\n enUS: allContentfulFredhopperFacets(\r\n filter: { node_locale: { eq: \"en-US\" }, title: { eq: \"Suggest\" } }\r\n ) {\r\n nodes {\r\n ...CoreFredhopperFacetsFields\r\n }\r\n }\r\n cs: allContentfulFredhopperFacets(\r\n filter: { node_locale: { eq: \"cs\" }, title: { eq: \"Suggest\" } }\r\n ) {\r\n nodes {\r\n ...CoreFredhopperFacetsFields\r\n }\r\n }\r\n pl: allContentfulFredhopperFacets(\r\n filter: { node_locale: { eq: \"pl\" }, title: { eq: \"Suggest\" } }\r\n ) {\r\n nodes {\r\n ...CoreFredhopperFacetsFields\r\n }\r\n }\r\n pt: allContentfulFredhopperFacets(\r\n filter: { node_locale: { eq: \"pt\" }, title: { eq: \"Suggest\" } }\r\n ) {\r\n nodes {\r\n ...CoreFredhopperFacetsFields\r\n }\r\n }\r\n }\r\n`\r\nexport const useSuggestFacet = (locale) => {\r\n return resolveNodesFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)[0].fredhopper_url.fredhopper_url\r\n}\r\n","import React, { useContext, useState, useEffect, useRef } from 'react'\r\nimport { Link } from 'gatsby'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { useNavigationHome } from '../../hooks/useNavigationHome'\r\nimport { buildCrumbsFromChildPages } from '../breadcrumb'\r\nimport LiveChat from './liveChat'\r\nimport Distributors from './distributors'\r\nimport Login from './login'\r\nimport MobileNavContext from '../../contexts/mobileNavContext'\r\nimport { useOnScroll } from '../../hooks/useOnScroll'\r\nimport { useOnResize } from '../../hooks/useOnResize'\r\nimport { useHeaderI18n } from '../../hooks/i18n/useHeaderI18n'\r\nimport StandardButton, { StandardButtonArrowIcon } from '../widgets/standardButton'\r\nimport { useBlogs } from '../../hooks/useBlogs'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport SearchContext from '../../contexts/searchContext'\r\n\r\nconst Navigation = ({ id }) => {\r\n const myOnScrollRef = useRef(null)\r\n const myOnResizeRef = useRef(null)\r\n const locale = useContext(LocaleContext)\r\n const blogs = useBlogs(locale)\r\n const { isMobileNavOpen, setIsMobileNavOpen, subNavId, setSubNavId } =\r\n useContext(MobileNavContext)\r\n const { suggestionsOpen } = useContext(SearchContext)\r\n const home = useNavigationHome(locale)\r\n const [isIE, setIsIE] = useState(false)\r\n\r\n const [activeIds, setActiveIds] = useState([home.id])\r\n const [classes, setClasses] = useState('row header__secondary d-none no-gutter d-lg-block')\r\n const [homeClasses, setHomeClasses] = useState('header__nav--primary-item d-none d-lg-block')\r\n const [ulClasses, setUlClasses] = useState('d-flex')\r\n\r\n useEffect(() => {\r\n if (isMobileNavOpen === false) {\r\n setSubNavId(null)\r\n }\r\n var msie = window.navigator.userAgent.indexOf('Trident/')\r\n setIsIE(msie > 0)\r\n }, [isMobileNavOpen])\r\n\r\n useEffect(() => {\r\n let myActiveIds = [home.id]\r\n let myHomeClasses = 'header__nav--primary-item d-none d-lg-block'\r\n\r\n const myClasses = isMobileNavOpen\r\n ? 'row header__secondary d-lg-block no-gutter'\r\n : suggestionsOpen\r\n ? 'row header__secondary no-gutter d-none'\r\n : 'row header__secondary d-lg-block no-gutter d-none'\r\n const myUlClasses = 'd-flex'\r\n\r\n if (id === home.id) {\r\n if (isMobileNavOpen === false) {\r\n myHomeClasses = `${myHomeClasses} is-active`\r\n }\r\n } else {\r\n let crumbs = {}\r\n buildCrumbsFromChildPages(crumbs, [], home.childPages, blogs)\r\n let currentCrumbs = crumbs[id]\r\n if (currentCrumbs && currentCrumbs.length > 0) {\r\n myActiveIds = currentCrumbs.map((i) => i.id)\r\n } else {\r\n if (isMobileNavOpen === false) {\r\n myHomeClasses = `${myHomeClasses} is-active`\r\n }\r\n }\r\n }\r\n\r\n setActiveIds(myActiveIds)\r\n setClasses(myClasses)\r\n setHomeClasses(myHomeClasses)\r\n setUlClasses(myUlClasses)\r\n }, [id, isMobileNavOpen, subNavId, home, blogs, suggestionsOpen])\r\n\r\n useOnScroll([myOnScrollRef], () => {\r\n let header = document.querySelector('header')\r\n if (isIE === false) {\r\n let scrolled = document.scrollingElement.scrollTop\r\n\r\n if (scrolled > 1) {\r\n header.classList.add('is-scrolled')\r\n return true\r\n } else {\r\n header.classList.remove('is-scrolled')\r\n return false\r\n }\r\n }\r\n })\r\n\r\n useOnResize([myOnResizeRef], () => {\r\n const windowWidth = window.innerWidth\r\n\r\n if (windowWidth >= 1194) {\r\n setIsMobileNavOpen(false)\r\n }\r\n })\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n \r\n \r\n \r\n
    • \r\n {home.childPages.map((topLevelChildPage) => {\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\n\r\nexport default Navigation\r\n\r\nconst PrimaryNavLink = ({ topLevelChildPage, activeIds }) => {\r\n const { isMobileNavOpen, subNavId, setSubNavId } = useContext(MobileNavContext)\r\n const locale = useContext(LocaleContext)\r\n const microcopy = useHeaderI18n(locale)\r\n const home = useNavigationHome(locale)\r\n const [hasChildPages, setHasChildPages] = useState(false)\r\n const [mainClasses, setMainClasses] = useState('header__nav--primary-item')\r\n const [linkClasses, setLinkClasses] = useState('')\r\n const parentPath = `/${home.slug}/${topLevelChildPage.slug}`\r\n\r\n useEffect(() => {\r\n let myChildNavIds = []\r\n\r\n if (topLevelChildPage.childPages) {\r\n for (let index = 0; index < topLevelChildPage.childPages.length; index++) {\r\n const element = topLevelChildPage.childPages[index]\r\n if (element.hideInNavigationMenu === false) {\r\n myChildNavIds.push(element.id)\r\n }\r\n }\r\n }\r\n\r\n const myHasChildPages = myChildNavIds.length > 0\r\n\r\n function buildClasses() {\r\n let classes = 'header__nav--primary-item'\r\n\r\n if (myHasChildPages) {\r\n classes = `${classes} has-children`\r\n }\r\n\r\n if (isMobileNavOpen === true) {\r\n classes = `${classes} is-hovered`\r\n\r\n if (subNavId === topLevelChildPage.id) {\r\n classes = `${classes} subnav-open`\r\n setLinkClasses('is-backlink')\r\n } else {\r\n setLinkClasses('')\r\n }\r\n\r\n if (subNavId !== null && myChildNavIds.includes(subNavId)) {\r\n classes = `${classes} subnav-open`\r\n setLinkClasses('d-none')\r\n }\r\n } else {\r\n if (activeIds.includes(topLevelChildPage.id)) {\r\n classes = `${classes} is-active`\r\n }\r\n\r\n if (subNavId === null) {\r\n //classes = `${classes} is-hovered`\r\n } else if (subNavId === topLevelChildPage.id) {\r\n classes = `${classes} is-hovered`\r\n }\r\n }\r\n\r\n setMainClasses(classes)\r\n }\r\n\r\n setHasChildPages(myHasChildPages)\r\n\r\n buildClasses()\r\n }, [topLevelChildPage, isMobileNavOpen, subNavId])\r\n\r\n function onTopLevelLinkClick(e) {\r\n const header = document.querySelector('header')\r\n e.preventDefault()\r\n if (subNavId && subNavId === topLevelChildPage.id) {\r\n setSubNavId(null)\r\n header.classList.remove('nav-open')\r\n } else {\r\n setSubNavId(topLevelChildPage.id)\r\n header.classList.add('nav-open')\r\n }\r\n }\r\n\r\n return topLevelChildPage.hideInNavigationMenu === false && topLevelChildPage.slug ? (\r\n
  • \r\n \r\n \r\n {isMobileNavOpen && subNavId === topLevelChildPage.id\r\n ? getI18nText(microcopy, 'header.navall')\r\n : topLevelChildPage.name}\r\n \r\n \r\n\r\n {hasChildPages ? (\r\n \r\n ) : null}\r\n
  • \r\n ) : null\r\n}\r\n\r\nconst SecondaryNavMenu = ({ locale, parentPath, topLevelChildPage, activeIds }) => {\r\n const { setIsMobileNavOpen, setSubNavId } = useContext(MobileNavContext)\r\n const microcopy = useHeaderI18n(locale)\r\n const [linkClasses] = useState('header__nav--primary-section d-none d-xl-none')\r\n\r\n function onClick() {\r\n setIsMobileNavOpen(false)\r\n setSubNavId(null)\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {topLevelChildPage.shortSummary}
    \r\n \r\n {topLevelChildPage.name}\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n {topLevelChildPage.name}\r\n \r\n
      \r\n {topLevelChildPage.childPages.map((secondLevelChildPage) => (\r\n \r\n ))}\r\n
    • \r\n \r\n {getI18nText(microcopy, 'header.navviewall')}\r\n \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nconst SecondaryNavLink = ({ locale, topLevelChildPage, secondLevelChildPage, activeIds }) => {\r\n const home = useNavigationHome(locale)\r\n const { isMobileNavOpen, setIsMobileNavOpen, subNavId, setSubNavId } =\r\n useContext(MobileNavContext)\r\n const [hasChildPages, setHasChildPages] = useState(false)\r\n const [linkClasses, setLinkClasses] = useState('d-flex align-items-center')\r\n const [linkTitle, setLinkTitle] = useState()\r\n const [linkPath, setLinkPath] = useState()\r\n const [listClasses, setListClasses] = useState('header__nav--secondary-item')\r\n const path = `/${home.slug}/${topLevelChildPage.slug}/${secondLevelChildPage.slug}`\r\n const backLinkPath = `/${home.slug}/${topLevelChildPage.slug}`\r\n\r\n useEffect(() => {\r\n let myChildNavIds = []\r\n\r\n if (secondLevelChildPage.childPages) {\r\n for (let index = 0; index < secondLevelChildPage.childPages.length; index++) {\r\n const element = secondLevelChildPage.childPages[index]\r\n if (element.hideInNavigationMenu === false) {\r\n myChildNavIds.push(element.id)\r\n }\r\n }\r\n }\r\n\r\n function buildClasses() {\r\n let myLinkClasses = 'd-flex align-items-center'\r\n let myListClasses = 'header__nav--secondary-item'\r\n\r\n if (activeIds.includes(secondLevelChildPage.id)) {\r\n myListClasses = `${myListClasses} is-hovered`\r\n }\r\n\r\n if (myChildNavIds.length > 0) {\r\n myListClasses = `${myListClasses} has-children`\r\n }\r\n\r\n if (isMobileNavOpen === true) {\r\n if (subNavId === secondLevelChildPage.id) {\r\n myListClasses = `${myListClasses} subnav-open`\r\n myLinkClasses = `${myLinkClasses} is-backlink`\r\n setLinkTitle(topLevelChildPage.name)\r\n setLinkPath(backLinkPath)\r\n } else {\r\n setLinkTitle(secondLevelChildPage.name)\r\n setLinkPath(path)\r\n }\r\n } else {\r\n myLinkClasses = `${myLinkClasses}`\r\n setLinkTitle(secondLevelChildPage.name)\r\n setLinkPath(path)\r\n }\r\n\r\n setLinkClasses(myLinkClasses)\r\n setListClasses(myListClasses)\r\n }\r\n\r\n setHasChildPages(myChildNavIds.length > 0)\r\n buildClasses()\r\n }, [topLevelChildPage, secondLevelChildPage, subNavId, isMobileNavOpen])\r\n\r\n function handleShowMobileTertiaryNav(e) {\r\n if (isMobileNavOpen === true) {\r\n if (hasChildPages === true) {\r\n setSubNavId(secondLevelChildPage.id)\r\n e.preventDefault()\r\n } else {\r\n setIsMobileNavOpen(false)\r\n setSubNavId(null)\r\n }\r\n }\r\n }\r\n\r\n function handleClearMobileTertiaryNav(e) {\r\n if (isMobileNavOpen === true) {\r\n setSubNavId(topLevelChildPage.id)\r\n e.preventDefault()\r\n }\r\n }\r\n\r\n return secondLevelChildPage.hideInNavigationMenu === false && secondLevelChildPage.slug ? (\r\n
  • \r\n <>\r\n {linkPath ? (\r\n \r\n {linkTitle}\r\n \r\n ) : null}\r\n \r\n {secondLevelChildPage.childPages &&\r\n secondLevelChildPage.childPages.some((element) => element.hideInNavigationMenu === false) ? (\r\n \r\n ) : null}\r\n
  • \r\n ) : null\r\n}\r\n\r\nconst TertiaryNavMenu = ({ secondLevelChildPage, path, isOpenedTertiaryNavMenu, locale }) => {\r\n const { setIsMobileNavOpen, setSubNavId } = useContext(MobileNavContext)\r\n const microcopy = useHeaderI18n(locale)\r\n const [linkClasses, setLinkClasses] = useState('header__nav--secondary-section d-xl-none')\r\n\r\n useEffect(() => {\r\n function buildClasses() {\r\n let myLinkClasses = 'header__nav--secondary-section d-xl-none'\r\n if (isOpenedTertiaryNavMenu === false) {\r\n myLinkClasses = `${myLinkClasses} d-none`\r\n }\r\n\r\n setLinkClasses(myLinkClasses)\r\n }\r\n\r\n buildClasses()\r\n }, [secondLevelChildPage, isOpenedTertiaryNavMenu])\r\n\r\n function onClick() {\r\n setIsMobileNavOpen(false)\r\n setSubNavId(null)\r\n }\r\n\r\n return (\r\n
    \r\n \r\n {secondLevelChildPage.name}\r\n \r\n
      \r\n {secondLevelChildPage.childPages &&\r\n secondLevelChildPage.childPages.map((element) => {\r\n if (element.hideInNavigationMenu === false && element.slug) {\r\n return \r\n } else {\r\n return null\r\n }\r\n })}\r\n\r\n
    • \r\n \r\n {getI18nText(microcopy, 'header.navviewall')}\r\n \r\n
    • \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nconst TertiaryNavLink = ({ element, path }) => {\r\n const { setIsMobileNavOpen, setSubNavId } = useContext(MobileNavContext)\r\n const navPath = `${path}/${element.slug}`\r\n\r\n function onClick() {\r\n setSubNavId(null)\r\n setIsMobileNavOpen(false)\r\n }\r\n\r\n return (\r\n
  • \r\n \r\n {element.name}\r\n \r\n
  • \r\n )\r\n}\r\n","import React, { useState, useContext, useEffect, useRef } from 'react'\r\nimport { useOrderedLanguages } from '../../hooks/useLanguages'\r\nimport AltPathsContext from '../../contexts/altPathsContext'\r\nimport { Link } from 'gatsby'\r\nimport { useHeaderI18n } from '../../hooks/i18n/useHeaderI18n'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport LanguageContext from '../../contexts/languageContext'\r\nimport('/src/components/languageOffcanvas.css')\r\n\r\nconst LanguagesSelect = ({ toggleLanguageSelect, open, locale }) => {\r\n const microcopy = useHeaderI18n(locale)\r\n const { setLanguage } = useContext(LanguageContext)\r\n const altPaths = useRef(useContext(AltPathsContext))\r\n const languages = useRef(useOrderedLanguages(locale))\r\n const [languageDic, setLanguageDic] = useState({})\r\n\r\n useEffect(() => {\r\n let languageDictionary = {}\r\n languages.current.forEach((element) => {\r\n let search = window.location.search\r\n let path = altPaths.current[element.slug]\r\n\r\n if (path === undefined) {\r\n path = element.slug\r\n }\r\n if (search !== undefined && search !== null && search.length > 0) {\r\n search = `${search}`\r\n } else {\r\n search = ''\r\n }\r\n languageDictionary[element.slug] = `/${path}${search}`\r\n })\r\n\r\n setLanguageDic(languageDictionary)\r\n }, [])\r\n\r\n const getLanguageIconForLocale = (locale) => {\r\n switch (locale) {\r\n case 'en':\r\n return '/assets/images/icons/Flags_UK.svg'\r\n case 'de':\r\n return '/assets/images/icons/Flags_Deutsch.svg'\r\n case 'fr':\r\n return '/assets/images/icons/Flags_France.svg'\r\n case 'cs':\r\n return '/assets/images/icons/Flags_Czechia.svg'\r\n case 'pl':\r\n return '/assets/images/icons/Flags_Poland.svg'\r\n case 'it':\r\n return '/assets/images/icons/Flags_Italia.svg'\r\n case 'es':\r\n return '/assets/images/icons/Flags_Spain.svg'\r\n case 'en-us':\r\n return '/assets/images/icons/Flags_US.svg'\r\n case 'nl':\r\n return '/assets/images/icons/Flags_Nederlands.svg'\r\n case 'pt':\r\n return '/assets/images/icons/Flags_Brazil.svg'\r\n default:\r\n break\r\n }\r\n }\r\n\r\n const onClick = (e) => {\r\n try {\r\n const foundLanguage = languages.current.find(\r\n (element) => element.slug === e.target.parentElement.id\r\n )\r\n if (foundLanguage) {\r\n setLanguage(foundLanguage.slug)\r\n }\r\n } catch (err) {\r\n console.log(err)\r\n }\r\n }\r\n\r\n return (\r\n \r\n
    \r\n \r\n

    {getI18nText(microcopy, 'header.languages')}

    \r\n {languages.current.map((value) => {\r\n const path = languageDic[value.slug]\r\n\r\n if (path === undefined) {\r\n return null\r\n }\r\n\r\n return (\r\n \r\n
    \r\n \r\n
    \r\n {value.title}\r\n \r\n \r\n )\r\n })}\r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default LanguagesSelect\r\n","import { Link } from 'gatsby'\r\nimport React, { useContext } from 'react'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport MobileNavContext from '../../contexts/mobileNavContext'\r\nimport { useHeaderI18n } from '../../hooks/i18n/useHeaderI18n'\r\nimport { useNavigationHome } from '../../hooks/useNavigationHome'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport SearchContext from '../../contexts/searchContext'\r\n\r\nconst MobileMenu = () => {\r\n const openIcon = 'header__toplinks--icon icon-Menu-Hamburger-Search'\r\n const closeIcon = 'header__toplinks--icon icon-Close'\r\n const linkClasses =\r\n 'header__toplinks--click d-flex flex-column justify-content-center text-center'\r\n const locale = useContext(LocaleContext)\r\n const { isMobileNavOpen, setIsMobileNavOpen } = useContext(MobileNavContext)\r\n const home = useNavigationHome(locale)\r\n const microcopy = useHeaderI18n(locale)\r\n const {showSuggestions, setSearchValue} = useContext(SearchContext)\r\n const homePath = '/' + home.slug\r\n\r\n function onClick(e) {\r\n e.preventDefault()\r\n if (showSuggestions) {\r\n setSearchValue('')\r\n }\r\n setIsMobileNavOpen(!isMobileNavOpen)\r\n }\r\n\r\n return (\r\n
  • \r\n \r\n \r\n \r\n {getI18nText(microcopy, 'header.menu')}\r\n \r\n
  • \r\n )\r\n}\r\n\r\nexport default MobileMenu\r\n","import React, { useContext } from 'react'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { useHeaderI18n } from '../../hooks/i18n/useHeaderI18n'\r\nimport { Link } from 'gatsby'\r\nimport { useAccountSlug } from '../../hooks/slugs/useAccountSlug'\r\nimport { useNavigationHome } from '../../hooks/useNavigationHome'\r\nimport UserContext from '../../contexts/userContext'\r\nimport { useAccountI18n } from '../../hooks/i18n/useAccountI18n'\r\nimport { AccountTypeErp } from '../../services/userService'\r\n\r\nconst LoggedInOffCanvas = ({ toggle, open }) => {\r\n const locale = useContext(LocaleContext)\r\n const microcopy = useHeaderI18n(locale)\r\n const accountMicrocopy = useAccountI18n(locale)\r\n const home = useNavigationHome(locale)\r\n const accountPath = '/' + home.slug + '/' + useAccountSlug(locale)\r\n\r\n return (\r\n \r\n
    \r\n \r\n {({ accountNumber, accountType, email, isDistributor, firstName, lastName }) => {\r\n return (\r\n <>\r\n \r\n

    {getI18nText(microcopy, 'header.account')}

    \r\n
    {getI18nText(microcopy, 'header.welcomeback')}
    \r\n
    \r\n

    \r\n {email} {accountType === AccountTypeErp ? <>({accountNumber}) : null}\r\n

    \r\n
    \r\n
    \r\n {isDistributor ? (\r\n <>\r\n
    \r\n {getI18nText(accountMicrocopy, 'account.distributorportal')}\r\n
    \r\n
    \r\n

    \r\n {getI18nText(\r\n accountMicrocopy,\r\n 'account.accesspersonaliseddistributorportal'\r\n )}\r\n

    \r\n
    \r\n \r\n
    \r\n {getI18nText(accountMicrocopy, 'account.distributorportal')}\r\n
    \r\n \r\n \r\n ) : (\r\n <>\r\n
    \r\n {getI18nText(accountMicrocopy, 'account.myaccount')}\r\n
    \r\n
    \r\n

    {getI18nText(accountMicrocopy, 'account.viewyouraccount')}

    \r\n
    \r\n \r\n
    \r\n {getI18nText(accountMicrocopy, 'account.viewaccount')}\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 LoggedInOffCanvas\r\n","import React, { useState, useContext } from 'react'\r\nimport { Link } from 'gatsby'\r\nimport { Spinner } from 'react-bootstrap'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport { useNavigationHome } from '../../hooks/useNavigationHome'\r\nimport { useRegisterSlug } from '../../hooks/slugs/useRegisterSlug'\r\nimport { performLogIn } from '../header/login'\r\nimport { useHeaderI18n } from '../../hooks/i18n/useHeaderI18n'\r\nimport { useRegisterI18n } from '../../hooks/i18n/useRegisterI18n'\r\nimport { useLoginI18n } from '../../hooks/i18n/useLoginI18n'\r\n\r\nconst LoginOffCanvas = ({ toggle, open }) => {\r\n const locale = useContext(LocaleContext)\r\n const [loginButtonHasBeenClicked, setLoginButtonHasBeenClicked] = useState(false)\r\n const headerMicrocopy = useHeaderI18n(locale)\r\n const registerMicrocopy = useRegisterI18n(locale)\r\n const loginMicrocopy = useLoginI18n(locale)\r\n const home = useNavigationHome(locale)\r\n const registerSlug = useRegisterSlug(locale)\r\n const registerUrl = `/${home.slug}/${registerSlug}`\r\n\r\n const onLoginClick = (e) => {\r\n e.preventDefault()\r\n performLogIn(loginButtonHasBeenClicked, setLoginButtonHasBeenClicked, home.slug)\r\n }\r\n\r\n return (\r\n \r\n
    \r\n <>\r\n \r\n

    {getI18nText(headerMicrocopy, 'header.account')}

    \r\n
    {getI18nText(loginMicrocopy, 'login.login')}
    \r\n
    \r\n

    {getI18nText(loginMicrocopy, 'login.logintogainaccess')}

    \r\n

    \r\n \r\n {getI18nText(loginMicrocopy, 'login.forgotpassword')}\r\n \r\n

    \r\n
    \r\n \r\n
    \r\n {getI18nText(loginMicrocopy, 'login.login')}\r\n {loginButtonHasBeenClicked ? (\r\n \r\n ) : null}\r\n
    \r\n
    \r\n
    \r\n\r\n
    {getI18nText(registerMicrocopy, 'register.register')}
    \r\n
    \r\n

    \r\n {getI18nText(registerMicrocopy, 'register.donothaveanaccount')} \r\n {getI18nText(registerMicrocopy, 'register.registertoaccess')}\r\n

    \r\n
    \r\n \r\n
    \r\n {getI18nText(registerMicrocopy, 'register.register')}\r\n
    \r\n \r\n \r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default LoginOffCanvas\r\n","import React, { useContext, useEffect, useRef, useState } from 'react'\r\nimport Login from '../header/login'\r\nimport Search from '../header/search'\r\nimport Languages from '../header/languages'\r\nimport Basket from '../header/basket'\r\nimport LiveChat from '../header/liveChat'\r\nimport Distributors from '../header/distributors'\r\nimport Suggestions from '../header/suggestions'\r\nimport Navigation from '../header/navigation'\r\nimport LanguagesSelect from '../header/languagesSelect'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { useNavigationHome } from '../../hooks/useNavigationHome'\r\nimport { navigate } from 'gatsby'\r\nimport MobileMenu from '../header/mobileMenu'\r\nimport MobileNavContext from '../../contexts/mobileNavContext'\r\nimport SearchContext from '../../contexts/searchContext'\r\nimport { BasketContextBrowsing } from '../../services/backendApiService'\r\nimport WhoAmI from '../header/whoAmI'\r\nimport LoggedInOffCanvas from '../offcanvas/loggedinOffcanvas'\r\nimport LoginOffCanvas from '../offcanvas/loginOffcanvas'\r\n\r\nconst StandardHeader = ({ darkTheme, id, skipGetBasket, showAccountOffCanvas }) => {\r\n const locale = useContext(LocaleContext)\r\n const { isMobileNavOpen, subNavId, setSubNavId } = useContext(MobileNavContext)\r\n const searchContext = useRef(useContext(SearchContext))\r\n const { suggestionsOpen } = useContext(SearchContext)\r\n\r\n const home = useNavigationHome(locale)\r\n const [languageOpen, setLanguageOpen] = useState(false)\r\n const [accountOffCanvasOpen, setAccountOffCanvasOpen] = useState(false)\r\n const [loginOffCanvasOpen, setLoginOffCanvasOpen] = useState(false)\r\n const [headerClasses, setHeaderClasses] = useState('header position-fixed w-100')\r\n\r\n useEffect(() => {\r\n setAccountOffCanvasOpen(showAccountOffCanvas)\r\n }, [showAccountOffCanvas])\r\n\r\n useEffect(() => {\r\n let myHeaderClasses = 'header position-fixed w-100'\r\n\r\n myHeaderClasses = darkTheme ? `${myHeaderClasses} theme-dark` : myHeaderClasses\r\n\r\n if (isMobileNavOpen === true) {\r\n myHeaderClasses = `${myHeaderClasses} mobilenav-open`\r\n\r\n if (subNavId !== null) {\r\n myHeaderClasses = `${myHeaderClasses} hide-extramenu`\r\n }\r\n }\r\n\r\n if (suggestionsOpen === true) {\r\n myHeaderClasses = `${myHeaderClasses} search-open`\r\n }\r\n\r\n setHeaderClasses(myHeaderClasses)\r\n }, [isMobileNavOpen, subNavId, suggestionsOpen])\r\n\r\n function languageOnClick() {\r\n searchContext.current.closeSuggestions()\r\n setLanguageOpen(!languageOpen)\r\n }\r\n\r\n function toggle() {\r\n setAccountOffCanvasOpen(!accountOffCanvasOpen)\r\n }\r\n\r\n function toggleLoginOffCanvas() {\r\n setLoginOffCanvasOpen(!loginOffCanvasOpen)\r\n }\r\n\r\n function homeLogoClicked() {\r\n searchContext.current.closeSuggestions()\r\n navigate('/' + home.slug)\r\n }\r\n\r\n function onPrimaryMouseEnter() {\r\n if (isMobileNavOpen === false) {\r\n let header = document.querySelector('header')\r\n header.classList.remove('nav-open')\r\n setSubNavId(null)\r\n }\r\n }\r\n\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\n
      \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n {languageOpen || accountOffCanvasOpen ? (\r\n
    \r\n ) : null}\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 StandardHeader\r\n","import React, { useContext, useEffect } from 'react'\r\nimport { v4 as uuid } from 'uuid'\r\nimport NotificationsContext, {\r\n publishDismissableSuccessWithLink,\r\n publishDismissableWarning,\r\n publishDismissableWarningWithLink,\r\n} from '../../../contexts/notificationsContext'\r\nimport BasketContext from '../../../contexts/basketContext'\r\nimport { getMyBasket } from '../../../services/basketService'\r\nimport { BasketContextBrowsing } from '../../../services/backendApiService'\r\nimport LocaleContext from '../../../contexts/localeContext'\r\nimport { getI18nText } from '../../../services/i18nService'\r\nimport { useNavigationHome } from '../../../hooks/useNavigationHome'\r\nimport { useBasketSlug } from '../../../hooks/slugs/useBasketSlug'\r\n\r\nconst UnfinishedAddMultipleProductsToBasketJobs = ({ subject, basketMicrocopy }) => {\r\n const { setNotification } = useContext(NotificationsContext)\r\n const { setWarningMessages } = useContext(BasketContext)\r\n const { basketId, setBasket, setBasketFeatureAvailability } = useContext(BasketContext)\r\n const locale = useContext(LocaleContext)\r\n const basketUrl = '/' + useNavigationHome(locale).slug + '/' + useBasketSlug(locale)\r\n\r\n useEffect(() => {\r\n subject.attach(onJobUpdated)\r\n\r\n return () => {\r\n subject.detach(onJobUpdated)\r\n }\r\n }, [subject])\r\n\r\n const onJobUpdated = ({\r\n jobId,\r\n jobType,\r\n overallStatus,\r\n oldJobOverallStatus,\r\n jobSpecificStatus,\r\n oldJobSpecificStatus,\r\n warningsJson,\r\n }) => {\r\n if (overallStatus === 3 || overallStatus === 4) {\r\n const requestId = uuid()\r\n\r\n if (basketId) {\r\n getMyBasket(basketId, null, null, requestId, BasketContextBrowsing, null)\r\n .then((data) => {\r\n if (data.requestId === requestId) {\r\n setBasket(data.basket)\r\n setBasketFeatureAvailability(true)\r\n }\r\n })\r\n .catch((err) => {})\r\n }\r\n\r\n if (jobSpecificStatus === 2 && warningsJson) {\r\n var arr_from_json = JSON.parse(warningsJson)\r\n var productCodes = []\r\n arr_from_json.map((element) => {\r\n productCodes.push(element.ProductCode)\r\n })\r\n\r\n publishDismissableWarning(\r\n null,\r\n getI18nText(basketMicrocopy, 'basket.warning.quantitychanged') + productCodes,\r\n setNotification\r\n )\r\n } else {\r\n if (overallStatus === 3) {\r\n setWarningMessages([])\r\n publishDismissableSuccessWithLink(\r\n requestId,\r\n getI18nText(basketMicrocopy, 'basket.yourbaskethasbeenupdated'),\r\n setNotification,\r\n basketUrl\r\n )\r\n } else if (overallStatus === 4) {\r\n var arr_from_json = JSON.parse(warningsJson)\r\n var errorMessages = []\r\n arr_from_json.map((element) => {\r\n errorMessages.push({ sku: element.ProductCode, type: 'error' })\r\n })\r\n\r\n setWarningMessages(errorMessages)\r\n } else {\r\n publishDismissableWarningWithLink(\r\n requestId,\r\n `Job ${jobId} has completed with errors!`,\r\n setNotification,\r\n `en/jobTest/${jobId}`\r\n )\r\n }\r\n }\r\n }\r\n }\r\n return null\r\n}\r\n\r\nexport default UnfinishedAddMultipleProductsToBasketJobs\r\n","import React, { useContext, useEffect } from 'react'\r\nimport { v4 as uuid } from 'uuid'\r\nimport JobContext, { detachFromJobs, getSubjectForJob } from '../../../contexts/jobContext'\r\nimport UserContext from '../../../contexts/userContext'\r\nimport { isAnonymousUser } from '../../../services/userService'\r\nimport {\r\n addMultipleProductsToBasketJobType,\r\n getUnfinishedJobs,\r\n} from '../../../services/jobApiService'\r\nimport { JobSubject } from '../../../services/subjects/jobSubject'\r\nimport UnfinishedAddMultipleProductsToBasketJobs from './unfinishedAddMultipleProductsToBasketJobs'\r\nimport LocaleContext from '../../../contexts/localeContext'\r\nimport { useBasketI18n } from '../../../hooks/i18n/useBasketI18n'\r\n\r\nconst UnfinishedJobs = () => {\r\n const { jobSubjects, addSubject, removeAllSubjects, removeSubject } = useContext(JobContext)\r\n const { email } = useContext(UserContext)\r\n const locale = useContext(LocaleContext)\r\n const basketMicrocopy = useBasketI18n(locale)\r\n\r\n useEffect(() => {\r\n if (isAnonymousUser(email)) {\r\n removeAllSubjects()\r\n } else {\r\n const requestId = uuid()\r\n getUnfinishedJobs(requestId)\r\n .then((data) => {\r\n data.forEach((job) => {\r\n let subject = getSubjectForJob(jobSubjects, job.id)\r\n\r\n if (subject) {\r\n } else {\r\n subject = new JobSubject(job.id, job.jobType)\r\n subject.attach(onJobUpdated)\r\n addSubject(subject)\r\n }\r\n })\r\n })\r\n .catch((err) => {})\r\n }\r\n }, [email])\r\n\r\n useEffect(() => {\r\n for (const [key, value] of Object.entries(jobSubjects)) {\r\n if (value.isAttached(onJobUpdated) === false) {\r\n value.attach(onJobUpdated)\r\n value.observe()\r\n }\r\n }\r\n\r\n return () => {\r\n detachFromJobs(jobSubjects, onJobUpdated)\r\n }\r\n }, [jobSubjects])\r\n\r\n const onJobUpdated = ({\r\n jobId,\r\n jobType,\r\n overallStatus,\r\n oldJobOverallStatus,\r\n jobSpecificStatus,\r\n oldJobSpecificStatus,\r\n }) => {\r\n if (overallStatus === 3 || overallStatus === 4) {\r\n let subject = getSubjectForJob(jobSubjects, jobId)\r\n if (subject) {\r\n removeSubject(subject)\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {({ jobSubjects }) => {\r\n for (const [key, value] of Object.entries(jobSubjects)) {\r\n if (value.jobType === addMultipleProductsToBasketJobType) {\r\n return (\r\n \r\n )\r\n } else {\r\n return null\r\n }\r\n }\r\n }}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default UnfinishedJobs\r\n","import React, { useEffect, useState } from 'react'\r\nimport { Collapse } from 'react-bootstrap'\r\nimport { getInsecureValue, setInsecureValue } from '../../services/insecureStore'\r\nimport { useAlertRow } from '../../hooks/useAlertRow'\r\nimport { Link } from 'gatsby'\r\nimport { buildUrl } from '../../services/urlService'\r\nimport { useBlogNavigation } from '../../hooks/navigation/useBlogNavigation'\r\n\r\nconst closeIconBaseClassName = 'icon-Close'\r\nconst baseCookieName = '_messageBar'\r\nconst MessageBar = ({ locale }) => {\r\n const alertRow = useAlertRow(locale)\r\n const navBlog = useBlogNavigation(locale)\r\n const [isOpen, setIsOpen] = useState(false)\r\n const [closeIconClassName, setCloseIconClassName] = useState(closeIconBaseClassName)\r\n const [id, setId] = useState()\r\n const [text, setText] = useState()\r\n const [link, setLink] = useState()\r\n const [linkText, setLinkText] = useState()\r\n\r\n useEffect(() => {\r\n if (alertRow && Array.isArray(alertRow) === true && alertRow.length > 0) {\r\n const myId = alertRow[0].contentful_id\r\n\r\n if (myId) {\r\n const state = getInsecureValue(`${myId}${baseCookieName}`)\r\n\r\n if (state && state === true) {\r\n setIsOpen(false)\r\n } else {\r\n setIsOpen(true)\r\n\r\n let myLink\r\n\r\n if (alertRow[0].blogLink) {\r\n myLink = `${buildUrl(navBlog, '')}/${alertRow[0].blogLink.slug}`\r\n } else {\r\n myLink = buildUrl(alertRow[0].link, '')\r\n }\r\n\r\n setId(myId)\r\n setText(alertRow[0].text)\r\n setLink(myLink)\r\n setLinkText(alertRow[0].linkText)\r\n }\r\n }\r\n }\r\n }, [alertRow])\r\n\r\n const onClose = () => {\r\n setIsOpen(false)\r\n setInsecureValue(`${id}${baseCookieName}`, true)\r\n }\r\n\r\n const onExit = () => {\r\n setCloseIconClassName(`${closeIconBaseClassName} collapsed`)\r\n }\r\n\r\n return (\r\n <>\r\n {isOpen === true ? (\r\n \r\n
    \r\n
    \r\n
    \r\n {text}\r\n <>\r\n {link ? (\r\n \r\n {linkText}\r\n \r\n \r\n ) : null}\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n ) : null}\r\n \r\n )\r\n}\r\nexport default MessageBar\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveNodesFromResourcesQueryResultForLocale } from '../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n {\r\n en: allContentfulAlertRow(\r\n filter: { node_locale: { eq: \"en\" }, active: { eq: true } }\r\n limit: 1\r\n sort: { updatedAt: DESC }\r\n ) {\r\n nodes {\r\n ...CoreAlertRowFields\r\n }\r\n }\r\n de: allContentfulAlertRow(\r\n filter: { node_locale: { eq: \"de\" }, active: { eq: true } }\r\n limit: 1\r\n sort: { updatedAt: DESC }\r\n ) {\r\n nodes {\r\n ...CoreAlertRowFields\r\n }\r\n }\r\n nl: allContentfulAlertRow(\r\n filter: { node_locale: { eq: \"nl\" }, active: { eq: true } }\r\n limit: 1\r\n sort: { updatedAt: DESC }\r\n ) {\r\n nodes {\r\n ...CoreAlertRowFields\r\n }\r\n }\r\n fr: allContentfulAlertRow(\r\n filter: { node_locale: { eq: \"fr\" }, active: { eq: true } }\r\n limit: 1\r\n sort: { updatedAt: DESC }\r\n ) {\r\n nodes {\r\n ...CoreAlertRowFields\r\n }\r\n }\r\n it: allContentfulAlertRow(\r\n filter: { node_locale: { eq: \"it\" }, active: { eq: true } }\r\n limit: 1\r\n sort: { updatedAt: DESC }\r\n ) {\r\n nodes {\r\n ...CoreAlertRowFields\r\n }\r\n }\r\n es: allContentfulAlertRow(\r\n filter: { node_locale: { eq: \"es\" }, active: { eq: true } }\r\n limit: 1\r\n sort: { updatedAt: DESC }\r\n ) {\r\n nodes {\r\n ...CoreAlertRowFields\r\n }\r\n }\r\n enUS: allContentfulAlertRow(\r\n filter: { node_locale: { eq: \"en-US\" }, active: { eq: true } }\r\n limit: 1\r\n sort: { updatedAt: DESC }\r\n ) {\r\n nodes {\r\n ...CoreAlertRowFields\r\n }\r\n }\r\n cs: allContentfulAlertRow(\r\n filter: { node_locale: { eq: \"cs\" }, active: { eq: true } }\r\n limit: 1\r\n sort: { updatedAt: DESC }\r\n ) {\r\n nodes {\r\n ...CoreAlertRowFields\r\n }\r\n }\r\n pl: allContentfulAlertRow(\r\n filter: { node_locale: { eq: \"pl\" }, active: { eq: true } }\r\n limit: 1\r\n sort: { updatedAt: DESC }\r\n ) {\r\n nodes {\r\n ...CoreAlertRowFields\r\n }\r\n }\r\n pt: allContentfulAlertRow(\r\n filter: { node_locale: { eq: \"pt\" }, active: { eq: true } }\r\n limit: 1\r\n sort: { updatedAt: DESC }\r\n ) {\r\n nodes {\r\n ...CoreAlertRowFields\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const useAlertRow = (locale) => {\r\n return resolveNodesFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)\r\n}\r\n","import React, { useContext, useEffect, useRef, useState } from 'react'\r\nimport loadable from '@loadable/component'\r\nimport { LocaleProvider } from '../../contexts/localeContext'\r\nimport { AltPathsProvider } from '../../contexts/altPathsContext'\r\nimport { CategoryPathsProvider } from '../../contexts/categoryPathsContext'\r\nimport MobileNavContext from '../../contexts/mobileNavContext'\r\nimport CheckoutHeader from './checkoutHeader'\r\nimport CheckoutFooter from './checkoutFooter'\r\nimport { getQueryParamValue } from '../../services/queryParamService'\r\nimport NotificationsPanel from '../notifications/notificationsPanel'\r\nimport { useLocation } from '@reach/router'\r\nimport DynamicDataLayer from './dynamicDataLayer'\r\nimport { buildPageViewEvent, publishPageViewEvent } from '../../services/dataLayerService'\r\nimport UserContext from '../../contexts/userContext'\r\nimport StandardHeader from './standardHeader'\r\nimport StandardFooter from './standardFooter'\r\nimport UnfinishedJobs from './jobs/unfinishedJobs'\r\nimport DataLayerContext from '../../contexts/dataLayerContext'\r\nimport MessageBar from './messageBar'\r\nimport { useOnPageLoad } from '../../hooks/useOnPageLoad'\r\nimport { HeaderHeightProvider } from '../../contexts/headerHeightContext'\r\nimport('/static/assets/css/main.min.css')\r\nimport('/src/components/offcanvas.css')\r\n\r\nconst Ensighten = loadable(() => import('./ensighten'))\r\nconst Geolocation = loadable(() => import('../geolocation'))\r\n\r\nconst Layout = ({ ...rest }) => {\r\n const { eventApi } = useContext(DataLayerContext)\r\n const { isCheckout, locale, altPaths, categoryPaths, skipPublishEvents } = rest\r\n const { accountNumber, isDistributor } = useContext(UserContext)\r\n const myOnPageLoadRef = useRef(null)\r\n const headerHeight = useRef()\r\n const [showAccountOffCanvas, setShowAccountOffCanvas] = useState(false)\r\n const location = useLocation()\r\n\r\n useEffect(() => {\r\n function pushWindow() {\r\n if (window.location !== window.top.location) {\r\n window.top.location = window.location\r\n }\r\n }\r\n pushWindow()\r\n\r\n let windowScrollTimeout = setTimeout(() => {\r\n window.scrollTo(0, 0)\r\n clearTimeout(windowScrollTimeout)\r\n }, 1)\r\n\r\n const loginResult = getQueryParamValue('loginResult', location)\r\n\r\n if (loginResult !== undefined && loginResult !== null && loginResult === '1') {\r\n setShowAccountOffCanvas(true)\r\n } else {\r\n setShowAccountOffCanvas(false)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (\r\n eventApi &&\r\n (skipPublishEvents === null || skipPublishEvents === undefined || skipPublishEvents === false)\r\n ) {\r\n const eventModel = buildPageViewEvent(locale, accountNumber, isDistributor)\r\n publishPageViewEvent(eventApi, eventModel)\r\n }\r\n }, [eventApi])\r\n\r\n useOnPageLoad([myOnPageLoadRef], () => {\r\n if (headerHeight.current === null || headerHeight.current === undefined) {\r\n headerHeight.current = document.querySelector('header').clientHeight + 1\r\n }\r\n })\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isCheckout ? (\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {/*
    */}\r\n \r\n )\r\n}\r\n\r\nexport const CheckoutLayout = ({ ...rest }) => \r\n\r\nconst Standard = ({ darkTheme, children, id, skipGetBasket, locale, showAccountOffCanvas }) => {\r\n const { isMobileNavOpen, setSubNavId, contextTimeout, setContextTimeout } =\r\n useContext(MobileNavContext)\r\n\r\n function onMouseEnter() {\r\n if (contextTimeout) {\r\n clearTimeout(contextTimeout)\r\n setContextTimeout(undefined)\r\n }\r\n\r\n if (isMobileNavOpen === false) {\r\n setSubNavId(null)\r\n let header = document.querySelector('header')\r\n header.classList.remove('nav-open')\r\n\r\n const allSecondaryNavPanels = document.querySelectorAll('.header__nav--secondary')\r\n for (var i = 0; i < allSecondaryNavPanels.length; i++) {\r\n allSecondaryNavPanels[i].parentNode.classList.add('is-outside')\r\n allSecondaryNavPanels[i].parentNode.classList.remove('is-hovered')\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {/* */}\r\n \r\n \r\n
    \r\n {children}\r\n
    \r\n {/* */}\r\n \r\n \r\n )\r\n}\r\n\r\nconst Checkout = ({ children, skipGetBasket }) => (\r\n <>\r\n \r\n \r\n
    {children}
    \r\n \r\n \r\n)\r\n\r\nexport default Layout\r\n","import { Link } from 'gatsby'\r\nimport React, { useEffect, useState } from 'react'\r\n\r\nexport const StandardButtonArrowIcon = 'has-arrow'\r\n\r\nconst StandardButton = ({ path, icon, external, onClickCallback, children, ...rest }) => {\r\n const [classes, setClasses] = useState('btn btn-rebrand text-uppercase mt-5')\r\n\r\n useEffect(() => {\r\n setClasses(`btn btn-rebrand ${icon ? icon : ''} text-uppercase mt-5`)\r\n }, [icon])\r\n\r\n if (external) {\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n } else {\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default StandardButton\r\n\r\nexport const StandardWhiteButton = ({ path, icon, external, onClickCallback, children, ...rest }) => {\r\n const [classes, setClasses] = useState('btn btn-white text-uppercase mt-5')\r\n\r\n useEffect(() => {\r\n setClasses(`btn btn-white ${icon ? icon : ''} text-uppercase mt-5`)\r\n }, [icon])\r\n\r\n if (external) {\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n } else {\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n }\r\n}\r\n","import React from 'react'\r\n\r\nconst HeaderHeightContext = React.createContext({})\r\n\r\nexport const HeaderHeightProvider = HeaderHeightContext.Provider\r\nexport default HeaderHeightContext","import React from 'react'\r\n\r\nconst LocaleContext = React.createContext({})\r\n\r\nexport const LocaleProvider = LocaleContext.Provider\r\nexport default LocaleContext","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveMicrocopyFromResourcesQueryResultForLocale } from '../../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n en: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en\" }, key: { eq: \"account\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n de: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"de\" }, key: { eq: \"account\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n nl: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"nl\" }, key: { eq: \"account\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n fr: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"fr\" }, key: { eq: \"account\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n it: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"it\" }, key: { eq: \"account\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n es: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"es\" }, key: { eq: \"account\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n enUS: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en-US\" }, key: { eq: \"account\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n cs: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"cs\" }, key: { eq: \"account\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n pl: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"pl\" }, key: { eq: \"account\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n pt: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"pt\" }, key: { eq: \"account\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const useAccountI18n = (locale) => {\r\n return resolveMicrocopyFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveMicrocopyFromResourcesQueryResultForLocale } from '../../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n en: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en\" }, key: { eq: \"basket\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n de: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"de\" }, key: { eq: \"basket\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n nl: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"nl\" }, key: { eq: \"basket\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n fr: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"fr\" }, key: { eq: \"basket\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n it: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"it\" }, key: { eq: \"basket\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n es: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"es\" }, key: { eq: \"basket\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n enUS: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en-US\" }, key: { eq: \"basket\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n cs: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"cs\" }, key: { eq: \"basket\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n pl: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"pl\" }, key: { eq: \"basket\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n pt: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"pt\" }, key: { eq: \"basket\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const useBasketI18n = (locale) => {\r\n return resolveMicrocopyFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveMicrocopyFromResourcesQueryResultForLocale } from '../../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n en: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en\" }, key: { eq: \"configurator\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n de: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"de\" }, key: { eq: \"configurator\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n nl: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"nl\" }, key: { eq: \"configurator\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n fr: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"fr\" }, key: { eq: \"configurator\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n it: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"it\" }, key: { eq: \"configurator\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n es: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"es\" }, key: { eq: \"configurator\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n enUS: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en-US\" }, key: { eq: \"configurator\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n cs: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"cs\" }, key: { eq: \"configurator\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n pl: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"pl\" }, key: { eq: \"configurator\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n pt: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"pt\" }, key: { eq: \"configurator\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const useConfiguratorI18n = (locale) => {\r\n return resolveMicrocopyFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveMicrocopyFromResourcesQueryResultForLocale } from '../../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n en: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en\" }, key: { eq: \"contact\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n de: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"de\" }, key: { eq: \"contact\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n nl: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"nl\" }, key: { eq: \"contact\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n fr: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"fr\" }, key: { eq: \"contact\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n it: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"it\" }, key: { eq: \"contact\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n es: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"es\" }, key: { eq: \"contact\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n enUS: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en-US\" }, key: { eq: \"contact\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n cs: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"cs\" }, key: { eq: \"contact\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n pl: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"pl\" }, key: { eq: \"contact\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n pt: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"pt\" }, key: { eq: \"contact\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const useContactI18n = (locale) => {\r\n return resolveMicrocopyFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveMicrocopyFromResourcesQueryResultForLocale } from '../../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n en: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en\" }, key: { eq: \"header\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n de: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"de\" }, key: { eq: \"header\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n nl: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"nl\" }, key: { eq: \"header\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n fr: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"fr\" }, key: { eq: \"header\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n it: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"it\" }, key: { eq: \"header\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n es: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"es\" }, key: { eq: \"header\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n enUS: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en-US\" }, key: { eq: \"header\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n cs: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"cs\" }, key: { eq: \"header\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n pl: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"pl\" }, key: { eq: \"header\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n pt: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"pt\" }, key: { eq: \"header\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const useHeaderI18n = (locale) => {\r\n return resolveMicrocopyFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveMicrocopyFromResourcesQueryResultForLocale } from '../../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n en: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en\" }, key: { eq: \"login\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n de: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"de\" }, key: { eq: \"login\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n nl: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"nl\" }, key: { eq: \"login\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n fr: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"fr\" }, key: { eq: \"login\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n it: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"it\" }, key: { eq: \"login\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n es: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"es\" }, key: { eq: \"login\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n enUS: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en-US\" }, key: { eq: \"login\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n cs: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"cs\" }, key: { eq: \"login\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n pl: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"pl\" }, key: { eq: \"login\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n pt: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"pt\" }, key: { eq: \"login\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const useLoginI18n = (locale) => {\r\n return resolveMicrocopyFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveMicrocopyFromResourcesQueryResultForLocale } from '../../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n en: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en\" }, key: { eq: \"register\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n de: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"de\" }, key: { eq: \"register\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n nl: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"nl\" }, key: { eq: \"register\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n fr: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"fr\" }, key: { eq: \"register\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n it: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"it\" }, key: { eq: \"register\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n es: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"es\" }, key: { eq: \"register\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n enUS: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en-US\" }, key: { eq: \"register\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n cs: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"cs\" }, key: { eq: \"register\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n pl: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"pl\" }, key: { eq: \"register\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n pt: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"pt\" }, key: { eq: \"register\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const useRegisterI18n = (locale) => {\r\n return resolveMicrocopyFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveMicrocopyFromResourcesQueryResultForLocale } from '../../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n en: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en\" }, key: { eq: \"search\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n de: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"de\" }, key: { eq: \"search\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n nl: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"nl\" }, key: { eq: \"search\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n fr: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"fr\" }, key: { eq: \"search\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n it: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"it\" }, key: { eq: \"search\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n es: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"es\" }, key: { eq: \"search\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n enUS: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en-US\" }, key: { eq: \"search\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n cs: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"cs\" }, key: { eq: \"search\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n pl: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"pl\" }, key: { eq: \"search\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n pt: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"pt\" }, key: { eq: \"search\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const useSearchI18n = (locale) => {\r\n return resolveMicrocopyFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n BlogNavigationElements: allContentfulNavigationElement(\r\n filter: { navigation_id: { eq: \"Blog\" } }\r\n ) {\r\n nodes {\r\n navigation_id\r\n node_locale\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 useBlogNavigation = (locale) => {\r\n const { BlogNavigationElements } = useStaticQuery(resourcesQuery)\r\n let navigationElement\r\n BlogNavigationElements.nodes.forEach((element) => {\r\n if (element.node_locale === locale) {\r\n navigationElement = element\r\n }\r\n })\r\n return navigationElement\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n DistributorsNavigationElements: allContentfulNavigationElement(\r\n filter: { navigation_id: { eq: \"Distributors\" } }\r\n ) {\r\n nodes {\r\n navigation_id\r\n node_locale\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 useDistributorsNavigation = (locale) => {\r\n const { DistributorsNavigationElements } = useStaticQuery(resourcesQuery)\r\n let navigationElement\r\n DistributorsNavigationElements.nodes.forEach((element) => {\r\n if (element.node_locale === locale) {\r\n navigationElement = element\r\n }\r\n })\r\n return navigationElement\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n VMConfiguratorNavigation: allContentfulNavigationElement(\r\n filter: { navigation_id: { eq: \"VMValveIslandConfigurator\" } }\r\n ) {\r\n nodes {\r\n navigation_id\r\n node_locale\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 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\nexport const useVMConfiguratorNavigation = (locale) => {\r\n const { VMConfiguratorNavigation } = useStaticQuery(resourcesQuery)\r\n let navigationElement\r\n VMConfiguratorNavigation.nodes.forEach((element) => {\r\n if (element.node_locale === locale) {\r\n navigationElement = element\r\n }\r\n })\r\n return navigationElement\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n VRConfiguratorNavigation: allContentfulNavigationElement(\r\n filter: { navigation_id: { eq: \"VRValveIslandConfigurator\" } }\r\n ) {\r\n nodes {\r\n navigation_id\r\n node_locale\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 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\nexport const useVRConfiguratorNavigation = (locale) => {\r\n const { VRConfiguratorNavigation } = useStaticQuery(resourcesQuery)\r\n let navigationElement\r\n VRConfiguratorNavigation.nodes.forEach((element) => {\r\n if (element.node_locale === locale) {\r\n navigationElement = element\r\n }\r\n })\r\n return navigationElement\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n VRConfiguratorNavigation: allContentfulNavigationElement(\r\n filter: { navigation_id: { eq: \"VRQValveIslandConfigurator\" } }\r\n ) {\r\n nodes {\r\n navigation_id\r\n node_locale\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 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\nexport const useVRQConfiguratorNavigation = (locale) => {\r\n const { VRConfiguratorNavigation } = useStaticQuery(resourcesQuery)\r\n let navigationElement\r\n VRConfiguratorNavigation.nodes.forEach((element) => {\r\n if (element.node_locale === locale) {\r\n navigationElement = element\r\n }\r\n })\r\n return navigationElement\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n VSConfiguratorNavigation: allContentfulNavigationElement(\r\n filter: { navigation_id: { eq: \"VSValveIslandConfigurator\" } }\r\n ) {\r\n nodes {\r\n navigation_id\r\n node_locale\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 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\nexport const useVSConfiguratorNavigation = (locale) => {\r\n const { VSConfiguratorNavigation } = useStaticQuery(resourcesQuery)\r\n let navigationElement\r\n VSConfiguratorNavigation.nodes.forEach((element) => {\r\n if (element.node_locale === locale) {\r\n navigationElement = element\r\n }\r\n })\r\n return navigationElement\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveSlugsFromResourcesQueryResultForLocale } from '../../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n en: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"en\" }, navigation_id: { eq: \"Account\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n de: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"de\" }, navigation_id: { eq: \"Account\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n nl: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"nl\" }, navigation_id: { eq: \"Account\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n fr: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"fr\" }, navigation_id: { eq: \"Account\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n it: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"it\" }, navigation_id: { eq: \"Account\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n es: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"es\" }, navigation_id: { eq: \"Account\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n enUS: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"en-US\" }, navigation_id: { eq: \"Account\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n cs: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"cs\" }, navigation_id: { eq: \"Account\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n pl: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"pl\" }, navigation_id: { eq: \"Account\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n pt: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"pt\" }, navigation_id: { eq: \"Account\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const useAccountSlug = (locale) => {\r\n return resolveSlugsFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveSlugsFromResourcesQueryResultForLocale } from '../../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n en: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"en\" }, navigation_id: { eq: \"Basket\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n de: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"de\" }, navigation_id: { eq: \"Basket\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n nl: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"nl\" }, navigation_id: { eq: \"Basket\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n fr: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"fr\" }, navigation_id: { eq: \"Basket\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n it: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"it\" }, navigation_id: { eq: \"Basket\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n es: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"es\" }, navigation_id: { eq: \"Basket\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n enUS: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"en-US\" }, navigation_id: { eq: \"Basket\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n cs: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"cs\" }, navigation_id: { eq: \"Basket\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n pl: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"pl\" }, navigation_id: { eq: \"Basket\" }}\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n pt: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"pt\" }, navigation_id: { eq: \"Basket\" }}\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n }\r\n`\r\nexport const useBasketSlug = (locale) => {\r\n return resolveSlugsFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveSlugsFromResourcesQueryResultForLocale } from '../../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n en: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"en\" }, navigation_id: { eq: \"Products\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n de: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"de\" }, navigation_id: { eq: \"Products\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n nl: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"nl\" }, navigation_id: { eq: \"Products\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n fr: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"fr\" }, navigation_id: { eq: \"Products\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n it: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"it\" }, navigation_id: { eq: \"Products\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n es: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"es\" }, navigation_id: { eq: \"Products\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n enUS: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"en-US\" }, navigation_id: { eq: \"Products\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n cs: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"cs\" }, navigation_id: { eq: \"Products\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n pl: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"pl\" }, navigation_id: { eq: \"Products\" }}\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n pt: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"pt\" }, navigation_id: { eq: \"Products\" }}\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n }\r\n`\r\nexport const useProductSlug = (locale) => {\r\n return resolveSlugsFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)\r\n}\r\n\r\nexport const useProductsSlug = () => {\r\n const { en, de, nl, fr, it, es, enUS, cs, pl } = useStaticQuery(resourcesQuery)\r\n let productsSlugDictionary = {}\r\n\r\n for (let index = 0, length = en.nodes.length; index < length; index++) {\r\n const node = en.nodes[index]\r\n productsSlugDictionary[node.node_locale] = node.slug\r\n }\r\n\r\n for (let index = 0, length = de.nodes.length; index < length; index++) {\r\n const node = de.nodes[index]\r\n productsSlugDictionary[node.node_locale] = node.slug\r\n }\r\n\r\n for (let index = 0, length = nl.nodes.length; index < length; index++) {\r\n const node = nl.nodes[index]\r\n productsSlugDictionary[node.node_locale] = node.slug\r\n }\r\n\r\n for (let index = 0, length = fr.nodes.length; index < length; index++) {\r\n const node = fr.nodes[index]\r\n productsSlugDictionary[node.node_locale] = node.slug\r\n }\r\n\r\n for (let index = 0, length = it.nodes.length; index < length; index++) {\r\n const node = it.nodes[index]\r\n productsSlugDictionary[node.node_locale] = node.slug\r\n }\r\n\r\n for (let index = 0, length = es.nodes.length; index < length; index++) {\r\n const node = es.nodes[index]\r\n productsSlugDictionary[node.node_locale] = node.slug\r\n }\r\n\r\n for (let index = 0, length = enUS.nodes.length; index < length; index++) {\r\n const node = enUS.nodes[index]\r\n productsSlugDictionary[node.node_locale] = node.slug\r\n }\r\n\r\n for (let index = 0, length = cs.nodes.length; index < length; index++) {\r\n const node = cs.nodes[index]\r\n productsSlugDictionary[node.node_locale] = node.slug\r\n }\r\n\r\n for (let index = 0, length = pl.nodes.length; index < length; index++) {\r\n const node = pl.nodes[index]\r\n productsSlugDictionary[node.node_locale] = node.slug\r\n }\r\n\r\n return productsSlugDictionary\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveSlugsFromResourcesQueryResultForLocale } from '../../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n en: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"en\" }, navigation_id: { eq: \"Register\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n de: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"de\" }, navigation_id: { eq: \"Register\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n nl: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"nl\" }, navigation_id: { eq: \"Register\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n fr: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"fr\" }, navigation_id: { eq: \"Register\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n it: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"it\" }, navigation_id: { eq: \"Register\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n es: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"es\" }, navigation_id: { eq: \"Register\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n enUS: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"en-US\" }, navigation_id: { eq: \"Register\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n cs: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"cs\" }, navigation_id: { eq: \"Register\" } }\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n pl: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"pl\" }, navigation_id: { eq: \"Register\" }}\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n pt: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"pt\" }, navigation_id: { eq: \"Register\" }}\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n }\r\n`\r\nexport const useRegisterSlug = (locale) => {\r\n return resolveSlugsFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveNodesFromResourcesQueryResultForLocale } from '../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n {\r\n en: allContentfulBlog(filter: { node_locale: { eq: \"en\" }, title: { ne: null } }) {\r\n nodes {\r\n ...CoreBlogFields\r\n }\r\n }\r\n de: allContentfulBlog(filter: { node_locale: { eq: \"de\" }, title: { ne: null } }) {\r\n nodes {\r\n ...CoreBlogFields\r\n }\r\n }\r\n nl: allContentfulBlog(filter: { node_locale: { eq: \"nl\" }, title: { ne: null } }) {\r\n nodes {\r\n ...CoreBlogFields\r\n }\r\n }\r\n fr: allContentfulBlog(filter: { node_locale: { eq: \"fr\" }, title: { ne: null } }) {\r\n nodes {\r\n ...CoreBlogFields\r\n }\r\n }\r\n it: allContentfulBlog(filter: { node_locale: { eq: \"it\" }, title: { ne: null } }) {\r\n nodes {\r\n ...CoreBlogFields\r\n }\r\n }\r\n es: allContentfulBlog(filter: { node_locale: { eq: \"es\" }, title: { ne: null } }) {\r\n nodes {\r\n ...CoreBlogFields\r\n }\r\n }\r\n enUS: allContentfulBlog(filter: { node_locale: { eq: \"en-US\" }, title: { ne: null } }) {\r\n nodes {\r\n ...CoreBlogFields\r\n }\r\n }\r\n cs: allContentfulBlog(filter: { node_locale: { eq: \"cs\" }, title: { ne: null } }) {\r\n nodes {\r\n ...CoreBlogFields\r\n }\r\n }\r\n pl: allContentfulBlog(filter: { node_locale: { eq: \"pl\" }, title: { ne: null } }) {\r\n nodes {\r\n ...CoreBlogFields\r\n }\r\n }\r\n pt: allContentfulBlog(filter: { node_locale: { eq: \"pt\" }, title: { ne: null } }) {\r\n nodes {\r\n ...CoreBlogFields\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const useBlogs = (locale) => {\r\n return resolveNodesFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveNodesFromResourcesQueryResultForLocale } from '../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n en: allContentfulCountry(filter: { node_locale: { eq: \"en\" } }) {\r\n nodes {\r\n ...CoreCountryFields\r\n }\r\n }\r\n de: allContentfulCountry(filter: { node_locale: { eq: \"de\" } }) {\r\n nodes {\r\n ...CoreCountryFields\r\n }\r\n }\r\n nl: allContentfulCountry(filter: { node_locale: { eq: \"nl\" } }) {\r\n nodes {\r\n ...CoreCountryFields\r\n }\r\n }\r\n fr: allContentfulCountry(filter: { node_locale: { eq: \"fr\" } }) {\r\n nodes {\r\n ...CoreCountryFields\r\n }\r\n }\r\n it: allContentfulCountry(filter: { node_locale: { eq: \"it\" } }) {\r\n nodes {\r\n ...CoreCountryFields\r\n }\r\n }\r\n es: allContentfulCountry(filter: { node_locale: { eq: \"es\" } }) {\r\n nodes {\r\n ...CoreCountryFields\r\n }\r\n }\r\n enUS: allContentfulCountry(filter: { node_locale: { eq: \"en-US\" } }) {\r\n nodes {\r\n ...CoreCountryFields\r\n }\r\n }\r\n cs: allContentfulCountry(filter: { node_locale: { eq: \"cs\" } }) {\r\n nodes {\r\n ...CoreCountryFields\r\n }\r\n }\r\n pl: allContentfulCountry(filter: { node_locale: { eq: \"pl\" } }) {\r\n nodes {\r\n ...CoreCountryFields\r\n }\r\n }\r\n pt: allContentfulCountry(filter: { node_locale: { eq: \"pt\" } }) {\r\n nodes {\r\n ...CoreCountryFields\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const useCountries = (locale) => {\r\n return resolveNodesFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)\r\n}\r\n\r\nexport const useCallingCountries = (locale) => {\r\n const nodes = resolveNodesFromResourcesQueryResultForLocale(\r\n useStaticQuery(resourcesQuery),\r\n locale\r\n )\r\n let callingCountriesObjects = {}\r\n\r\n for (let index = 0, length = nodes.length; index < length; index++) {\r\n const node = nodes[index]\r\n callingCountriesObjects[node.maxmindCode.toUpperCase()] = node.fredhopperCallingCountry\r\n }\r\n\r\n return callingCountriesObjects\r\n}\r\n\r\nexport const useCountriesDictionaryForAccount = (locale, countries) => {\r\n const nodes = resolveNodesFromResourcesQueryResultForLocale(\r\n useStaticQuery(resourcesQuery),\r\n locale\r\n )\r\n let countriesObjects = []\r\n\r\n for (let index = 0, length = nodes.length; index < length; index++) {\r\n const node = nodes[index]\r\n if (countries.includes(node.alpha2Code) === true) {\r\n countriesObjects.push({ key: node.alpha2Code, value: node.name })\r\n }\r\n }\r\n\r\n return countriesObjects\r\n}\r\n","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveNodesFromResourcesQueryResultForLocale } from '../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n query {\r\n en: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"en\" }, slug: { ne: null }, navigation_id: { eq: \"Home\" } }\r\n ) {\r\n nodes {\r\n ...CoreHomeNavigationFields\r\n }\r\n }\r\n de: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"de\" }, slug: { ne: null }, navigation_id: { eq: \"Home\" } }\r\n ) {\r\n nodes {\r\n ...CoreHomeNavigationFields\r\n }\r\n }\r\n nl: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"nl\" }, slug: { ne: null }, navigation_id: { eq: \"Home\" } }\r\n ) {\r\n nodes {\r\n ...CoreHomeNavigationFields\r\n }\r\n }\r\n fr: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"fr\" }, slug: { ne: null }, navigation_id: { eq: \"Home\" } }\r\n ) {\r\n nodes {\r\n ...CoreHomeNavigationFields\r\n }\r\n }\r\n it: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"it\" }, slug: { ne: null }, navigation_id: { eq: \"Home\" } }\r\n ) {\r\n nodes {\r\n ...CoreHomeNavigationFields\r\n }\r\n }\r\n es: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"es\" }, slug: { ne: null }, navigation_id: { eq: \"Home\" } }\r\n ) {\r\n nodes {\r\n ...CoreHomeNavigationFields\r\n }\r\n }\r\n enUS: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"en-US\" }, slug: { ne: null }, navigation_id: { eq: \"Home\" } }\r\n ) {\r\n nodes {\r\n ...CoreHomeNavigationFields\r\n }\r\n }\r\n cs: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"cs\" }, slug: { ne: null }, navigation_id: { eq: \"Home\" } }\r\n ) {\r\n nodes {\r\n ...CoreHomeNavigationFields\r\n }\r\n }\r\n pl: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"pl\" }, slug: { ne: null }, navigation_id: { eq: \"Home\" } }\r\n ) {\r\n nodes {\r\n ...CoreHomeNavigationFields\r\n }\r\n }\r\n pt: allContentfulNavigationElement(\r\n filter: { node_locale: { eq: \"pt\" }, slug: { ne: null }, navigation_id: { eq: \"Home\" } }\r\n ) {\r\n nodes {\r\n ...CoreHomeNavigationFields\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const useNavigationHome = (locale) => {\r\n return resolveNodesFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)[0]\r\n}\r\n","import { useEffect } from 'react'\r\n\r\nexport const useOnPageLoad = (refs, callback) => {\r\n useEffect(() => {\r\n const eventHandler = (e) => {\r\n if (refs.some((ref) => ref.current && ref.current.contains(e.target))) {\r\n return\r\n } else {\r\n callback(false)\r\n }\r\n }\r\n\r\n if (document.readyState === 'complete') {\r\n callback()\r\n } else {\r\n window.addEventListener('DOMContentLoaded', eventHandler)\r\n\r\n return () => {\r\n window.removeEventListener('DOMContentLoaded', eventHandler)\r\n }\r\n }\r\n }, [refs, callback])\r\n}\r\n","import { useEffect } from \"react\"\r\n\r\nexport const useOnResize = (refs, callback) => {\r\n useEffect(() => {\r\n const eventHandler = (e) => {\r\n if (refs.some((ref) => ref.current && ref.current.contains(e.target))) {\r\n return\r\n } else {\r\n callback(false)\r\n }\r\n }\r\n \r\n window.addEventListener('resize', eventHandler)\r\n \r\n return () => {\r\n window.removeEventListener('resize', eventHandler)\r\n }\r\n }, [refs, callback])\r\n }","import { useEffect } from \"react\"\r\n\r\nexport const useOnScroll = (refs, callback) => {\r\n useEffect(() => {\r\n const eventHandler = (e) => {\r\n if (refs.some((ref) => ref.current && ref.current.contains(e.target))) {\r\n return\r\n } else {\r\n callback(false)\r\n }\r\n }\r\n \r\n document.addEventListener('scroll', eventHandler)\r\n \r\n return () => {\r\n document.removeEventListener('scroll', eventHandler)\r\n }\r\n }, [refs, callback])\r\n }","export function getCurrencySymbol(currencyLetterCode) {\r\n let currencySymbol\r\n\r\n switch (currencyLetterCode) {\r\n case 'AUD':\r\n currencySymbol = 'AU$'\r\n break\r\n case 'BRL':\r\n currencySymbol = 'R$'\r\n break\r\n case 'CHF':\r\n currencySymbol = 'CHF'\r\n break\r\n case 'CNY':\r\n currencySymbol = '¥'\r\n break\r\n case 'CZK':\r\n currencySymbol = 'Kč'\r\n break\r\n case 'DKK':\r\n currencySymbol = 'kr'\r\n break\r\n case 'EUR':\r\n currencySymbol = '€'\r\n break\r\n case 'GBP':\r\n currencySymbol = '£'\r\n break\r\n case 'HKD':\r\n currencySymbol = 'HK$'\r\n break\r\n case 'INR':\r\n currencySymbol = '₹'\r\n break\r\n case 'JPY':\r\n currencySymbol = '¥'\r\n break\r\n case 'MXN':\r\n currencySymbol = '$'\r\n break\r\n case 'MYR':\r\n currencySymbol = 'RM'\r\n break\r\n case 'NOK':\r\n currencySymbol = 'kr'\r\n break\r\n case 'NZD':\r\n currencySymbol = 'NZ$'\r\n break\r\n case 'PLN':\r\n currencySymbol = 'zł'\r\n break\r\n case 'SEK':\r\n currencySymbol = 'kr'\r\n break\r\n case 'SGD':\r\n currencySymbol = '$'\r\n break\r\n case 'THB':\r\n currencySymbol = '฿'\r\n break\r\n case 'TWD':\r\n currencySymbol = 'NT$'\r\n break\r\n case 'USD':\r\n currencySymbol = '$'\r\n break\r\n default:\r\n currencySymbol = '£'\r\n }\r\n\r\n return currencySymbol\r\n}\r\n\r\nexport const GetCurrencyForCountry = (country, countries) => {\r\n var matchingCountry = countries.find(\r\n (element) => element.alpha2Code.toUpperCase() === country.toUpperCase()\r\n )\r\n if (matchingCountry && matchingCountry.currency) {\r\n return matchingCountry.currency\r\n } else {\r\n return 'GBP'\r\n }\r\n}\r\n\r\nexport const GetCurrencyByMaxMind = (country, countries, validCurrencies) => {\r\n var matchingCountry = countries.find(\r\n (element) => element.maxmindCode.toUpperCase() === country.toUpperCase()\r\n )\r\n if (\r\n matchingCountry &&\r\n matchingCountry.currency &&\r\n validCurrencies.includes(matchingCountry.currency)\r\n ) {\r\n return matchingCountry.currency\r\n } else {\r\n return 'GBP'\r\n }\r\n}\r\n","import { AccountTypeCredit } from '../services/userService'\r\nimport { v4 as uuid } from 'uuid'\r\nimport { logException, logTrace } from './loggingService'\r\n\r\nconst publishEvent = (eventApi, eventName, eventModel, publishEventId) => {\r\n window.dl = window.dl || []\r\n\r\n if (Array.isArray(eventModel)) {\r\n for (let index = 0; index < eventModel.length; index++) {\r\n const element = eventModel[index]\r\n window.dl.push(element)\r\n }\r\n } else {\r\n window.dl.push(eventModel)\r\n }\r\n\r\n logTrace(`triggering event: ${eventName} (${publishEventId}) - ${JSON.stringify(window.dl)}`)\r\n\r\n try {\r\n eventApi.trigger(eventName)\r\n logTrace(`triggered event: ${eventName} (${publishEventId}) - ${JSON.stringify(window.dl)}`)\r\n } catch (error) {\r\n logException(`${eventName}: Error caught while calling eventApi.trigger`, error)\r\n }\r\n}\r\n\r\nconst tryPublishEventForId = (publishEventId, eventApi, eventName, eventModel) => {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n if (eventApi) {\r\n publishEvent(eventApi, eventName, eventModel, publishEventId)\r\n resolve(true)\r\n } else {\r\n logTrace(`cannot trigger event ${eventName} (${publishEventId}), not ready`)\r\n resolve(false)\r\n }\r\n } catch (error) {\r\n logException(`${eventName}: Error caught while trying to trigger event`, error)\r\n resolve(false)\r\n }\r\n })\r\n}\r\n\r\nconst tryPublishEvent = async (eventApi, eventName, eventModel) => {\r\n const publishEventId = uuid()\r\n await tryPublishEventForId(publishEventId, eventApi, eventName, eventModel)\r\n}\r\n\r\nconst buildBasicEventForAccount = (locale, accountType, accountNumber, isDistributor) => {\r\n let eventModel = {\r\n accountNumber: accountNumber\r\n ? accountNumber\r\n : accountType === AccountTypeCredit\r\n ? '00000000'\r\n : undefined,\r\n customerType: isDistributor && isDistributor === true ? 'Distributor' : 'Non-distributor',\r\n language: locale,\r\n salesDesk: false,\r\n }\r\n\r\n if (accountType) {\r\n eventModel = {\r\n ...eventModel,\r\n affiliation: accountType === AccountTypeCredit ? 'Credit Card' : 'ERP',\r\n }\r\n }\r\n\r\n return eventModel\r\n}\r\n\r\nconst buildBasicBasketEvent = (basketCurrency, basketTotal, basketItems) => {\r\n let basketContent = []\r\n let items = []\r\n let eventModel = {\r\n currencyCode: basketCurrency ? basketCurrency : undefined,\r\n value: basketTotal && basketTotal.amount ? parseFloat(basketTotal.amount) : undefined,\r\n Products: [],\r\n basketContent: basketContent,\r\n items: items,\r\n }\r\n\r\n if (basketItems) {\r\n for (let index = 0; index < basketItems.length; index++) {\r\n const element = basketItems[index]\r\n basketContent.push({\r\n ProductPosition: index,\r\n ProductPrice: element.unitPriceWithTax\r\n ? parseFloat(element.unitPriceWithTax.amount)\r\n : undefined,\r\n ProductSeries: undefined,\r\n partNumber: element.sku,\r\n ProductName: element.name,\r\n ProductQuantity: parseInt(element.quantity),\r\n })\r\n\r\n items.push(\r\n createDataLayerProductItem(\r\n index,\r\n element,\r\n element.totalPriceWithoutTax ? element.totalPriceWithoutTax.currency : undefined,\r\n element.totalDiscountPrice ? element.totalDiscountPrice.amount : undefined,\r\n element.totalPriceWithoutTax ? element.totalPriceWithoutTax.amount : undefined\r\n )\r\n )\r\n }\r\n }\r\n\r\n return eventModel\r\n}\r\n\r\nconst createDataLayerProductItem = (index, element, currency, discount, price) => {\r\n return {\r\n item_id: element.sku,\r\n item_name: element.name,\r\n affiliation: undefined,\r\n coupon: undefined,\r\n currency: currency,\r\n discount: discount,\r\n index: index,\r\n item_brand: undefined,\r\n item_list_id: 'products',\r\n item_list_name: 'Products',\r\n price: price ? parseFloat(price) : undefined,\r\n quantity: element.quantity,\r\n }\r\n}\r\n\r\nexport const buildPurchaseEvent = (order, locale, accountType, accountNumber, isDistributor) => {\r\n let eventModel = null\r\n try {\r\n let products = []\r\n let items = []\r\n eventModel = {\r\n ...buildBasicEventForAccount(locale, accountType, accountNumber, isDistributor),\r\n coupon: undefined,\r\n currencyCode: order.withoutTax ? order.withoutTax.currency : undefined,\r\n transactionId: order.id,\r\n orderValue: order.withTax ? parseFloat(order.withTax.amount) : undefined,\r\n orderTax: order.tax ? parseFloat(order.tax.amount) : undefined,\r\n orderShipping:\r\n order.deliveryCharge && order.deliveryCharge.valueWithoutTax\r\n ? parseFloat(order.deliveryCharge.valueWithoutTax.amount)\r\n : undefined,\r\n Products: products,\r\n items: items,\r\n event: 'purchase',\r\n }\r\n\r\n let orderItems = [...order.items]\r\n if (order.certificateOfConformity) {\r\n orderItems.push(order.certificateOfConformity)\r\n }\r\n\r\n for (let index = 0; index < orderItems.length; index++) {\r\n const element = orderItems[index]\r\n\r\n products.push({\r\n partNumber: element.sku,\r\n partName: element.name,\r\n partSeries: undefined,\r\n partPrice: element.unitWithTax ? parseFloat(element.unitWithTax.amount) : undefined,\r\n partQuantity: parseInt(element.quantity),\r\n })\r\n\r\n items.push(\r\n createDataLayerProductItem(\r\n index,\r\n element,\r\n element.valueWithTax ? element.valueWithTax.currency : undefined,\r\n element.valueDiscount ? element.valueDiscount.amount : undefined,\r\n element.valueWithTax ? element.valueWithTax.amount : undefined\r\n )\r\n )\r\n }\r\n } catch (error) {\r\n logException('buildPurchaseEvent: Error caught', error)\r\n }\r\n return eventModel\r\n}\r\n\r\nexport const publishPurchaseEvent = (eventApi, eventModel) => {\r\n try {\r\n tryPublishEvent(eventApi, 'purchase', eventModel)\r\n } catch (error) {\r\n logException('publishPurchaseEvent: Error caught', error)\r\n }\r\n}\r\n\r\nexport const buildShippingInfoEvent = (\r\n basketCurrency,\r\n basketTotal,\r\n basketDeliveryCharge,\r\n basketItems,\r\n locale,\r\n accountType,\r\n accountNumber,\r\n isDistributor\r\n) => {\r\n let eventModel = null\r\n try {\r\n eventModel = {\r\n ...buildBasicEventForAccount(locale, accountType, accountNumber, isDistributor),\r\n ...buildBasicBasketEvent(basketCurrency, basketTotal, basketItems),\r\n coupon: undefined,\r\n shipping_tier: basketDeliveryCharge ? basketDeliveryCharge.sku : undefined,\r\n event: 'shippingInfo',\r\n }\r\n } catch (error) {\r\n logException('buildShippingInfoEvent: Error caught', error)\r\n }\r\n return eventModel\r\n}\r\n\r\nexport const publishShippingInfoEvent = (eventApi, eventModel) => {\r\n try {\r\n tryPublishEvent(eventApi, 'shippingInfo', eventModel)\r\n } catch (error) {\r\n logException('publishShippingInfoEvent: Error caught', error)\r\n }\r\n}\r\n\r\nexport const buildPaymentInfoEvent = (\r\n basketCurrency,\r\n basketTotal,\r\n basketItems,\r\n locale,\r\n accountType,\r\n accountNumber,\r\n isDistributor\r\n) => {\r\n let eventModel = null\r\n try {\r\n eventModel = {\r\n ...buildBasicEventForAccount(locale, accountType, accountNumber, isDistributor),\r\n ...buildBasicBasketEvent(basketCurrency, basketTotal, basketItems),\r\n coupon: undefined,\r\n payment_type: accountType === AccountTypeCredit ? 'Credit Card' : 'Account',\r\n event: 'paymentInfo',\r\n }\r\n } catch (error) {\r\n logException('buildPaymentInfoEvent: Error caught', error)\r\n }\r\n return eventModel\r\n}\r\n\r\nexport const publishPaymentInfoEvent = (eventApi, eventModel) => {\r\n try {\r\n tryPublishEvent(eventApi, 'paymentInfo', eventModel)\r\n } catch (error) {\r\n logException('publishPaymentInfoEvent: Error caught', error)\r\n }\r\n}\r\n\r\nexport const buildViewBasketEvent = (\r\n basketCurrency,\r\n basketTotal,\r\n basketItems,\r\n locale,\r\n accountNumber,\r\n isDistributor\r\n) => {\r\n let eventModel = null\r\n try {\r\n let products = []\r\n const basicBasket = buildBasicBasketEvent(basketCurrency, basketTotal, basketItems)\r\n\r\n for (let index = 0; index < basicBasket.basketContent.length; index++) {\r\n const element = basicBasket.basketContent[index]\r\n products.push({\r\n ProductCategory: 'undefined',\r\n ProductPosition: element.ProductPosition,\r\n ProductSeries: element.ProductSeries,\r\n partNumber: element.partNumber,\r\n ProductName: element.ProductName,\r\n ProductQuantity: parseInt(element.ProductQuantity),\r\n })\r\n }\r\n\r\n eventModel = {\r\n ...buildBasicEventForAccount(locale, undefined, accountNumber, isDistributor),\r\n currencyCode: basicBasket.currencyCode,\r\n value: parseFloat(basicBasket.value),\r\n Products: products,\r\n items: basicBasket.items,\r\n event: 'viewBasket',\r\n productCode: undefined,\r\n productPrice: undefined,\r\n productQuantity: undefined,\r\n }\r\n } catch (error) {\r\n logException('buildViewBasketEvent: Error caught', error)\r\n }\r\n return eventModel\r\n}\r\n\r\nexport const publishViewBasketEvent = (eventApi, eventModel) => {\r\n try {\r\n tryPublishEvent(eventApi, 'viewBasket', eventModel)\r\n } catch (error) {\r\n logException('publishViewBasketEvent: Error caught', error)\r\n }\r\n}\r\n\r\nexport const buildRemoveFromBasketEvent = (\r\n products,\r\n basketCurrency,\r\n basketTotal,\r\n basketItems,\r\n locale,\r\n accountNumber,\r\n isDistributor\r\n) => {\r\n let eventModels = []\r\n try {\r\n for (let index = 0; index < products.length; index++) {\r\n const element = products[index]\r\n\r\n let eventModel = {\r\n ...buildBasicEventForAccount(locale, undefined, accountNumber, isDistributor),\r\n ...buildBasicBasketEvent(basketCurrency, basketTotal, basketItems),\r\n event: 'removeFromBasket',\r\n productPrice: element.price,\r\n value: undefined,\r\n }\r\n\r\n eventModels.push(eventModel)\r\n }\r\n } catch (error) {\r\n logException('buildRemoveFromBasketEvent: Error caught', error)\r\n }\r\n return eventModels\r\n}\r\n\r\nexport const publishRemoveFromBasketEvent = (eventApi, eventModels) => {\r\n try {\r\n tryPublishEvent(eventApi, 'removeFromBasket', eventModels)\r\n } catch (error) {\r\n logException('publishRemoveFromBasketEvent: Error caught', error)\r\n }\r\n}\r\n\r\nexport const buildViewItemDetailsEvent = (\r\n basketCurrency,\r\n productPrice,\r\n productSeries,\r\n productPartNumber,\r\n productName,\r\n productQuantity,\r\n productBrand,\r\n locale,\r\n accountNumber,\r\n isDistributor\r\n) => {\r\n let eventModel = null\r\n try {\r\n eventModel = {\r\n ...buildBasicEventForAccount(locale, undefined, accountNumber, isDistributor),\r\n currencyCode: basketCurrency ? basketCurrency : undefined,\r\n value: productPrice ? parseFloat(productPrice) : undefined,\r\n Products: [\r\n {\r\n ProductCategory: undefined,\r\n ProductPosition: 0,\r\n ProductSeries: productSeries ? productSeries : undefined,\r\n partNumber: productPartNumber ? productPartNumber : undefined,\r\n ProductName: productName ? productName : undefined,\r\n ProductQuantity: productQuantity ? parseInt(productQuantity) : undefined,\r\n },\r\n ],\r\n items: [\r\n {\r\n item_id: productPartNumber ? productPartNumber : undefined,\r\n item_name: productName ? productName : undefined,\r\n affiliation: undefined,\r\n coupon_code: undefined,\r\n currency: basketCurrency ? basketCurrency : undefined,\r\n discount: undefined,\r\n index: 0,\r\n item_brand: productBrand ? productBrand : undefined,\r\n item_list_id: 'products',\r\n item_list_name: 'Products',\r\n price: productPrice ? parseFloat(productPrice) : undefined,\r\n quantity: productQuantity ? parseInt(productQuantity) : undefined,\r\n },\r\n ],\r\n }\r\n } catch (error) {\r\n logException('publishViewItemDetailsEvent: Error caught', error)\r\n }\r\n return eventModel\r\n}\r\n\r\nexport const publishViewItemDetailsEvent = (eventApi, eventModel) => {\r\n try {\r\n tryPublishEvent(eventApi, 'viewItemDetail', eventModel)\r\n } catch (error) {\r\n logException('publishViewItemDetailsEvent: Error caught', error)\r\n }\r\n}\r\n\r\nexport const buildPageViewEvent = (locale, accountNumber, isDistributor) => {\r\n let eventModel = null\r\n try {\r\n eventModel = {\r\n ...buildBasicEventForAccount(locale, undefined, accountNumber, isDistributor),\r\n Products: [],\r\n }\r\n } catch (error) {\r\n logException('buildPageViewEvent: Error caught', error)\r\n }\r\n return eventModel\r\n}\r\n\r\nexport const publishPageViewEvent = (eventApi, eventModel) => {\r\n try {\r\n tryPublishEvent(eventApi, 'pageview', eventModel)\r\n } catch (error) {\r\n logException('publishPageViewEvent: Error caught', error)\r\n }\r\n}\r\n\r\nexport const buildViewItemListEvent = (\r\n products,\r\n currency,\r\n locale,\r\n accountNumber,\r\n isDistributor\r\n) => {\r\n let eventModel = null\r\n try {\r\n let Products = []\r\n let items = []\r\n eventModel = {\r\n ...buildBasicEventForAccount(locale, undefined, accountNumber, isDistributor),\r\n value: undefined,\r\n currencyCode: currency,\r\n Products: Products,\r\n items: items,\r\n }\r\n\r\n for (let index = 0; index < products.length; index++) {\r\n const element = products[index]\r\n Products.push({\r\n ProductCategory: element.category,\r\n ProductPosition: element.position,\r\n ProductSeries: element.series,\r\n partNumber: element.sku,\r\n ProductName: element.name,\r\n ProductQuantity: parseInt(element.quantity),\r\n })\r\n\r\n items.push(\r\n createDataLayerProductItem(element.position, element, currency, undefined, element.price)\r\n )\r\n }\r\n } catch (error) {\r\n logException('buildViewItemListEvent: Error caught', error)\r\n }\r\n return eventModel\r\n}\r\n\r\nexport const publishViewItemListEvent = (eventApi, eventModel) => {\r\n try {\r\n tryPublishEvent(eventApi, 'viewItemList', eventModel)\r\n } catch (error) {\r\n logException('publishViewItemListEvent: Error caught', error)\r\n }\r\n}\r\n\r\nexport const buildAddToBasketEvent = (products, currency, locale, accountNumber, isDistributor) => {\r\n let eventModels = []\r\n try {\r\n for (let index = 0; index < products.length; index++) {\r\n const element = products[index]\r\n\r\n let Products = []\r\n let items = []\r\n let eventModel = {\r\n ...buildBasicEventForAccount(locale, undefined, accountNumber, isDistributor),\r\n event: 'addtoBasket',\r\n productCode: element.sku,\r\n productPrice: element.price,\r\n productQuantity: element.quantity,\r\n currencyCode: currency,\r\n Products: Products,\r\n items: items,\r\n value: undefined,\r\n }\r\n\r\n Products.push({\r\n ProductCategory: element.category,\r\n ProductPosition: element.position,\r\n ProductSeries: element.series,\r\n partNumber: element.sku,\r\n ProductName: element.name,\r\n ProductQuantity: parseInt(element.quantity),\r\n })\r\n\r\n items.push(\r\n createDataLayerProductItem(element.position, element, currency, undefined, element.price)\r\n )\r\n\r\n eventModels.push(eventModel)\r\n }\r\n } catch (error) {\r\n logException('buildAddToBasketEvent: Error caught', error)\r\n }\r\n return eventModels\r\n}\r\n\r\nexport const publishAddToBasketEvent = (eventApi, eventModels) => {\r\n try {\r\n tryPublishEvent(eventApi, 'addtoBasket', eventModels)\r\n } catch (error) {\r\n logException('publishAddToBasketEvent: Error caught', error)\r\n }\r\n}\r\n\r\nexport const buildProductClickEvent = (product, currency, locale, accountNumber, isDistributor) => {\r\n let eventModel = null\r\n try {\r\n let Products = []\r\n let items = []\r\n eventModel = {\r\n ...buildBasicEventForAccount(locale, undefined, accountNumber, isDistributor),\r\n event: 'productClick',\r\n productName: product.name,\r\n productPosition: product.position,\r\n currentPage: 'lister',\r\n currencyCode: currency,\r\n Products: Products,\r\n items: items,\r\n value: undefined,\r\n }\r\n\r\n Products.push({\r\n ProductCategory: product.category,\r\n ProductPosition: product.position,\r\n ProductSeries: product.series,\r\n partNumber: product.sku,\r\n ProductName: product.name,\r\n ProductQuantity: parseInt(product.quantity),\r\n })\r\n\r\n items.push(\r\n createDataLayerProductItem(product.position, product, currency, undefined, product.price)\r\n )\r\n } catch (error) {\r\n logException('buildProductClickEvent: Error caught', error)\r\n }\r\n return eventModel\r\n}\r\n\r\nexport const publishProductClickEvent = (eventApi, eventModel) => {\r\n try {\r\n tryPublishEvent(eventApi, 'productClick', eventModel)\r\n } catch (error) {\r\n logException('publishProductClickEvent: Error caught', error)\r\n }\r\n}\r\n\r\nexport const buildFormStartEvent = (\r\n formName,\r\n formId,\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText\r\n) => {\r\n let eventModel\r\n try {\r\n eventModel = {\r\n eventName: 'form_start',\r\n form_name: formName,\r\n form_id: formId,\r\n form_position: 'body',\r\n link_classes: linkClasses,\r\n link_domain: linkDomain,\r\n link_id: linkId,\r\n link_url: linkUrl,\r\n link_text: linkText,\r\n }\r\n } catch (error) {\r\n logException('buildFormStartEvent: Error caught', error)\r\n }\r\n return eventModel\r\n}\r\n\r\nexport const publishFormStartEvent = (eventApi, eventModel) => {\r\n try {\r\n tryPublishEvent(eventApi, 'formStart', eventModel)\r\n } catch (error) {\r\n logException('publishFormStartEvent: Error caught', error)\r\n }\r\n}\r\n\r\nexport const buildFormSubmissionEvent = (\r\n formName,\r\n formId,\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText\r\n) => {\r\n let eventModel = null\r\n try {\r\n eventModel = {\r\n eventName: 'form_submit',\r\n form_name: formName,\r\n form_id: formId,\r\n form_position: 'body',\r\n link_classes: linkClasses,\r\n link_domain: linkDomain,\r\n link_id: linkId,\r\n link_url: linkUrl,\r\n link_text: linkText,\r\n }\r\n } catch (error) {\r\n logException('buildFormSubmissionEvent: Error caught', error)\r\n }\r\n return eventModel\r\n}\r\n\r\nexport const publishFormSubmissionEvent = (eventApi, eventModel) => {\r\n try {\r\n tryPublishEvent(eventApi, 'formSubmission', eventModel)\r\n } catch (error) {\r\n logException('publishFormSubmissionEvent: Error caught', error)\r\n }\r\n}\r\n\r\nexport const buildSearchResultEvent = (\r\n searchTerm,\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText\r\n) => {\r\n let eventModel\r\n try {\r\n eventModel = {\r\n event: 'search',\r\n search_term: searchTerm,\r\n link_classes: linkClasses,\r\n link_domain: linkDomain,\r\n link_id: linkId,\r\n link_url: linkUrl,\r\n link_text: linkText,\r\n }\r\n } catch (error) {\r\n logException('buildSearchResultEvent: Error caught', error)\r\n }\r\n return eventModel\r\n}\r\n\r\nexport const publishSearchResultEvent = (eventApi, eventModel) => {\r\n try {\r\n tryPublishEvent(eventApi, 'customSearchResults', eventModel)\r\n } catch (error) {\r\n logException('publishSearchResultEvent: Error caught', error)\r\n }\r\n}\r\n\r\nconst buildButtonInteractionEvent = (\r\n eventName,\r\n buttonName,\r\n buttonPosition,\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText,\r\n outbound\r\n) => {\r\n let eventModel\r\n try {\r\n eventModel = {\r\n event: eventName.toLowerCase(),\r\n button_name: buttonName,\r\n button_position: buttonPosition,\r\n link_classes: linkClasses,\r\n link_domain: linkDomain,\r\n link_id: linkId,\r\n link_url: linkUrl,\r\n link_text: linkText,\r\n outbound: outbound,\r\n }\r\n } catch (error) {\r\n logException(`buildButtonInteractionEvent - ${eventName}: Error caught`, error)\r\n }\r\n return eventModel\r\n}\r\n\r\nconst publishButtonInteractionEvent = (eventApi, eventName, eventModel) => {\r\n try {\r\n tryPublishEvent(eventApi, eventName, eventModel)\r\n } catch (error) {\r\n logException(`publishButtonInteractionEvent - ${eventName}: Error caught`, error)\r\n }\r\n}\r\n\r\nexport const buildContactButtonInteractionEvent = (\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText\r\n) => {\r\n return buildButtonInteractionEvent(\r\n 'contactClick',\r\n 'contact',\r\n 'footer',\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText,\r\n 'false'\r\n )\r\n}\r\n\r\nexport const publishContactButtonInteractionEvent = (eventApi, eventModel) => {\r\n publishButtonInteractionEvent(eventApi, 'contactClick', eventModel)\r\n}\r\n\r\nexport const buildDatasheetButtonInteractionEvent = (\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText\r\n) => {\r\n return buildButtonInteractionEvent(\r\n 'datasheetDownload',\r\n 'datasheet',\r\n 'body',\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText,\r\n 'false'\r\n )\r\n}\r\n\r\nexport const publishDatasheetButtonInteractionEvent = (eventApi, eventModel) => {\r\n publishButtonInteractionEvent(eventApi, 'datasheetDownload', eventModel)\r\n}\r\n\r\nexport const buildCADButtonInteractionEvent = (\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText\r\n) => {\r\n return buildButtonInteractionEvent(\r\n 'cadInteraction',\r\n 'cad&configuration',\r\n 'body',\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText,\r\n 'false'\r\n )\r\n}\r\n\r\nexport const publishCADButtonInteractionEvent = (eventApi, eventModel) => {\r\n publishButtonInteractionEvent(eventApi, 'cadInteraction', eventModel)\r\n}\r\n\r\nexport const buildInstallationGuideButtonInteractionEvent = (\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText\r\n) => {\r\n return buildButtonInteractionEvent(\r\n 'installationGuideDownload',\r\n 'installation guide',\r\n 'body',\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText,\r\n 'false'\r\n )\r\n}\r\n\r\nexport const publishInstallationGuideButtonInteractionEvent = (eventApi, eventModel) => {\r\n publishButtonInteractionEvent(eventApi, 'installationGuideDownload', eventModel)\r\n}\r\n\r\nexport const buildBrochureButtonInteractionEvent = (\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText\r\n) => {\r\n return buildButtonInteractionEvent(\r\n 'brochureDownload',\r\n 'download brochure',\r\n 'body',\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText,\r\n 'false'\r\n )\r\n}\r\n\r\nexport const publishBrochureButtonInteractionEvent = (eventApi, eventModel) => {\r\n publishButtonInteractionEvent(eventApi, 'brochureDownload', eventModel)\r\n}\r\n\r\nexport const buildResourcesButtonInteractionEvent = (\r\n buttonName,\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText\r\n) => {\r\n return buildButtonInteractionEvent(\r\n 'resourcesClick',\r\n buttonName,\r\n 'body',\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText,\r\n 'false'\r\n )\r\n}\r\n\r\nexport const publishResourcesButtonInteractionEvent = (eventApi, eventModel) => {\r\n publishButtonInteractionEvent(eventApi, 'resourcesClick', eventModel)\r\n}\r\n\r\nexport const buildWhitePaperButtonInteractionEvent = (\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText\r\n) => {\r\n return buildButtonInteractionEvent(\r\n 'whitepaperDownload',\r\n 'download now',\r\n 'body',\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText,\r\n 'false'\r\n )\r\n}\r\n\r\nexport const publishWhitePaperButtonInteractionEvent = (eventApi, eventModel) => {\r\n publishButtonInteractionEvent(eventApi, 'whitepaperDownload', eventModel)\r\n}\r\n\r\nexport const buildRegisterButtonInteractionEvent = (\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText\r\n) => {\r\n return buildButtonInteractionEvent(\r\n 'registerClick',\r\n 'register',\r\n 'body',\r\n linkClasses,\r\n linkDomain,\r\n linkId,\r\n linkUrl,\r\n linkText,\r\n 'false'\r\n )\r\n}\r\n\r\nexport const publishRegisterButtonInteractionEvent = (eventApi, eventModel) => {\r\n publishButtonInteractionEvent(eventApi, 'registerClick', eventModel)\r\n}\r\n","export const findParentElementA = (element, currentDepth, maxDepth) => {\r\n currentDepth++\r\n\r\n if (element !== null && element !== undefined) {\r\n if (element.tagName === 'A') {\r\n return element\r\n } else if (currentDepth < maxDepth) {\r\n return findParentElementA(element.parentElement, currentDepth, maxDepth)\r\n }\r\n }\r\n\r\n return null\r\n}\r\n","import { BaseApiRoute, jsonApiPostRequest } from './baseApiService'\r\nimport { logTrace } from './loggingService'\r\n\r\nexport const addMultipleProductsToBasketJobType = 'AddMultipleProductsToBasketJob'\r\n\r\nexport function getJob(jobId, currency, country, language, requestId) {\r\n //logTrace('Sending Get Job request. RequestId: ' + requestId)\r\n return jsonApiPostRequest(`${BaseApiRoute}job/get`, {\r\n jobId: jobId,\r\n currency: currency,\r\n country: country,\r\n language: language,\r\n requestId: requestId,\r\n })\r\n}\r\n\r\nexport function getJobStatus(jobId, currency, country, language, requestId) {\r\n //logTrace('Sending Get Job Status request. RequestId: ' + requestId)\r\n return jsonApiPostRequest(`${BaseApiRoute}job/getStatus`, {\r\n jobId: jobId,\r\n currency: currency,\r\n country: country,\r\n language: language,\r\n requestId: requestId,\r\n })\r\n}\r\n\r\nexport function getJobs(requestId) {\r\n //logTrace('Sending Get Jobs request. RequestId: ' + requestId)\r\n return jsonApiPostRequest(`${BaseApiRoute}job/getAll`, {\r\n requestId: requestId,\r\n })\r\n}\r\n\r\nexport function getUnfinishedJobs(requestId) {\r\n //logTrace('Sending Get Unfinished Jobs request. RequestId: ' + requestId)\r\n return jsonApiPostRequest(`${BaseApiRoute}job/getUnfinished`, {\r\n requestId: requestId,\r\n })\r\n}\r\n\r\nexport function createAddMultipleProductsToBasketJob(basketProducts, name, requestId) {\r\n //logTrace('Sending CreateAddMultipleProductsToBasketJob request. RequestId: ' + requestId)\r\n return jsonApiPostRequest(`${BaseApiRoute}job/CreateAddMultipleProductsToBasketJob`, {\r\n basketProducts: basketProducts,\r\n name: name,\r\n requestId: requestId,\r\n })\r\n}\r\n","export function getQueryParamValue(name, location) {\r\n if (location) {\r\n let currentQueryParams = location.search\r\n if (\r\n currentQueryParams !== undefined &&\r\n currentQueryParams !== null &&\r\n currentQueryParams.length > 0\r\n ) {\r\n currentQueryParams = currentQueryParams.substring(1)\r\n const queryParams = currentQueryParams.split('&')\r\n for (let index = 0; index < queryParams.length; index++) {\r\n const queryParam = queryParams[index]\r\n const queryParamDetails = queryParam.split('=')\r\n if (\r\n queryParamDetails[0].toLowerCase() === name.toLowerCase() ||\r\n queryParamDetails[0].toLowerCase() === `?${name.toLowerCase()}`\r\n ) {\r\n return queryParamDetails[1]\r\n }\r\n }\r\n }\r\n }\r\n return undefined\r\n}\r\n\r\nfunction addQueryParam(name, value, location) {\r\n let currentQueryParams = location.search\r\n let rebuiltQueryParams = ''\r\n\r\n if (\r\n currentQueryParams !== undefined &&\r\n currentQueryParams !== null &&\r\n currentQueryParams.length > 0\r\n ) {\r\n let added = false\r\n rebuiltQueryParams = ''\r\n currentQueryParams = currentQueryParams.startsWith('?')\r\n ? currentQueryParams.substring(1)\r\n : currentQueryParams\r\n const queryParams = currentQueryParams.split('&')\r\n\r\n for (let index = 0; index < queryParams.length; index++) {\r\n const queryParam = queryParams[index]\r\n let updatedQueryParam = ''\r\n const queryParamDetails = queryParam.split('=')\r\n\r\n if (\r\n queryParamDetails[0].toLowerCase() === name.toLowerCase() ||\r\n queryParamDetails[0].toLowerCase() === `?${name.toLowerCase()}`\r\n ) {\r\n added = true\r\n updatedQueryParam = `${name}=${value}`\r\n } else {\r\n updatedQueryParam = queryParam\r\n }\r\n\r\n if (index === 0) {\r\n rebuiltQueryParams += updatedQueryParam\r\n } else {\r\n rebuiltQueryParams += `&${updatedQueryParam}`\r\n }\r\n }\r\n\r\n if (added === false) {\r\n rebuiltQueryParams += `&${name}=${value}`\r\n }\r\n } else {\r\n rebuiltQueryParams += `${name}=${value}`\r\n }\r\n\r\n return rebuiltQueryParams\r\n}\r\n\r\nfunction removeQueryParam(name, location) {\r\n let rebuiltQueryParams = ''\r\n let currentQueryParams = location.search\r\n\r\n if (\r\n currentQueryParams !== undefined &&\r\n currentQueryParams !== null &&\r\n currentQueryParams.length > 0\r\n ) {\r\n rebuiltQueryParams = ''\r\n currentQueryParams = currentQueryParams.substring(1)\r\n const queryParams = currentQueryParams.split('&')\r\n\r\n for (let index = 0; index < queryParams.length; index++) {\r\n const queryParam = queryParams[index]\r\n const queryParamDetails = queryParam.split('=')\r\n if (\r\n queryParamDetails[0].toLowerCase() !== name.toLowerCase() &&\r\n queryParamDetails[0].toLowerCase() !== `?${name.toLowerCase()}`\r\n ) {\r\n if (index === 0) {\r\n rebuiltQueryParams += queryParam\r\n } else {\r\n rebuiltQueryParams += `&${queryParam}`\r\n }\r\n }\r\n }\r\n }\r\n\r\n return rebuiltQueryParams\r\n}\r\n\r\nexport function addQueryParamToLocationPath(name, value, location) {\r\n let rebuiltPathAndQueryParams = removeQueryParam(name, location)\r\n\r\n rebuiltPathAndQueryParams = addQueryParam(name, value, { search: rebuiltPathAndQueryParams })\r\n\r\n if (rebuiltPathAndQueryParams.startsWith('?') === false) {\r\n rebuiltPathAndQueryParams = `?${rebuiltPathAndQueryParams}`\r\n }\r\n\r\n return rebuiltPathAndQueryParams\r\n}\r\n\r\nexport function removeQueryParamFromLocationPath(name, location) {\r\n const queryParams = removeQueryParam(name, location)\r\n let rebuiltPathAndQueryParams = ''\r\n\r\n if (queryParams) {\r\n if (rebuiltPathAndQueryParams.endsWith('?') === false) {\r\n rebuiltPathAndQueryParams += '?'\r\n }\r\n rebuiltPathAndQueryParams += queryParams\r\n } else {\r\n if (rebuiltPathAndQueryParams.endsWith('?') === true) {\r\n rebuiltPathAndQueryParams = rebuiltPathAndQueryParams.substring(\r\n 0,\r\n rebuiltPathAndQueryParams.length - 1\r\n )\r\n }\r\n }\r\n\r\n return rebuiltPathAndQueryParams\r\n}\r\n","import { v4 as uuid } from 'uuid'\r\nimport { getJobStatus } from '../jobApiService'\r\n\r\nexport class JobSubject {\r\n observers\r\n intervalId\r\n jobId\r\n jobType\r\n lastJobOverallStatus\r\n lastJobSpecificStatus\r\n warningsJson\r\n\r\n constructor(jobId, jobType) {\r\n this.observers = []\r\n this.intervalId = null\r\n this.jobId = jobId\r\n this.jobType = jobType\r\n }\r\n\r\n attach(observer) {\r\n this.observers.push(observer)\r\n }\r\n\r\n isAttached(observer) {\r\n return this.observers.includes(observer)\r\n }\r\n\r\n detach(observerToRemove) {\r\n this.observers = this.observers.filter((observer) => observerToRemove !== observer)\r\n }\r\n\r\n observe(jobId, jobType) {\r\n if (jobId) {\r\n this.jobId = jobId\r\n }\r\n\r\n if (jobType) {\r\n this.jobType = jobType\r\n }\r\n\r\n if (this.intervalId) {\r\n // don't do anything, we already have an interval\r\n } else {\r\n this.intervalId = setInterval(() => {\r\n this.fetch()\r\n }, 5000)\r\n }\r\n }\r\n\r\n ignore() {\r\n if (this.intervalId) {\r\n clearInterval(this.intervalId)\r\n this.intervalId = null\r\n }\r\n }\r\n\r\n teardown() {\r\n this.ignore()\r\n this.observers = []\r\n }\r\n\r\n fetch() {\r\n const requestId = uuid()\r\n getJobStatus(this.jobId, null, null, null, requestId)\r\n .then((data) => {\r\n this.warningsJson = data.warningsJson\r\n this.notify(data.overallStatus, data.jobSpecificStatus, data.warningsJson)\r\n\r\n this.lastJobOverallStatus = data.overallStatus\r\n this.lastJobSpecificStatus = data.jobSpecificStatus\r\n\r\n if (data.overallStatus === 3 || data.overallStatus === 4) {\r\n this.ignore()\r\n }\r\n })\r\n .catch((err) => {\r\n if (err.status === 400) {\r\n this.ignore()\r\n }\r\n })\r\n }\r\n\r\n notify(overallStatus, jobSpecificStatus, warningsJson) {\r\n let jobId = this.jobId\r\n let jobType = this.jobType\r\n let oldJobOverallStatus = this.lastJobOverallStatus\r\n let oldJobSpecificStatus = this.lastJobSpecificStatus\r\n this.observers.forEach((observer) =>\r\n observer({\r\n jobId,\r\n jobType,\r\n overallStatus,\r\n oldJobOverallStatus,\r\n jobSpecificStatus,\r\n oldJobSpecificStatus,\r\n warningsJson,\r\n })\r\n )\r\n }\r\n}\r\n","import { BaseApiRoute, BaseRoute, getApiBaseUrl } from './baseApiService'\r\n\r\nexport function buildLoginUrl(returnUrl) {\r\n return new Promise((resolve, reject) => {\r\n getApiBaseUrl()\r\n .then((baseUrl) => {\r\n resolve(`${baseUrl}${BaseApiRoute}account/login?returnUrl=${process.env.GATSBY_CANONICAL_BASE_URL}${returnUrl}`)\r\n })\r\n .catch((error) => reject(error))\r\n })\r\n}\r\n\r\nexport function buildSilentLoginUrl() {\r\n return new Promise((resolve, reject) => {\r\n getApiBaseUrl()\r\n .then((baseUrl) => {\r\n resolve(`${baseUrl}${BaseApiRoute}account/silentlogin`)\r\n })\r\n .catch((error) => reject(error))\r\n })\r\n}\r\n\r\nexport function buildReturnUrl(defaultUrl) {\r\n let search = ''\r\n \r\n if (window.location.search !== undefined && \r\n window.location.search !== null &&\r\n window.location.search.length > 0) {\r\n search = window.location.search\r\n }\r\n \r\n let returnUrl = `${window.location.pathname}${search}`\r\n \r\n if (returnUrl.toLowerCase().startsWith('/login-failed')) {\r\n returnUrl = defaultUrl\r\n }\r\n\r\n return returnUrl\r\n}\r\n\r\nexport function buildLogoutUrl(returnPath) {\r\n return new Promise((resolve, reject) => {\r\n getApiBaseUrl()\r\n .then((baseUrl) => {\r\n const returnUrl = `${returnPath}`\r\n resolve(`${baseUrl}${BaseApiRoute}account/logout?returnUrl=${process.env.GATSBY_CANONICAL_BASE_URL}${returnUrl}`)\r\n })\r\n .catch((error) => reject(error))\r\n })\r\n}\r\n\r\nexport function buildRequestPaymentUrl(requestId) {\r\n return new Promise((resolve, reject) => {\r\n getApiBaseUrl()\r\n .then((baseUrl) => {\r\n resolve(`${baseUrl}${BaseRoute}payment/request?requestId=${requestId}`)\r\n })\r\n .catch((error) => reject(error))\r\n })\r\n}\r\n\r\nexport const convertFredhopperLinkToUrl = (fredhopperLink) => {\r\n var filterSectionUrl = fredhopperLink.replace(/\\s+/g, '-').toLowerCase()\r\n filterSectionUrl = filterSectionUrl.replace('(', '')\r\n filterSectionUrl = filterSectionUrl.replace(')', '')\r\n filterSectionUrl = filterSectionUrl.replace('&', 'and')\r\n\r\n return filterSectionUrl\r\n}\r\n\r\nexport function buildFredhopperUrl(fredhopperUrl, fhAdditionalParams) {\r\n return fredhopperUrl + (fhAdditionalParams === undefined ? '' : '&' + fhAdditionalParams)\r\n}\r\n\r\nexport function makeFredhopperSearchSafe(fredhopperSearch) {\r\n fredhopperSearch = fredhopperSearch.replaceAll(' ', '\\\\u0020')\r\n fredhopperSearch = fredhopperSearch.replaceAll('!', '\\\\u0021')\r\n fredhopperSearch = fredhopperSearch.replaceAll('\"', '\\\\u0022')\r\n fredhopperSearch = fredhopperSearch.replaceAll('#', '\\\\u0022')\r\n fredhopperSearch = fredhopperSearch.replaceAll('/', '\\\\u002F')\r\n fredhopperSearch = fredhopperSearch.replaceAll('@', '\\\\u0040')\r\n fredhopperSearch = fredhopperSearch.replaceAll('~', '')\r\n\r\n return fredhopperSearch\r\n}\r\n\r\nexport function buildUrl(node, url) {\r\n if (node) {\r\n if (node.navigation_element !== null && node.navigation_element !== undefined) {\r\n url = buildUrl(node.navigation_element[0], url)\r\n }\r\n url = url + '/' + node.slug\r\n\r\n return url\r\n }\r\n return null\r\n}\r\n\r\nexport function makePartNumberUrlSafe(partNumber) {\r\n let partNumberUrl\r\n if (partNumber) {\r\n partNumberUrl = partNumber.toLowerCase()\r\n\r\n partNumberUrl = partNumberUrl.replaceAll('/', '-')\r\n partNumberUrl = partNumberUrl.replaceAll('.', '-')\r\n partNumberUrl = partNumberUrl.replaceAll(' ', '-')\r\n }\r\n\r\n return partNumberUrl\r\n}\r\n\r\nexport function makeExtrabasePartNumberUrlSafe(partNumber) {\r\n partNumber = partNumber.replaceAll('/', '_')\r\n let partNumberUrl = partNumber.toLowerCase()\r\n\r\n // partNumberUrl = encodeURIComponent(partNumberUrl)\r\n return partNumberUrl\r\n}\r\n\r\nexport function reversePartNumberUrl(partNumber) {\r\n if (partNumber) {\r\n partNumber = partNumber.replaceAll('_', '/')\r\n }\r\n \r\n return partNumber\r\n}\r\n\r\nexport function buildCadURL(cadenasProjectPath, cadCode) {\r\n return `https://norgren-embedded.partcommunity.com?info=${cadenasProjectPath}&varset=${cadCode}&hidePortlets=navigation&hidePortlets=generation&showPortlets=generation`\r\n}\r\n\r\nexport function buildCadURLForConfigurators(cadenasProjectPath, cadCode, partNumber) {\r\n return `https://norgren-embedded.partcommunity.com?info=${cadenasProjectPath}&varset=${cadCode},{CODE=${partNumber}}&hidePortlets=navigation&hidePortlets=generation&showPortlets=generation`\r\n}\r\n\r\nexport function extractDomain(url) {\r\n if (url) {\r\n const matches = url.match(/^https?\\:\\/\\/([^\\/?#]+)(?:[\\/?#]|$)/i)\r\n return matches && matches[1]\r\n }\r\n\r\n return null\r\n}\r\n","export const AccountTypeCredit = 0\r\nexport const AccountTypeErp = 1\r\n\r\nexport function isAnonymousUser(email) {\r\n return email === null || email === undefined\r\n}\r\n","import { v4 as uuid } from 'uuid'\r\nimport { startValveIslandConfiguratorFromPartNumber } from './configuratorApiService'\r\nimport { setConfiguratorState, ProductCodeQueryParamName } from './configuratorService'\r\nimport { navigate } from 'gatsby'\r\n\r\nexport async function startValveIslandConfiguratorFromShortCode(\r\n shortCode,\r\n setBuilding,\r\n VRURL,\r\n VRQURL,\r\n VMURL,\r\n VSURL,\r\n locale,\r\n configuratorContext,\r\n currency\r\n) {\r\n return new Promise((resolve, reject) => {\r\n startValveIslandConfiguratorWithoutAutoNavigate(\r\n shortCode,\r\n VRURL,\r\n VRQURL,\r\n VMURL,\r\n VSURL,\r\n locale,\r\n configuratorContext,\r\n currency\r\n )\r\n .then((data) => {\r\n if (setBuilding) {\r\n setBuilding(false)\r\n } else {\r\n navigate(data.navigateURL, { state: { alreadyStarted: 'True' } })\r\n }\r\n })\r\n .catch((data) => reject(data))\r\n })\r\n}\r\n\r\nexport async function startValveIslandConfiguratorWithoutAutoNavigate(\r\n shortCode,\r\n VRURL,\r\n VRQURL,\r\n VMURL,\r\n VSURL,\r\n locale,\r\n configuratorContext,\r\n currency\r\n) {\r\n return new Promise((resolve, reject) => {\r\n let requestId = uuid()\r\n let configuratorType = shortCode.slice(0, 2)\r\n startValveIslandConfiguratorFromPartNumber(\r\n shortCode,\r\n locale,\r\n configuratorType,\r\n currency,\r\n requestId\r\n )\r\n .then((data) => {\r\n let navigateURL\r\n switch (data.type) {\r\n case 'VR':\r\n navigateURL = VRURL\r\n break\r\n case 'VRQ':\r\n navigateURL = VRQURL\r\n break\r\n case 'VM':\r\n navigateURL = VMURL\r\n break\r\n case 'VS':\r\n navigateURL = VSURL\r\n break\r\n default:\r\n break\r\n }\r\n\r\n configuratorContext.setResponseModel(data)\r\n configuratorContext.setCurrentStep(data.currentStep)\r\n configuratorContext.setLoading(false)\r\n configuratorContext.setConfiguratorType(data.type)\r\n\r\n let product = null\r\n if (data.currentStep === 'SummaryStep') {\r\n product = data.productResponse.product\r\n configuratorContext.setProduct(product)\r\n }\r\n\r\n setConfiguratorState(\r\n data.type,\r\n data.configState,\r\n data,\r\n configuratorContext.configuratorVersion,\r\n data.range,\r\n null,\r\n locale\r\n )\r\n navigateURL = `${navigateURL}?${ProductCodeQueryParamName}=${shortCode}`\r\n\r\n resolve({ navigateURL: navigateURL, options: { state: { alreadyStarted: 'True' } } })\r\n })\r\n .catch((data) => {\r\n reject(data)\r\n })\r\n })\r\n}\r\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import invariant from 'invariant';\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n return function (props, propName) {\n if (props[propName] !== undefined) {\n if (!props[handler]) {\n return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n }\n }\n };\n}\n\nexport function uncontrolledPropTypes(controlledValues, displayName) {\n var propTypes = {};\n Object.keys(controlledValues).forEach(function (prop) {\n // add default propTypes for folks that use runtime checks\n propTypes[defaultKey(prop)] = noop;\n\n if (process.env.NODE_ENV !== 'production') {\n var handler = controlledValues[prop];\n !(typeof handler === 'string' && handler.trim().length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop) : invariant(false) : void 0;\n propTypes[prop] = readOnlyPropType(handler, displayName);\n }\n });\n return propTypes;\n}\nexport function isProp(props, prop) {\n return props[prop] !== undefined;\n}\nexport function defaultKey(key) {\n return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nexport function canAcceptRef(component) {\n return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nimport { useCallback, useRef, useState } from 'react';\nimport * as Utils from './utils';\n\nfunction useUncontrolledProp(propValue, defaultValue, handler) {\n var wasPropRef = useRef(propValue !== undefined);\n\n var _useState = useState(defaultValue),\n stateValue = _useState[0],\n setState = _useState[1];\n\n var isProp = propValue !== undefined;\n var wasProp = wasPropRef.current;\n wasPropRef.current = isProp;\n /**\n * If a prop switches from controlled to Uncontrolled\n * reset its value to the defaultValue\n */\n\n if (!isProp && wasProp && stateValue !== defaultValue) {\n setState(defaultValue);\n }\n\n return [isProp ? propValue : stateValue, useCallback(function (value) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (handler) handler.apply(void 0, [value].concat(args));\n setState(value);\n }, [handler])];\n}\n\nexport { useUncontrolledProp };\nexport default function useUncontrolled(props, config) {\n return Object.keys(config).reduce(function (result, fieldName) {\n var _extends2;\n\n var _ref = result,\n defaultValue = _ref[Utils.defaultKey(fieldName)],\n propsValue = _ref[fieldName],\n rest = _objectWithoutPropertiesLoose(_ref, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n var handlerName = config[fieldName];\n\n var _useUncontrolledProp = useUncontrolledProp(propsValue, defaultValue, props[handlerName]),\n value = _useUncontrolledProp[0],\n handler = _useUncontrolledProp[1];\n\n return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = value, _extends2[handlerName] = handler, _extends2));\n }, props);\n}","import { useEffect, useRef } from 'react';\n\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded before being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\nfunction useCommittedRef(value) {\n const ref = useRef(value);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref;\n}\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n const ref = useCommittedRef(fn);\n return useCallback(function (...args) {\n return ref.current && ref.current(...args);\n }, [ref]);\n}","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport divWithClassName from './divWithClassName';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH4 = divWithClassName('h4');\nDivStyledAsH4.displayName = 'DivStyledAsH4';\nconst AlertHeading = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = DivStyledAsH4,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-heading');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertHeading.displayName = 'AlertHeading';\nexport default AlertHeading;","import * as React from 'react';\nimport classNames from 'classnames';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default (className => /*#__PURE__*/React.forwardRef((p, ref) => /*#__PURE__*/_jsx(\"div\", {\n ...p,\n ref: ref,\n className: classNames(p.className, className)\n})));","import { useEffect, useLayoutEffect } from 'react';\nconst isReactNative = typeof global !== 'undefined' &&\n// @ts-ignore\nglobal.navigator &&\n// @ts-ignore\nglobal.navigator.product === 'ReactNative';\nconst isDOM = typeof document !== 'undefined';\n\n/**\n * Is `useLayoutEffect` in a DOM or React Native environment, otherwise resolves to useEffect\n * Only useful to avoid the console warning.\n *\n * PREFER `useEffect` UNLESS YOU KNOW WHAT YOU ARE DOING.\n *\n * @category effects\n */\nexport default isDOM || isReactNative ? useLayoutEffect : useEffect;","import { useState } from 'react';\nimport useEffect from './useIsomorphicEffect';\nconst targetMap = new WeakMap();\nlet resizeObserver;\nfunction getResizeObserver() {\n // eslint-disable-next-line no-return-assign\n return resizeObserver = resizeObserver || new window.ResizeObserver(entries => {\n entries.forEach(entry => {\n const handler = targetMap.get(entry.target);\n if (handler) handler(entry.contentRect);\n });\n });\n}\n\n/**\n * Efficiently observe size changes on an element. Depends on the `ResizeObserver` api,\n * and polyfills are needed in older browsers.\n *\n * ```ts\n * const [ref, attachRef] = useCallbackRef(null);\n *\n * const rect = useResizeObserver(ref);\n *\n * return (\n *
    \n * {JSON.stringify(rect)}\n *
    \n * )\n * ```\n *\n * @param element The DOM element to observe\n */\nexport default function useResizeObserver(element) {\n const [rect, setRect] = useState(null);\n useEffect(() => {\n if (!element) return;\n getResizeObserver().observe(element);\n setRect(element.getBoundingClientRect());\n targetMap.set(element, rect => {\n setRect(rect);\n });\n return () => {\n targetMap.delete(element);\n };\n }, [element]);\n return rect;\n}","const _excluded = [\"as\", \"disabled\"];\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\nexport function useButtonProps({\n tagName,\n disabled,\n href,\n target,\n rel,\n role,\n onClick,\n tabIndex = 0,\n type\n}) {\n if (!tagName) {\n if (href != null || target != null || rel != null) {\n tagName = 'a';\n } else {\n tagName = 'button';\n }\n }\n const meta = {\n tagName\n };\n if (tagName === 'button') {\n return [{\n type: type || 'button',\n disabled\n }, meta];\n }\n const handleClick = event => {\n if (disabled || tagName === 'a' && isTrivialHref(href)) {\n event.preventDefault();\n }\n if (disabled) {\n event.stopPropagation();\n return;\n }\n onClick == null ? void 0 : onClick(event);\n };\n const handleKeyDown = event => {\n if (event.key === ' ') {\n event.preventDefault();\n handleClick(event);\n }\n };\n if (tagName === 'a') {\n // Ensure there's a href so Enter can trigger anchor button.\n href || (href = '#');\n if (disabled) {\n href = undefined;\n }\n }\n return [{\n role: role != null ? role : 'button',\n // explicitly undefined so that it overrides the props disabled in a spread\n // e.g. \n disabled: undefined,\n tabIndex: disabled ? undefined : tabIndex,\n href,\n target: tagName === 'a' ? target : undefined,\n 'aria-disabled': !disabled ? undefined : disabled,\n rel: tagName === 'a' ? rel : undefined,\n onClick: handleClick,\n onKeyDown: handleKeyDown\n }, meta];\n}\nconst Button = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n as: asProp,\n disabled\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n const [buttonProps, {\n tagName: Component\n }] = useButtonProps(Object.assign({\n tagName: asProp,\n disabled\n }, props));\n return /*#__PURE__*/_jsx(Component, Object.assign({}, props, buttonProps, {\n ref: ref\n }));\n});\nButton.displayName = 'Button';\nexport default Button;","const _excluded = [\"onKeyDown\"];\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/anchor-has-content */\n\nimport * as React from 'react';\nimport { useEventCallback } from '@restart/hooks';\nimport { useButtonProps } from './Button';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\n/**\n * An generic `` component that covers a few A11y cases, ensuring that\n * cases where the `href` is missing or trivial like \"#\" are treated like buttons.\n */\nconst Anchor = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n onKeyDown\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n const [buttonProps] = useButtonProps(Object.assign({\n tagName: 'a'\n }, props));\n const handleKeyDown = useEventCallback(e => {\n buttonProps.onKeyDown(e);\n onKeyDown == null ? void 0 : onKeyDown(e);\n });\n if (isTrivialHref(props.href) || props.role === 'button') {\n return /*#__PURE__*/_jsx(\"a\", Object.assign({\n ref: ref\n }, props, buttonProps, {\n onKeyDown: handleKeyDown\n }));\n }\n return /*#__PURE__*/_jsx(\"a\", Object.assign({\n ref: ref\n }, props, {\n onKeyDown: onKeyDown\n }));\n});\nAnchor.displayName = 'Anchor';\nexport default Anchor;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Anchor from '@restart/ui/Anchor';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AlertLink = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = Anchor,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-link');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertLink.displayName = 'AlertLink';\nexport default AlertLink;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useCallback } from 'react';\nimport { ENTERED, ENTERING } from 'react-transition-group/Transition';\nimport transitionEndListener from './transitionEndListener';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nimport TransitionWrapper from './TransitionWrapper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst fadeStyles = {\n [ENTERING]: 'show',\n [ENTERED]: 'show'\n};\nconst Fade = /*#__PURE__*/React.forwardRef(({\n className,\n children,\n transitionClasses = {},\n onEnter,\n ...rest\n}, ref) => {\n const props = {\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n ...rest\n };\n const handleEnter = useCallback((node, isAppearing) => {\n triggerBrowserReflow(node);\n onEnter == null ? void 0 : onEnter(node, isAppearing);\n }, [onEnter]);\n return /*#__PURE__*/_jsx(TransitionWrapper, {\n ref: ref,\n addEndListener: transitionEndListener,\n ...props,\n onEnter: handleEnter,\n childRef: children.ref,\n children: (status, innerProps) => /*#__PURE__*/React.cloneElement(children, {\n ...innerProps,\n className: classNames('fade', className, children.props.className, fadeStyles[status], transitionClasses[status])\n })\n });\n});\nFade.displayName = 'Fade';\nexport default Fade;","import PropTypes from 'prop-types';\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n /** An accessible label indicating the relevant information about the Close Button. */\n 'aria-label': PropTypes.string,\n /** A callback fired after the Close Button is clicked. */\n onClick: PropTypes.func,\n /**\n * Render different color variant for the button.\n *\n * Omitting this will render the default dark color.\n */\n variant: PropTypes.oneOf(['white'])\n};\nconst CloseButton = /*#__PURE__*/React.forwardRef(({\n className,\n variant,\n 'aria-label': ariaLabel = 'Close',\n ...props\n}, ref) => /*#__PURE__*/_jsx(\"button\", {\n ref: ref,\n type: \"button\",\n className: classNames('btn-close', variant && `btn-close-${variant}`, className),\n \"aria-label\": ariaLabel,\n ...props\n}));\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = propTypes;\nexport default CloseButton;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AlertHeading from './AlertHeading';\nimport AlertLink from './AlertLink';\nimport Fade from './Fade';\nimport CloseButton from './CloseButton';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst Alert = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {\n const {\n bsPrefix,\n show = true,\n closeLabel = 'Close alert',\n closeVariant,\n className,\n children,\n variant = 'primary',\n onClose,\n dismissible,\n transition = Fade,\n ...props\n } = useUncontrolled(uncontrolledProps, {\n show: 'onClose'\n });\n const prefix = useBootstrapPrefix(bsPrefix, 'alert');\n const handleClose = useEventCallback(e => {\n if (onClose) {\n onClose(false, e);\n }\n });\n const Transition = transition === true ? Fade : transition;\n const alert = /*#__PURE__*/_jsxs(\"div\", {\n role: \"alert\",\n ...(!Transition ? props : undefined),\n ref: ref,\n className: classNames(className, prefix, variant && `${prefix}-${variant}`, dismissible && `${prefix}-dismissible`),\n children: [dismissible && /*#__PURE__*/_jsx(CloseButton, {\n onClick: handleClose,\n \"aria-label\": closeLabel,\n variant: closeVariant\n }), children]\n });\n if (!Transition) return show ? alert : null;\n return /*#__PURE__*/_jsx(Transition, {\n unmountOnExit: true,\n ...props,\n ref: undefined,\n in: show,\n children: alert\n });\n});\nAlert.displayName = 'Alert';\nexport default Object.assign(Alert, {\n Link: AlertLink,\n Heading: AlertHeading\n});","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction(...funcs) {\n return funcs.filter(f => f != null).reduce((acc, f) => {\n if (typeof f !== 'function') {\n throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n if (acc === null) return f;\n return function chainedFunction(...args) {\n // @ts-ignore\n acc.apply(this, args);\n // @ts-ignore\n f.apply(this, args);\n };\n }, null);\n}\nexport default createChainedFunction;","import classNames from 'classnames';\nimport css from 'dom-helpers/css';\nimport React, { useMemo } from 'react';\nimport { ENTERED, ENTERING, EXITED, EXITING } from 'react-transition-group/Transition';\nimport transitionEndListener from './transitionEndListener';\nimport createChainedFunction from './createChainedFunction';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nimport TransitionWrapper from './TransitionWrapper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst MARGINS = {\n height: ['marginTop', 'marginBottom'],\n width: ['marginLeft', 'marginRight']\n};\nfunction getDefaultDimensionValue(dimension, elem) {\n const offset = `offset${dimension[0].toUpperCase()}${dimension.slice(1)}`;\n const value = elem[offset];\n const margins = MARGINS[dimension];\n return value +\n // @ts-ignore\n parseInt(css(elem, margins[0]), 10) +\n // @ts-ignore\n parseInt(css(elem, margins[1]), 10);\n}\nconst collapseStyles = {\n [EXITED]: 'collapse',\n [EXITING]: 'collapsing',\n [ENTERING]: 'collapsing',\n [ENTERED]: 'collapse show'\n};\nconst Collapse = /*#__PURE__*/React.forwardRef(({\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n className,\n children,\n dimension = 'height',\n in: inProp = false,\n timeout = 300,\n mountOnEnter = false,\n unmountOnExit = false,\n appear = false,\n getDimensionValue = getDefaultDimensionValue,\n ...props\n}, ref) => {\n /* Compute dimension */\n const computedDimension = typeof dimension === 'function' ? dimension() : dimension;\n\n /* -- Expanding -- */\n const handleEnter = useMemo(() => createChainedFunction(elem => {\n elem.style[computedDimension] = '0';\n }, onEnter), [computedDimension, onEnter]);\n const handleEntering = useMemo(() => createChainedFunction(elem => {\n const scroll = `scroll${computedDimension[0].toUpperCase()}${computedDimension.slice(1)}`;\n elem.style[computedDimension] = `${elem[scroll]}px`;\n }, onEntering), [computedDimension, onEntering]);\n const handleEntered = useMemo(() => createChainedFunction(elem => {\n elem.style[computedDimension] = null;\n }, onEntered), [computedDimension, onEntered]);\n\n /* -- Collapsing -- */\n const handleExit = useMemo(() => createChainedFunction(elem => {\n elem.style[computedDimension] = `${getDimensionValue(computedDimension, elem)}px`;\n triggerBrowserReflow(elem);\n }, onExit), [onExit, getDimensionValue, computedDimension]);\n const handleExiting = useMemo(() => createChainedFunction(elem => {\n elem.style[computedDimension] = null;\n }, onExiting), [computedDimension, onExiting]);\n return /*#__PURE__*/_jsx(TransitionWrapper, {\n ref: ref,\n addEndListener: transitionEndListener,\n ...props,\n \"aria-expanded\": props.role ? inProp : null,\n onEnter: handleEnter,\n onEntering: handleEntering,\n onEntered: handleEntered,\n onExit: handleExit,\n onExiting: handleExiting,\n childRef: children.ref,\n in: inProp,\n timeout: timeout,\n mountOnEnter: mountOnEnter,\n unmountOnExit: unmountOnExit,\n appear: appear,\n children: (state, innerProps) => /*#__PURE__*/React.cloneElement(children, {\n ...innerProps,\n className: classNames(className, children.props.className, collapseStyles[state], computedDimension === 'width' && 'collapse-horizontal')\n })\n });\n});\n\n// @ts-ignore\n\nexport default Collapse;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Spinner = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n variant,\n animation = 'border',\n size,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n className,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'spinner');\n const bsSpinnerPrefix = `${bsPrefix}-${animation}`;\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, bsSpinnerPrefix, size && `${bsSpinnerPrefix}-${size}`, variant && `text-${variant}`)\n });\n});\nSpinner.displayName = 'Spinner';\nexport default Spinner;","\"use client\";\n\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const DEFAULT_BREAKPOINTS = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\nexport const DEFAULT_MIN_BREAKPOINT = 'xs';\nconst ThemeContext = /*#__PURE__*/React.createContext({\n prefixes: {},\n breakpoints: DEFAULT_BREAKPOINTS,\n minBreakpoint: DEFAULT_MIN_BREAKPOINT\n});\nconst {\n Consumer,\n Provider\n} = ThemeContext;\nfunction ThemeProvider({\n prefixes = {},\n breakpoints = DEFAULT_BREAKPOINTS,\n minBreakpoint = DEFAULT_MIN_BREAKPOINT,\n dir,\n children\n}) {\n const contextValue = useMemo(() => ({\n prefixes: {\n ...prefixes\n },\n breakpoints,\n minBreakpoint,\n dir\n }), [prefixes, breakpoints, minBreakpoint, dir]);\n return /*#__PURE__*/_jsx(Provider, {\n value: contextValue,\n children: children\n });\n}\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n const {\n prefixes\n } = useContext(ThemeContext);\n return prefix || prefixes[defaultPrefix] || defaultPrefix;\n}\nexport function useBootstrapBreakpoints() {\n const {\n breakpoints\n } = useContext(ThemeContext);\n return breakpoints;\n}\nexport function useBootstrapMinBreakpoint() {\n const {\n minBreakpoint\n } = useContext(ThemeContext);\n return minBreakpoint;\n}\nexport function useIsRTL() {\n const {\n dir\n } = useContext(ThemeContext);\n return dir === 'rtl';\n}\nfunction createBootstrapComponent(Component, opts) {\n if (typeof opts === 'string') opts = {\n prefix: opts\n };\n const isClassy = Component.prototype && Component.prototype.isReactComponent;\n // If it's a functional component make sure we don't break it with a ref\n const {\n prefix,\n forwardRefAs = isClassy ? 'ref' : 'innerRef'\n } = opts;\n const Wrapped = /*#__PURE__*/React.forwardRef(({\n ...props\n }, ref) => {\n props[forwardRefAs] = ref;\n const bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n bsPrefix: bsPrefix\n });\n });\n Wrapped.displayName = `Bootstrap(${Component.displayName || Component.name})`;\n return Wrapped;\n}\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","import { useMemo } from 'react';\nconst toFnRef = ref => !ref || typeof ref === 'function' ? ref : value => {\n ref.current = value;\n};\nexport function mergeRefs(refA, refB) {\n const a = toFnRef(refA);\n const b = toFnRef(refB);\n return value => {\n if (a) a(value);\n if (b) b(value);\n };\n}\n\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n * const [element, attachRef] = useCallbackRef();\n * const mergedRef = useMergedRefs(ref, attachRef);\n *\n * return \n * \n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import React from 'react';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\n\n/* eslint-disable import/prefer-default-export */\nfunction invariant(condition, message) {\n if (condition) return;\n var error = new Error(\"loadable: \" + message);\n error.framesToPop = 1;\n error.name = 'Invariant Violation';\n throw error;\n}\nfunction warn(message) {\n // eslint-disable-next-line no-console\n console.warn(\"loadable: \" + message);\n}\n\nvar Context = /*#__PURE__*/\nReact.createContext();\n\nvar LOADABLE_REQUIRED_CHUNKS_KEY = '__LOADABLE_REQUIRED_CHUNKS__';\nfunction getRequiredChunkKey(namespace) {\n return \"\" + namespace + LOADABLE_REQUIRED_CHUNKS_KEY;\n}\n\nvar sharedInternals = /*#__PURE__*/Object.freeze({\n __proto__: null,\n getRequiredChunkKey: getRequiredChunkKey,\n invariant: invariant,\n Context: Context\n});\n\nvar LOADABLE_SHARED = {\n initialChunks: {}\n};\n\nvar STATUS_PENDING = 'PENDING';\nvar STATUS_RESOLVED = 'RESOLVED';\nvar STATUS_REJECTED = 'REJECTED';\n\nfunction resolveConstructor(ctor) {\n if (typeof ctor === 'function') {\n return {\n requireAsync: ctor,\n resolve: function resolve() {\n return undefined;\n },\n chunkName: function chunkName() {\n return undefined;\n }\n };\n }\n\n return ctor;\n}\n\nvar withChunkExtractor = function withChunkExtractor(Component) {\n var LoadableWithChunkExtractor = function LoadableWithChunkExtractor(props) {\n return React.createElement(Context.Consumer, null, function (extractor) {\n return React.createElement(Component, Object.assign({\n __chunkExtractor: extractor\n }, props));\n });\n };\n\n if (Component.displayName) {\n LoadableWithChunkExtractor.displayName = Component.displayName + \"WithChunkExtractor\";\n }\n\n return LoadableWithChunkExtractor;\n};\n\nvar identity = function identity(v) {\n return v;\n};\n\nfunction createLoadable(_ref) {\n var _ref$defaultResolveCo = _ref.defaultResolveComponent,\n defaultResolveComponent = _ref$defaultResolveCo === void 0 ? identity : _ref$defaultResolveCo,\n _render = _ref.render,\n onLoad = _ref.onLoad;\n\n function loadable(loadableConstructor, options) {\n if (options === void 0) {\n options = {};\n }\n\n var ctor = resolveConstructor(loadableConstructor);\n var cache = {};\n /**\n * Cachekey represents the component to be loaded\n * if key changes - component has to be reloaded\n * @param props\n * @returns {null|Component}\n */\n\n function _getCacheKey(props) {\n if (options.cacheKey) {\n return options.cacheKey(props);\n }\n\n if (ctor.resolve) {\n return ctor.resolve(props);\n }\n\n return 'static';\n }\n /**\n * Resolves loaded `module` to a specific `Component\n * @param module\n * @param props\n * @param Loadable\n * @returns Component\n */\n\n\n function resolve(module, props, Loadable) {\n var Component = options.resolveComponent ? options.resolveComponent(module, props) : defaultResolveComponent(module); // FIXME: suppressed due to https://github.com/gregberge/loadable-components/issues/990\n // if (options.resolveComponent && !ReactIs.isValidElementType(Component)) {\n // throw new Error(\n // `resolveComponent returned something that is not a React component!`,\n // )\n // }\n\n hoistNonReactStatics(Loadable, Component, {\n preload: true\n });\n return Component;\n }\n\n var cachedLoad = function cachedLoad(props) {\n var cacheKey = _getCacheKey(props);\n\n var promise = cache[cacheKey];\n\n if (!promise || promise.status === STATUS_REJECTED) {\n promise = ctor.requireAsync(props);\n promise.status = STATUS_PENDING;\n cache[cacheKey] = promise;\n promise.then(function () {\n promise.status = STATUS_RESOLVED;\n }, function (error) {\n console.error('loadable-components: failed to asynchronously load component', {\n fileName: ctor.resolve(props),\n chunkName: ctor.chunkName(props),\n error: error ? error.message : error\n });\n promise.status = STATUS_REJECTED;\n });\n }\n\n return promise;\n };\n\n var InnerLoadable =\n /*#__PURE__*/\n function (_React$Component) {\n _inheritsLoose(InnerLoadable, _React$Component);\n\n InnerLoadable.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n var cacheKey = _getCacheKey(props);\n\n return _extends({}, state, {\n cacheKey: cacheKey,\n // change of a key triggers loading state automatically\n loading: state.loading || state.cacheKey !== cacheKey\n });\n };\n\n function InnerLoadable(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.state = {\n result: null,\n error: null,\n loading: true,\n cacheKey: _getCacheKey(props)\n };\n invariant(!props.__chunkExtractor || ctor.requireSync, 'SSR requires `@loadable/babel-plugin`, please install it'); // Server-side\n\n if (props.__chunkExtractor) {\n // This module has been marked with no SSR\n if (options.ssr === false) {\n return _assertThisInitialized(_this);\n } // We run load function, we assume that it won't fail and that it\n // triggers a synchronous loading of the module\n\n\n ctor.requireAsync(props)[\"catch\"](function () {\n return null;\n }); // So we can require now the module synchronously\n\n _this.loadSync();\n\n props.__chunkExtractor.addChunk(ctor.chunkName(props));\n\n return _assertThisInitialized(_this);\n } // Client-side with `isReady` method present (SSR probably)\n // If module is already loaded, we use a synchronous loading\n // Only perform this synchronous loading if the component has not\n // been marked with no SSR, else we risk hydration mismatches\n\n\n if (options.ssr !== false && ( // is ready - was loaded in this session\n ctor.isReady && ctor.isReady(props) || // is ready - was loaded during SSR process\n ctor.chunkName && LOADABLE_SHARED.initialChunks[ctor.chunkName(props)])) {\n _this.loadSync();\n }\n\n return _this;\n }\n\n var _proto = InnerLoadable.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true; // retrieve loading promise from a global cache\n\n var cachedPromise = this.getCache(); // if promise exists, but rejected - clear cache\n\n if (cachedPromise && cachedPromise.status === STATUS_REJECTED) {\n this.setCache();\n } // component might be resolved synchronously in the constructor\n\n\n if (this.state.loading) {\n this.loadAsync();\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // Component has to be reloaded on cacheKey change\n if (prevState.cacheKey !== this.state.cacheKey) {\n this.loadAsync();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n if (this.mounted) {\n this.setState(nextState, callback);\n }\n }\n /**\n * returns a cache key for the current props\n * @returns {Component|string}\n */\n ;\n\n _proto.getCacheKey = function getCacheKey() {\n return _getCacheKey(this.props);\n }\n /**\n * access the persistent cache\n */\n ;\n\n _proto.getCache = function getCache() {\n return cache[this.getCacheKey()];\n }\n /**\n * sets the cache value. If called without value sets it as undefined\n */\n ;\n\n _proto.setCache = function setCache(value) {\n if (value === void 0) {\n value = undefined;\n }\n\n cache[this.getCacheKey()] = value;\n };\n\n _proto.triggerOnLoad = function triggerOnLoad() {\n var _this2 = this;\n\n if (onLoad) {\n setTimeout(function () {\n onLoad(_this2.state.result, _this2.props);\n });\n }\n }\n /**\n * Synchronously loads component\n * target module is expected to already exists in the module cache\n * or be capable to resolve synchronously (webpack target=node)\n */\n ;\n\n _proto.loadSync = function loadSync() {\n // load sync is expecting component to be in the \"loading\" state already\n // sounds weird, but loading=true is the initial state of InnerLoadable\n if (!this.state.loading) return;\n\n try {\n var loadedModule = ctor.requireSync(this.props);\n var result = resolve(loadedModule, this.props, Loadable);\n this.state.result = result;\n this.state.loading = false;\n } catch (error) {\n console.error('loadable-components: failed to synchronously load component, which expected to be available', {\n fileName: ctor.resolve(this.props),\n chunkName: ctor.chunkName(this.props),\n error: error ? error.message : error\n });\n this.state.error = error;\n }\n }\n /**\n * Asynchronously loads a component.\n */\n ;\n\n _proto.loadAsync = function loadAsync() {\n var _this3 = this;\n\n var promise = this.resolveAsync();\n promise.then(function (loadedModule) {\n var result = resolve(loadedModule, _this3.props, Loadable);\n\n _this3.safeSetState({\n result: result,\n loading: false\n }, function () {\n return _this3.triggerOnLoad();\n });\n })[\"catch\"](function (error) {\n return _this3.safeSetState({\n error: error,\n loading: false\n });\n });\n return promise;\n }\n /**\n * Asynchronously resolves(not loads) a component.\n * Note - this function does not change the state\n */\n ;\n\n _proto.resolveAsync = function resolveAsync() {\n var _this$props = this.props,\n __chunkExtractor = _this$props.__chunkExtractor,\n forwardedRef = _this$props.forwardedRef,\n props = _objectWithoutPropertiesLoose(_this$props, [\"__chunkExtractor\", \"forwardedRef\"]);\n\n return cachedLoad(props);\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n forwardedRef = _this$props2.forwardedRef,\n propFallback = _this$props2.fallback,\n __chunkExtractor = _this$props2.__chunkExtractor,\n props = _objectWithoutPropertiesLoose(_this$props2, [\"forwardedRef\", \"fallback\", \"__chunkExtractor\"]);\n\n var _this$state = this.state,\n error = _this$state.error,\n loading = _this$state.loading,\n result = _this$state.result;\n\n if (options.suspense) {\n var cachedPromise = this.getCache() || this.loadAsync();\n\n if (cachedPromise.status === STATUS_PENDING) {\n throw this.loadAsync();\n }\n }\n\n if (error) {\n throw error;\n }\n\n var fallback = propFallback || options.fallback || null;\n\n if (loading) {\n return fallback;\n }\n\n return _render({\n fallback: fallback,\n result: result,\n options: options,\n props: _extends({}, props, {\n ref: forwardedRef\n })\n });\n };\n\n return InnerLoadable;\n }(React.Component);\n\n var EnhancedInnerLoadable = withChunkExtractor(InnerLoadable);\n var Loadable = React.forwardRef(function (props, ref) {\n return React.createElement(EnhancedInnerLoadable, Object.assign({\n forwardedRef: ref\n }, props));\n });\n Loadable.displayName = 'Loadable'; // In future, preload could use ``\n\n Loadable.preload = function (props) {\n Loadable.load(props);\n };\n\n Loadable.load = function (props) {\n return cachedLoad(props);\n };\n\n return Loadable;\n }\n\n function lazy(ctor, options) {\n return loadable(ctor, _extends({}, options, {\n suspense: true\n }));\n }\n\n return {\n loadable: loadable,\n lazy: lazy\n };\n}\n\nfunction defaultResolveComponent(loadedModule) {\n // eslint-disable-next-line no-underscore-dangle\n return loadedModule.__esModule ? loadedModule[\"default\"] : loadedModule[\"default\"] || loadedModule;\n}\n\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nvar _createLoadable =\n/*#__PURE__*/\ncreateLoadable({\n defaultResolveComponent: defaultResolveComponent,\n render: function render(_ref) {\n var Component = _ref.result,\n props = _ref.props;\n return React.createElement(Component, props);\n }\n}),\n loadable = _createLoadable.loadable,\n lazy = _createLoadable.lazy;\n\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nvar _createLoadable$1 =\n/*#__PURE__*/\ncreateLoadable({\n onLoad: function onLoad(result, props) {\n if (result && props.forwardedRef) {\n if (typeof props.forwardedRef === 'function') {\n props.forwardedRef(result);\n } else {\n props.forwardedRef.current = result;\n }\n }\n },\n render: function render(_ref) {\n var result = _ref.result,\n props = _ref.props;\n\n if (props.children) {\n return props.children(result);\n }\n\n return null;\n }\n}),\n loadable$1 = _createLoadable$1.loadable,\n lazy$1 = _createLoadable$1.lazy;\n\n/* eslint-disable no-underscore-dangle, camelcase */\nvar BROWSER = typeof window !== 'undefined';\nfunction loadableReady(done, _temp) {\n if (done === void 0) {\n done = function done() {};\n }\n\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$namespace = _ref.namespace,\n namespace = _ref$namespace === void 0 ? '' : _ref$namespace,\n _ref$chunkLoadingGlob = _ref.chunkLoadingGlobal,\n chunkLoadingGlobal = _ref$chunkLoadingGlob === void 0 ? '__LOADABLE_LOADED_CHUNKS__' : _ref$chunkLoadingGlob;\n\n if (!BROWSER) {\n warn('`loadableReady()` must be called in browser only');\n done();\n return Promise.resolve();\n }\n\n var requiredChunks = null;\n\n if (BROWSER) {\n var id = getRequiredChunkKey(namespace);\n var dataElement = document.getElementById(id);\n\n if (dataElement) {\n requiredChunks = JSON.parse(dataElement.textContent);\n var extElement = document.getElementById(id + \"_ext\");\n\n if (extElement) {\n var _JSON$parse = JSON.parse(extElement.textContent),\n namedChunks = _JSON$parse.namedChunks;\n\n namedChunks.forEach(function (chunkName) {\n LOADABLE_SHARED.initialChunks[chunkName] = true;\n });\n } else {\n // version mismatch\n throw new Error('loadable-component: @loadable/server does not match @loadable/component');\n }\n }\n }\n\n if (!requiredChunks) {\n warn('`loadableReady()` requires state, please use `getScriptTags` or `getScriptElements` server-side');\n done();\n return Promise.resolve();\n }\n\n var resolved = false;\n return new Promise(function (resolve) {\n window[chunkLoadingGlobal] = window[chunkLoadingGlobal] || [];\n var loadedChunks = window[chunkLoadingGlobal];\n var originalPush = loadedChunks.push.bind(loadedChunks);\n\n function checkReadyState() {\n if (requiredChunks.every(function (chunk) {\n return loadedChunks.some(function (_ref2) {\n var chunks = _ref2[0];\n return chunks.indexOf(chunk) > -1;\n });\n })) {\n if (!resolved) {\n resolved = true;\n resolve();\n }\n }\n }\n\n loadedChunks.push = function () {\n originalPush.apply(void 0, arguments);\n checkReadyState();\n };\n\n checkReadyState();\n }).then(done);\n}\n\n/* eslint-disable no-underscore-dangle */\nvar loadable$2 = loadable;\nloadable$2.lib = loadable$1;\nvar lazy$2 = lazy;\nlazy$2.lib = lazy$1;\nvar __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = sharedInternals;\n\nexport default loadable$2;\nexport { __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, lazy$2 as lazy, loadableReady };\n"],"names":["hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","includes","key","call","join","module","exports","default","ownerWindow","node","doc","ownerDocument","document","defaultView","window","rUpper","msPattern","hyphenateStyleName","string","replace","toLowerCase","hyphenate","supportedTransforms","property","css","transforms","style","getPropertyValue","psuedoElement","getComputedStyle","keys","forEach","value","test","isTransform","removeProperty","cssText","buildCrumbsForChild","parentCrumbs","currentChild","pathElements","index","crumb","slug","path","childCrumbs","label","name","id","concat","_toConsumableArray","buildCrumbsFromChildPages","crumbs","childPages","blogs","child","page","undefined","internal","type","blogChildPages","blog","childpages","title","_ref","finalCrumb","locale","useContext","LocaleContext","home","useNavigationHome","microcopy","useHeaderI18n","useBlogs","currentCrumbs","setCurrentCrumbs","useState","useEffect","homeCrumbs","React","className","getI18nText","map","Link","to","whoAmIPromise","basketContextId","skipGetBasket","country","GeolocationContext","language","LanguageContext","userContext","useRef","UserContext","basketContext","BasketContext","currencyContext","CurrencyContext","countries","useCountries","getBasket","basketId","currency","requestId","getMyBasket","then","data","current","setBasket","basket","setBasketFeatureAvailability","error","logException","catch","err","Promise","uuid","setQueryingUser","whoAmI","async","validCurrencies","isAnonymous","email","setEmail","setFirstName","setLastName","setAccountType","setCanCheckout","setCountry","setPAndASearchFeatureEnabled","setIsDistributor","setOrganisationId","setAccountNumber","setAllowPromoCodes","setAllowCertificateOfConformity","setInvoicesFeatureEnabled","setQuotesFeatureEnabled","firstName","lastName","accountType","canCheckout","pAndASearchFeatureEnabled","isDistributorAccount","organisationId","accountNumber","allowPromoCodes","allowCertificateOfConformity","invoicesFeatureEnabled","quotesFeatureEnabled","getValidCurrencies","setValidCurrencies","currencies","GetCurrencyByMaxMind","webstoreCountry","find","element","maxmindCode","toUpperCase","alpha2Code","basketItemsCount","finally","AltPathsContext","AltPathsProvider","Provider","CateogryPathsContext","CategoryPathsProvider","WhoAmI","loadable","BasketContextCheckout","useFooterI18n","resolveMicrocopyFromResourcesQueryResultForLocale","useStaticQuery","useFooterLinks","resolveNodesFromResourcesQueryResultForLocale","useContactNavigation","ContactNavigationElements","navigationElement","nodes","node_locale","StandardFooter","eventApi","DataLayerContext","footerLinks","navigationHome","socialMediaLinks","navigationId","useSocialMediaLinks","registerUrl","useRegisterSlug","contactUrl","buildUrl","registerMicrocopy","useRegisterI18n","firstQuickLinksColumn","setFirstQuickLinksColumn","secondQuickLinksColumn","setSecondQuickLinksColumn","helpLinksColumn","setHelpLinksColumn","legalLinksColumn","setLegalLinksColumn","eventModelToPublish","setEventModelToPublish","quickLinks","navigation_id","buildLinksColumn","helpLinks","legalLinks","eventId","publishContactButtonInteractionEvent","eventModel","publishRegisterButtonInteractionEvent","DefaultFooterLogo","href","link","target","rel","onClick","e","linkClasses","linkDomain","extractDomain","linkId","linkUrl","linkText","textContent","buildContactButtonInteractionEvent","buildRegisterButtonInteractionEvent","linksObject","startIndex","endIndex","linksColumn","links","url","CheckoutFooter","linksRow","buildLinksRow","DisplayNotification","_ref2","notification","deleteNotification","NotificationsContext","notificationId","variant","level","NotificationLevel","ERROR","SUCCESS","WARNING","notificationLevel","show","setShow","myInterval","handleOnClose","setTimeout","unpublishNotification","isMounted","setInterval","expireOn","Date","clearInterval","Alert","onClose","dismissible","message","isCheckout","clearNotifications","setClassNames","Consumer","notifications","DynamicDataLayer","dl","LoggedIn","isMobile","searchContext","SearchContext","accountPath","useAccountSlug","logoClicked","closeSuggestions","navigate","LoggedOut","_ref3","toggleLoginOffCanvasCallback","hasBeenClicked","setHasBeenClicked","onLogin","preventDefault","performLogIn","Spinner","animation","loginButtonHasBeenClicked","setLoginButtonHasBeenClickedCallback","homeSlug","returnUrl","buildReturnUrl","buildLoginUrl","location","HideSearchMobileClasses","HideSearchClasses","isMobileNavOpen","setIsMobileNavOpen","MobileNavContext","searchValue","setShowSuggestions","setSearchValue","searchSlug","resolveSlugsFromResourcesQueryResultForLocale","useSearchSlug","searchInput","setSearchInput","setNotification","searchName","searchClasses","setSearchClasses","searchValueUpdateTimeoutRef","searchInputRef","goToSearch","clearSearch","state","search","updateSearchValue","clearTimeout","searchTerm","getQueryParamValue","decodedSearchTerm","decodeURIComponent","placeholder","onKeyUp","blur","onChange","publishDismissableError","ref","isEmpty","useLanguageI18n","linkPath","languages","useLanguages","Basket","basketPath","useBasketSlug","basketFeatureAvailable","contactPath","contactMicrocopy","useContactI18n","handleContact","useDistributorsNavigation","isExternalLink","children","handleClickCallback","publishSearchResultEvent","handleClick","linkElement","findParentElementA","buildSearchResultEvent","description","productId","image","suggestionDescription","setSuggestionDescription","productSlug","useProductSlug","makePartNumberUrlSafe","he","decode","SuggestionResultLink","src","alt","suggestion","isExtraBaseProduct","OldPartNumberSuggestionContent","PartNumberSuggestionContent","baseProductLink","isExtraBase","productIdExtraBaseSearch","getProductId","generateExtraBaseProductLink","generateProductLink","generateLink","configuratorContext","ConfiguratorContext","setVersion","basketCurrency","setLink","loading","setLoading","configuratorsNavigation","ConfiguratorsNavigationElements","useConfiguratorsNavigation","VRURL","useVRConfiguratorNavigation","VRQURL","useVRQConfiguratorNavigation","VMURL","useVMConfiguratorNavigation","VSURL","useVSConfiguratorNavigation","configuratorMicrocopy","useConfiguratorI18n","isConfiguredProductFRL","isConfiguredProductVI","getConfiguratorVersion","version","startValveIslandConfiguratorWithoutAutoNavigate","navigateURL","options","publishPermanentDismissableError","makeExtrabasePartNumberUrlSafe","category","CategoryPathsContext","useSearchI18n","categoryPaths","productSuggestions","setProductSuggestions","datasheetSuggestions","setDatasheetSuggestions","categoriesSuggestions","setCategoriesSuggestions","partNumberSuggestions","setPartNumberSuggestions","contentSuggestions","setContentSuggestions","showSuggestions","setSuggestionsOpen","hasSuggestions","setHasSuggestions","callingCountries","useCallingCountries","suggestLocale","fredhopper_url","useSuggestFacet","getGeolocation","geolocation","suggest","trim","callingCountry","_data$productSuggesti","_data$datasheetSugges","_data$contentSuggesti","hasProducts","hasDatasheets","hasPartNumbers","limitedPartNumberSuggestions","hasContentSuggestions","hasCategories","myCategorySuggestions","categorySuggestions","myHasSuggestions","ProductSuggestionsContent","suggestions","CategoriesSuggestionsContent","DatasheetsSuggestionsContent","PartNumberSuggestionsContent","ContentSuggestionsContent","ProductSuggestionResult","imageUrl","DatasheetSuggestionResult","_ref4","PartNumberSuggestionResult","_ref5","CategorySuggestionResult","_ref6","ContentSuggestionResult","myOnScrollRef","myOnResizeRef","subNavId","setSubNavId","suggestionsOpen","isIE","setIsIE","activeIds","setActiveIds","setClasses","homeClasses","setHomeClasses","ulClasses","setUlClasses","msie","navigator","userAgent","indexOf","myActiveIds","myHomeClasses","myClasses","useOnScroll","header","querySelector","scrollingElement","scrollTop","classList","add","remove","useOnResize","innerWidth","topLevelChildPage","PrimaryNavLink","LiveChat","Distributors","Login","hasChildPages","setHasChildPages","mainClasses","setMainClasses","setLinkClasses","parentPath","myChildNavIds","hideInNavigationMenu","myHasChildPages","buildClasses","SecondaryNavMenu","shortSummary","StandardButton","icon","StandardButtonArrowIcon","secondLevelChildPage","SecondaryNavLink","linkTitle","setLinkTitle","setLinkPath","listClasses","setListClasses","backLinkPath","myLinkClasses","myListClasses","some","TertiaryNavMenu","isOpenedTertiaryNavMenu","TertiaryNavLink","navPath","toggleLanguageSelect","open","setLanguage","altPaths","useOrderedLanguages","languageDic","setLanguageDic","languageDictionary","getLanguageIconForLocale","foundLanguage","parentElement","console","log","onMouseUp","MobileMenu","homePath","toggle","accountMicrocopy","useAccountI18n","isDistributor","AccountTypeErp","setLoginButtonHasBeenClicked","headerMicrocopy","loginMicrocopy","useLoginI18n","registerSlug","darkTheme","showAccountOffCanvas","languageOpen","setLanguageOpen","accountOffCanvasOpen","setAccountOffCanvasOpen","loginOffCanvasOpen","setLoginOffCanvasOpen","headerClasses","setHeaderClasses","languageOnClick","myHeaderClasses","BasketContextBrowsing","onMouseEnter","LanguagesSelect","LoggedInOffCanvas","LoginOffCanvas","Search","Languages","Suggestions","Navigation","subject","basketMicrocopy","setWarningMessages","basketUrl","attach","onJobUpdated","detach","jobId","jobType","overallStatus","oldJobOverallStatus","jobSpecificStatus","oldJobSpecificStatus","warningsJson","arr_from_json","JSON","parse","productCodes","ProductCode","publishDismissableWarning","publishDismissableSuccessWithLink","errorMessages","sku","publishDismissableWarningWithLink","UnfinishedJobs","jobSubjects","addSubject","removeAllSubjects","removeSubject","JobContext","useBasketI18n","isAnonymousUser","getUnfinishedJobs","job","getSubjectForJob","JobSubject","entries","isAttached","observe","detachFromJobs","addMultipleProductsToBasketJobType","UnfinishedAddMultipleProductsToBasketJobs","closeIconBaseClassName","baseCookieName","alertRow","useAlertRow","navBlog","useBlogNavigation","isOpen","setIsOpen","closeIconClassName","setCloseIconClassName","setId","text","setText","setLinkText","myId","contentful_id","getInsecureValue","myLink","blogLink","Collapse","in","onExit","unmountOnExit","setInsecureValue","Ensighten","Geolocation","Layout","rest","skipPublishEvents","myOnPageLoadRef","headerHeight","setShowAccountOffCanvas","useLocation","top","windowScrollTimeout","scrollTo","loginResult","buildPageViewEvent","publishPageViewEvent","useOnPageLoad","clientHeight","LocaleProvider","HeaderHeightProvider","Checkout","MessageBar","Standard","assign","CheckoutLayout","contextTimeout","setContextTimeout","StandardHeader","NotificationsPanel","allSecondaryNavPanels","querySelectorAll","parentNode","role","CheckoutHeader","external","onClickCallback","StandardWhiteButton","HeaderHeightContext","BlogNavigationElements","DistributorsNavigationElements","VMConfiguratorNavigation","VRConfiguratorNavigation","VSConfiguratorNavigation","resourcesQuery","callingCountriesObjects","fredhopperCallingCountry","useCountriesDictionaryForAccount","countriesObjects","refs","callback","eventHandler","contains","readyState","addEventListener","removeEventListener","getCurrencySymbol","currencyLetterCode","currencySymbol","GetCurrencyForCountry","matchingCountry","tryPublishEventForId","publishEventId","eventName","resolve","reject","publishEvent","logTrace","stringify","trigger","tryPublishEvent","buildBasicEventForAccount","AccountTypeCredit","customerType","salesDesk","affiliation","buildBasicBasketEvent","basketTotal","basketItems","basketContent","items","currencyCode","amount","parseFloat","Products","ProductPosition","ProductPrice","unitPriceWithTax","ProductSeries","partNumber","ProductName","ProductQuantity","parseInt","quantity","createDataLayerProductItem","totalPriceWithoutTax","totalDiscountPrice","discount","price","item_id","item_name","coupon","item_brand","item_list_id","item_list_name","buildPurchaseEvent","order","products","withoutTax","transactionId","orderValue","withTax","orderTax","tax","orderShipping","deliveryCharge","valueWithoutTax","event","orderItems","certificateOfConformity","partName","partSeries","partPrice","unitWithTax","partQuantity","valueWithTax","valueDiscount","publishPurchaseEvent","buildShippingInfoEvent","basketDeliveryCharge","shipping_tier","publishShippingInfoEvent","buildPaymentInfoEvent","payment_type","publishPaymentInfoEvent","buildViewBasketEvent","basicBasket","ProductCategory","productCode","productPrice","productQuantity","publishViewBasketEvent","buildRemoveFromBasketEvent","eventModels","publishRemoveFromBasketEvent","buildViewItemDetailsEvent","productSeries","productPartNumber","productName","productBrand","coupon_code","publishViewItemDetailsEvent","buildViewItemListEvent","position","series","publishViewItemListEvent","buildAddToBasketEvent","publishAddToBasketEvent","buildProductClickEvent","product","productPosition","currentPage","publishProductClickEvent","buildFormStartEvent","formName","formId","form_name","form_id","form_position","link_classes","link_domain","link_id","link_url","link_text","publishFormStartEvent","buildFormSubmissionEvent","publishFormSubmissionEvent","search_term","buildButtonInteractionEvent","buttonName","buttonPosition","outbound","button_name","button_position","publishButtonInteractionEvent","buildDatasheetButtonInteractionEvent","publishDatasheetButtonInteractionEvent","buildCADButtonInteractionEvent","publishCADButtonInteractionEvent","buildInstallationGuideButtonInteractionEvent","publishInstallationGuideButtonInteractionEvent","buildBrochureButtonInteractionEvent","publishBrochureButtonInteractionEvent","buildResourcesButtonInteractionEvent","publishResourcesButtonInteractionEvent","buildWhitePaperButtonInteractionEvent","publishWhitePaperButtonInteractionEvent","currentDepth","maxDepth","tagName","getJob","jsonApiPostRequest","BaseApiRoute","getJobStatus","getJobs","createAddMultipleProductsToBasketJob","basketProducts","currentQueryParams","substring","queryParams","split","queryParamDetails","removeQueryParam","rebuiltQueryParams","queryParam","addQueryParamToLocationPath","rebuiltPathAndQueryParams","added","startsWith","updatedQueryParam","addQueryParam","removeQueryParamFromLocationPath","endsWith","observers","intervalId","lastJobOverallStatus","lastJobSpecificStatus","this","_proto","observer","observerToRemove","filter","fetch","ignore","teardown","notify","status","getApiBaseUrl","baseUrl","defaultUrl","pathname","buildLogoutUrl","returnPath","buildRequestPaymentUrl","BaseRoute","buildFredhopperUrl","fredhopperUrl","fhAdditionalParams","makeFredhopperSearchSafe","fredhopperSearch","replaceAll","navigation_element","partNumberUrl","reversePartNumberUrl","matches","match","startValveIslandConfiguratorFromShortCode","shortCode","setBuilding","alreadyStarted","configuratorType","slice","startValveIslandConfiguratorFromPartNumber","setResponseModel","setCurrentStep","currentStep","setConfiguratorType","productResponse","setProduct","setConfiguratorState","configState","configuratorVersion","range","ProductCodeQueryParamName","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","defineProperty","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","defaultKey","charAt","substr","_toPropertyKey","input","hint","prim","Symbol","toPrimitive","res","TypeError","String","Number","_toPrimitive","useUncontrolled","props","config","reduce","result","fieldName","_extends2","defaultValue","propsValue","handlerName","_useUncontrolledProp","propValue","handler","wasPropRef","_useState","stateValue","setState","isProp","wasProp","useCallback","_len","args","_key","useUncontrolledProp","fn","DivStyledAsH4","p","AlertHeading","bsPrefix","as","Component","g","WeakMap","_excluded","useButtonProps","disabled","tabIndex","meta","isTrivialHref","stopPropagation","onKeyDown","Button","asProp","source","excluded","sourceKeys","buttonProps","Anchor","handleKeyDown","AlertLink","fadeStyles","Fade","transitionClasses","onEnter","timeout","mountOnEnter","appear","handleEnter","isAppearing","triggerBrowserReflow","TransitionWrapper","addEndListener","transitionEndListener","childRef","innerProps","CloseButton","ariaLabel","uncontrolledProps","closeLabel","closeVariant","transition","prefix","handleClose","Transition","alert","Heading","funcs","f","acc","Error","MARGINS","height","width","getDefaultDimensionValue","dimension","elem","margins","collapseStyles","onEntering","onEntered","onExiting","inProp","getDimensionValue","computedDimension","useMemo","handleEntering","scroll","handleEntered","handleExit","handleExiting","size","bsSpinnerPrefix","DEFAULT_BREAKPOINTS","ThemeContext","prefixes","breakpoints","minBreakpoint","useBootstrapPrefix","defaultPrefix","useBootstrapBreakpoints","useBootstrapMinBreakpoint","toFnRef","refA","refB","a","b","mergeRefs","onExited","nodeRef","mergedRef","attachRef","r","componentOrElement","normalize","param","handleExited","handleAddEndListener","createElement","optionsSupported","onceSupported","passive","once","canUseDOM","capture","wrappedHandler","__once","onceHandler","emulateTransitionEnd","duration","padding","called","handle","bubbles","cancelable","createEvent","initEvent","dispatchEvent","triggerEvent","transitionEnd","str","mult","removeEmulate","delay","offsetHeight","for","c","d","h","k","l","m","n","q","t","v","w","x","y","z","u","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","_React$Component","context","_this","initialStatus","isMounting","enter","appearStatus","nextCallback","prevState","componentDidMount","updateStatus","componentDidUpdate","prevProps","nextStatus","componentWillUnmount","cancelNextCallback","getTimeouts","exit","mounting","forceReflow","performEnter","performExit","_this2","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onTransitionEnd","_this3","cancel","nextState","setNextCallback","_this4","active","doesNotHaveTimeoutOrListener","maybeNextCallback","_this$props","childProps","TransitionGroupContext","only","noop","_extends","bind","_objectWithoutPropertiesLoose","_assertThisInitialized","self","ReferenceError","invariant","condition","framesToPop","Context","LOADABLE_SHARED","initialChunks","STATUS_PENDING","STATUS_REJECTED","identity","createLoadable","_ref$defaultResolveCo","defaultResolveComponent","_render","onLoad","loadableConstructor","ctor","requireAsync","chunkName","resolveConstructor","cache","_getCacheKey","cacheKey","Loadable","resolveComponent","preload","LoadableWithChunkExtractor","cachedLoad","promise","fileName","InnerLoadable","__chunkExtractor","requireSync","ssr","loadSync","addChunk","isReady","mounted","cachedPromise","getCache","setCache","loadAsync","getCacheKey","triggerOnLoad","resolveAsync","loadedModule","forwardedRef","_this$props2","propFallback","fallback","_this$state","suspense","EnhancedInnerLoadable","extractor","load","lazy","_createLoadable","__esModule","_createLoadable$1","loadable$1","lazy$1","loadable$2","lib"],"sourceRoot":""}