{"version":3,"file":"a8b45891ea5c58917e4a6c594dce71ad231e7c33-52b5728daa0d77aabc05.js","mappings":"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cC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAE3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAE3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAE3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAE3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAE3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAG3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAG3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAG3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAG3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAG3CD,EAAgBA,EAAcC,QAAQ,IAAK,MAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,KAC3CD,EAAgBA,EAAcC,QAAQ,IAAK,MAGtCD,CACT,C,gIC1JO,SAASjV,EAAoBX,EAAqBlJ,GACvD,OAAIkJ,QACEA,IAAwBgB,EAAAA,IACnBxJ,EAAAA,EAAAA,IAAYV,EAAW,2BACrBkJ,IAAwB2R,EAAAA,IAC1Bna,EAAAA,EAAAA,IAAYV,EAAW,0BAEvBU,EAAAA,EAAAA,IAAYV,EAAW,wBAGzB,IAEX,CAEO,SAASoR,EAAuB4N,EAAgBC,GACrD,SAAOD,IAAkBC,IAAoBD,EAAiBC,GAAqB,CACrF,CAEO,SAAS5N,EAAkBX,GAChC,IAAIS,EAAiBT,EACrB,IAEE,MAAMwO,EAAkB,iBAClB,SAAEC,GAAaC,KAAKC,iBAAiBC,kBACrCC,EAAM,IAAI1D,KAChB,IAAI2D,EAAmBN,EAcvB/N,EADqB,IAAI0K,KAAK0D,EAAIvB,eAAe,QAAS,CAAEmB,SAAUK,KACxCC,WAAa,GAAK,EAAI,CACtD,CAAE,MAAOpS,GAAQ,CAEjB,OAAO8D,CACT,C","sources":["webpack://imi-webstore/./src/components/basket/basketButtons.js","webpack://imi-webstore/./src/components/configurators/new-valve-island/stepComponents/summary/saveConfiguration.js","webpack://imi-webstore/./src/components/formInputs/selectInput.js","webpack://imi-webstore/./src/components/formInputs/textInput.js","webpack://imi-webstore/./src/components/modal/baseModal.js","webpack://imi-webstore/./src/components/pageComponents/seo.js","webpack://imi-webstore/./src/components/productPrice/productStock.js","webpack://imi-webstore/./src/components/modal/addToBasketModal.js","webpack://imi-webstore/./src/components/widgets/addToBasket.js","webpack://imi-webstore/./src/components/productPrice/requestAQuoteButton.js","webpack://imi-webstore/./src/components/productPrice/findADistributorButton.js","webpack://imi-webstore/./src/components/productPrice/productPrice.js","webpack://imi-webstore/./src/components/productPrice/pricingTiersTable.js","webpack://imi-webstore/./src/components/productPrice/configuratorProductDeliveryDate.js","webpack://imi-webstore/./src/components/productPrice/deliveryDate.js","webpack://imi-webstore/./src/components/productPrice/discardConfiguration.js","webpack://imi-webstore/./src/components/productPrice/quantityPrice.js","webpack://imi-webstore/./src/components/productPrice/requestAQuotePanel.js","webpack://imi-webstore/./src/components/productPrice/productSidebox.js","webpack://imi-webstore/./src/components/widgets/colouredbutton.js","webpack://imi-webstore/./src/components/widgets/displayPrice.js","webpack://imi-webstore/./src/components/widgets/formDataLayer.js","webpack://imi-webstore/./src/components/widgets/numberInput.js","webpack://imi-webstore/./src/components/widgets/standardSubmitButton.js","webpack://imi-webstore/./src/components/widgets/stockLevel.js","webpack://imi-webstore/./src/contexts/configuratorMicrocopyContext.js","webpack://imi-webstore/./src/hooks/i18n/useProductI18n.js","webpack://imi-webstore/./src/hooks/i18n/useProductPriceI18n.js","webpack://imi-webstore/./src/hooks/i18n/useProductStockI18n.js","webpack://imi-webstore/./src/hooks/i18n/useRequestAQuoteI18n.js","webpack://imi-webstore/./src/hooks/slugs/useCheckoutSlug.js","webpack://imi-webstore/./src/hooks/useCountriesForFormsDictionary.js","webpack://imi-webstore/./src/services/dateService.js","webpack://imi-webstore/./src/services/floatingElementService.js","webpack://imi-webstore/./src/services/formattingService.js","webpack://imi-webstore/./src/services/htmlEncodingService.js","webpack://imi-webstore/./src/services/stockLevelService.js"],"sourcesContent":["import React from 'react'\r\nimport { useNavigationHome } from '../../hooks/useNavigationHome'\r\nimport { useCheckoutSlug } from '../../hooks/slugs/useCheckoutSlug'\r\nimport { useProductSlug } from '../../hooks/slugs/useProductSlug'\r\nimport UserContext from '../../contexts/userContext'\r\nimport ColouredStandardButton from '../widgets/colouredbutton'\r\nimport { useBasketSlug } from '../../hooks/slugs/useBasketSlug'\r\nimport { Link } from 'gatsby'\r\nimport { getI18nText } from '../../services/i18nService'\r\n\r\nexport const BasketContinueShopping = ({ microcopy, locale, additionalClasses, onClick }) => {\r\n const productsPath = `/${useNavigationHome(locale).slug}/${useProductSlug(locale)}`\r\n\r\n if (onClick) {\r\n return (\r\n
\r\n
\r\n {getI18nText(microcopy, 'basket.continueshopping')}\r\n
\r\n
\r\n )\r\n } else {\r\n return (\r\n \r\n
\r\n {getI18nText(microcopy, 'basket.continueshopping')}\r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nexport const BasketViewBasket = ({ microcopy, locale, additionalClasses }) => {\r\n const basketPath = `/${useNavigationHome(locale).slug}/${useBasketSlug(locale)}`\r\n return (\r\n \r\n
\r\n {getI18nText(microcopy, 'basket.viewbasket')}\r\n
\r\n \r\n )\r\n}\r\n\r\nexport const BasketCheckout = ({ microcopy, locale, additionalClasses }) => {\r\n const path = '/' + useNavigationHome(locale).slug + '/' + useCheckoutSlug(locale)\r\n\r\n return (\r\n \r\n {({ email, canCheckout }) =>\r\n email && canCheckout === true ? (\r\n \r\n {getI18nText(microcopy, 'basket.checkout')}\r\n \r\n ) : null\r\n }\r\n \r\n )\r\n}\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport { saveConfiguration } from '../../../../../services/backendApiService'\r\nimport { GetCurrencyForCountry } from '../../../../../services/currencyService'\r\nimport { useCountries } from '../../../../../hooks/useCountries'\r\nimport GeolocationContext from '../../../../../contexts/geolocationContext'\r\nimport NotificationsContext, {\r\n publishDismissableError,\r\n publishDismissableSuccess,\r\n} from '../../../../../contexts/notificationsContext'\r\nimport { v4 as uuid } from 'uuid'\r\nimport ConfiguratorMicrocopyContext from '../../../../../contexts/configuratorMicrocopyContext'\r\nimport ConfiguratorContext from '../../../../../contexts/newConfiguratorContext'\r\nimport { getI18nText } from '../../../../../services/i18nService'\r\n\r\nconst SaveConfiguration = ({ displayOptions, locale }) => {\r\n const countries = useCountries(locale)\r\n const { country } = useContext(GeolocationContext)\r\n const { setNotification } = useContext(NotificationsContext)\r\n const { responseModel } = useContext(ConfiguratorContext)\r\n const configuratorMicrocopyContext = useContext(ConfiguratorMicrocopyContext)\r\n const [showSaveConfiguration, setShowSaveConfiguration] = useState(false)\r\n\r\n useEffect(() => {\r\n let saveConfigurationFeatureEnabled = false\r\n if (\r\n process.env.GATSBY_FEATURE_ENVIRONMENT === 'dev' ||\r\n process.env.GATSBY_FEATURE_ENVIRONMENT === 'test'\r\n ) {\r\n saveConfigurationFeatureEnabled = true\r\n }\r\n\r\n if (\r\n responseModel &&\r\n displayOptions &&\r\n saveConfigurationFeatureEnabled === true &&\r\n displayOptions.showDisplaySaveConfiguration === true\r\n ) {\r\n setShowSaveConfiguration(true)\r\n } else {\r\n setShowSaveConfiguration(false)\r\n }\r\n }, [responseModel, displayOptions])\r\n\r\n function onSaveConfigurationClick() {\r\n let requestId = uuid()\r\n saveConfiguration(\r\n requestId,\r\n country,\r\n GetCurrencyForCountry(country, countries),\r\n locale,\r\n responseModel.summaryResponse.shortCode,\r\n responseModel.summaryResponse.protocol,\r\n responseModel.summaryResponse.range,\r\n responseModel.summaryResponse.numberOfStationsOrUnits,\r\n responseModel.summaryResponse.description\r\n ).then((data) => {\r\n if (data.cannotSaveConfiguration) {\r\n publishDismissableError(\r\n null,\r\n getI18nText(configuratorMicrocopyContext, 'configuration.toomanyconfigurations'),\r\n setNotification\r\n )\r\n } else {\r\n publishDismissableSuccess(\r\n null,\r\n getI18nText(configuratorMicrocopyContext, 'configuration.configurationsaved'),\r\n setNotification\r\n )\r\n }\r\n })\r\n }\r\n\r\n return (\r\n <>\r\n {showSaveConfiguration === true ? (\r\n \r\n ) : null}\r\n \r\n )\r\n}\r\n\r\nexport default SaveConfiguration\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { useFormI18n } from '../../hooks/i18n/useFormI18n'\r\nimport { useFormContext } from 'react-hook-form'\r\nimport GeolocationContext from '../../contexts/geolocationContext'\r\nimport Form from 'react-bootstrap/Form'\r\nimport { getI18nText } from '../../services/i18nService'\r\n\r\nconst SelectInput = ({\r\n inputName,\r\n label,\r\n errorMessage,\r\n required,\r\n options,\r\n microcopy,\r\n microcopyName,\r\n onChange,\r\n disabled = false,\r\n selectedOptionKey,\r\n errorTextColor,\r\n}) => {\r\n const locale = useContext(LocaleContext)\r\n const {\r\n register,\r\n setValue,\r\n formState: { errors },\r\n } = useFormContext()\r\n const formMicrocopy = useFormI18n(locale)\r\n const [defaultSelectedValue, setDefaultSelectedValue] = useState(selectedOptionKey)\r\n\r\n useEffect(() => {\r\n setDefaultSelectedValue(selectedOptionKey)\r\n setValue(inputName, selectedOptionKey)\r\n }, [selectedOptionKey])\r\n\r\n let validationObject = {\r\n required: undefined,\r\n }\r\n\r\n if (required === true) {\r\n validationObject.required =\r\n errorMessage !== null && errorMessage !== undefined\r\n ? errorMessage\r\n : getI18nText(formMicrocopy, 'form.requiredfield')\r\n }\r\n\r\n let formName = inputName.split('.')[0]\r\n let fieldName = inputName.split('.')[1]\r\n\r\n let inputLabel = label\r\n if (\r\n microcopy !== null &&\r\n microcopy !== undefined &&\r\n microcopyName !== null &&\r\n microcopyName !== undefined\r\n ) {\r\n inputLabel = microcopy[microcopyName].value\r\n }\r\n\r\n let formClassName = 'form__select--dropdown'\r\n if (errors[formName] && errors[formName][fieldName]) {\r\n formClassName = formClassName + ' is-invalid'\r\n } else {\r\n formClassName = formClassName + ' valid'\r\n }\r\n if (required) {\r\n formClassName = formClassName + ' required'\r\n }\r\n\r\n function handleOnChange() {\r\n if (onChange) {\r\n onChange(inputName)\r\n }\r\n }\r\n\r\n return (\r\n \r\n {(geolocation) =>\r\n geolocation.callingCountry ? (\r\n <>\r\n
\r\n \r\n\r\n {\r\n handleOnChange()\r\n }}\r\n disabled={disabled}\r\n defaultValue={defaultSelectedValue}\r\n >\r\n {options.map((option) => {\r\n return (\r\n \r\n )\r\n })}\r\n \r\n\r\n {errors[formName] && errors[formName][fieldName] && (\r\n \r\n {errors[formName][fieldName].message}\r\n \r\n )}\r\n
\r\n \r\n ) : null\r\n }\r\n
\r\n )\r\n}\r\n\r\nexport default SelectInput\r\n","import React, { useContext } from 'react'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { useFormI18n } from '../../hooks/i18n/useFormI18n'\r\nimport { useFormContext } from 'react-hook-form'\r\nimport { getI18nText } from '../../services/i18nService'\r\n\r\nconst TextInput = ({\r\n inputName,\r\n label,\r\n placeholder,\r\n errorMessage,\r\n microcopy,\r\n microcopyName,\r\n required,\r\n pattern,\r\n patternErrorMessage,\r\n match,\r\n matchErrorMessage,\r\n onChange,\r\n disabled,\r\n errorTextColor,\r\n}) => {\r\n const locale = useContext(LocaleContext)\r\n const {\r\n register,\r\n getValues,\r\n formState: { errors },\r\n } = useFormContext()\r\n const formMicrocopy = useFormI18n(locale)\r\n\r\n let validationObject = {\r\n required: undefined,\r\n pattern: undefined,\r\n validate: undefined,\r\n }\r\n\r\n let formName = inputName.split('.')[0]\r\n let fieldName = inputName.split('.')[1]\r\n\r\n if (required === true) {\r\n validationObject.required =\r\n errorMessage !== null && errorMessage !== undefined\r\n ? errorMessage\r\n : getI18nText(formMicrocopy, 'form.requiredfield')\r\n }\r\n\r\n if (pattern !== undefined) {\r\n validationObject.pattern = { value: pattern, message: patternErrorMessage }\r\n }\r\n\r\n if (match !== undefined) {\r\n validationObject.validate = {\r\n matchesValue: (value) => {\r\n const valueToMatch = getValues(match)\r\n return valueToMatch === value || matchErrorMessage\r\n },\r\n }\r\n }\r\n\r\n function handleOnChange() {\r\n if (onChange) {\r\n onChange(inputName)\r\n }\r\n }\r\n\r\n let inputLabel = label\r\n if (\r\n microcopy !== null &&\r\n microcopy !== undefined &&\r\n microcopyName !== null &&\r\n microcopyName !== undefined\r\n ) {\r\n inputLabel = getI18nText(microcopy, microcopyName)\r\n }\r\n\r\n let formClassName = 'form__field form-control'\r\n if (errors[formName] && errors[formName][fieldName]) {\r\n formClassName = formClassName + ' is-invalid'\r\n }\r\n return (\r\n
\r\n \r\n \r\n {errors[formName] && errors[formName][fieldName] && (\r\n \r\n {errors[formName][fieldName].message}\r\n \r\n )}\r\n
\r\n )\r\n}\r\n\r\nexport default TextInput\r\n","import React, { useEffect, useState } from 'react'\r\n\r\nconst BaseModal = ({ component: Component, title, isOpen, closeModal, additionalClasses, ...rest }) => {\r\n const [classes, setClasses] = useState('fade')\r\n \r\n useEffect(() => {\r\n let myClasses = 'fade'\r\n if (isOpen) {\r\n myClasses = 'in'\r\n }\r\n\r\n if (additionalClasses) {\r\n myClasses = `${myClasses} ${additionalClasses}`\r\n }\r\n setClasses(myClasses)\r\n }, [isOpen, additionalClasses])\r\n\r\n return (\r\n <>\r\n \r\n \r\n
\r\n
\r\n
{title}
\r\n \r\n \r\n \r\n
\r\n {isOpen ? : null}\r\n
\r\n \r\n \r\n\r\n \r\n \r\n )\r\n}\r\n\r\nexport default BaseModal\r\n","import React from 'react'\r\nimport { useStaticQuery, graphql } from 'gatsby'\r\n\r\nconst Seo = ({ description = '', title, image, showTitleSuffix = true }) => {\r\n const { site } = useSeoSite()\r\n const metaDescription = description || site.siteMetadata.description\r\n const defaultTitle = site.siteMetadata?.title\r\n const pageTitle = GetSeoPageTitle(showTitleSuffix, title, defaultTitle)\r\n\r\n return (\r\n <>\r\n {pageTitle}\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 Seo\r\n\r\n\r\n\r\nexport function GetSeoPageTitle(showTitleSuffix, title, defaultTitle) {\r\n const myTitleSuffix = showTitleSuffix ? ` | ${defaultTitle}` : ''\r\n let myPageTitle = defaultTitle\r\n\r\n if (title) {\r\n myPageTitle = `${title}${myTitleSuffix}`\r\n }\r\n\r\n return myPageTitle\r\n}\r\n\r\nexport const useSeoSite = () => {\r\n return useStaticQuery(\r\n graphql`\r\n query {\r\n site {\r\n siteMetadata {\r\n title\r\n description\r\n }\r\n }\r\n }\r\n `\r\n )\r\n}","import React, { useState, useEffect } from 'react'\r\nimport { useProductPriceI18n } from '../../hooks/i18n/useProductPriceI18n'\r\nimport { useProductStockI18n } from '../../hooks/i18n/useProductStockI18n'\r\nimport { getStockLevelString } from '../../services/stockLevelService'\r\nimport { Spinner } from 'react-bootstrap'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport { StockLevel, StockLevelNone } from '../widgets/stockLevel'\r\n\r\nconst ProductStock = ({ productCode, showStockLevel, stockLevelIndicator, locale, loading, quantity, stockAmount }) => {\r\n const microcopy = useProductPriceI18n(locale)\r\n const stockMicrocopy = useProductStockI18n(locale)\r\n const [stock, setStock] = useState()\r\n const quantityExceedsStockLevel = quantity > stockAmount\r\n\r\n useEffect(() => { \r\n const stockLevelText = getStockLevelString(stockLevelIndicator, stockMicrocopy)\r\n setStock(\r\n stockLevelText ? stockLevelText : getI18nText(microcopy, 'productprice.stockunavailable')\r\n )\r\n }, [stockLevelIndicator])\r\n\r\n return (\r\n <>\r\n
\r\n

{productCode}

\r\n {loading ? (\r\n \r\n ) : (\r\n <>{showStockLevel && !quantityExceedsStockLevel ? getStockResult(stock, stockLevelIndicator) : null}\r\n )}\r\n
\r\n \r\n )\r\n}\r\n\r\nfunction getStockResult(stock, stockLevelIndicator) {\r\n let content = StockLevel({ text: stock, stockLevelIndicator: stockLevelIndicator })\r\n\r\n if (content === null) {\r\n content = StockLevel({ text: stock, stockLevelIndicator: StockLevelNone })\r\n }\r\n\r\n return content\r\n}\r\n\r\nexport default ProductStock\r\n","import React from 'react'\r\nimport { useBasketI18n } from '../../hooks/i18n/useBasketI18n'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport { BasketContinueShopping, BasketCheckout, BasketViewBasket } from '../basket/basketButtons'\r\nimport UserContext from '../../contexts/userContext'\r\nimport { isAnonymousUser } from '../../services/userService'\r\n\r\nconst AddToBasketModal = ({ productCode, productDescription, closeBasketModal, locale }) => {\r\n const microcopy = useBasketI18n(locale)\r\n\r\n return (\r\n <>\r\n
\r\n

{productDescription}

\r\n

\r\n {getI18nText(microcopy, 'basket.item')} {productCode}\r\n

\r\n \r\n {({ email, canCheckout, isDistributor }) =>\r\n email && canCheckout === true ? null : (\r\n

\r\n {isDistributor === true\r\n ? getI18nText(microcopy, 'basket.distributorcantcompleteorder')\r\n : isAnonymousUser(email)\r\n ? null\r\n : getI18nText(microcopy, 'basket.cantcompleteorder')}\r\n

\r\n )\r\n }\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {({ email, canCheckout }) =>\r\n email && canCheckout === true ? (\r\n \r\n ) : null\r\n }\r\n \r\n
\r\n \r\n )\r\n}\r\n\r\nexport default AddToBasketModal\r\n","import React, { useState, useContext, useEffect } from 'react'\r\nimport BasketContext from '../../contexts/basketContext'\r\nimport { addProductToBasket, BasketContextBrowsing } from '../../services/backendApiService'\r\nimport { v4 as uuid } from 'uuid'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { useProductI18n } from '../../hooks/i18n/useProductI18n'\r\nimport { useBasketI18n } from '../../hooks/i18n/useBasketI18n'\r\nimport NotificationsContext, { publishDismissableError } from '../../contexts/notificationsContext'\r\nimport AddToBasketModal from '../modal/addToBasketModal'\r\nimport NumberInput from './numberInput'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport GeolocationContext from '../../contexts/geolocationContext'\r\nimport { MaxBasketItemQuantity } from '../../services/backendApiService'\r\nimport LanguageContext from '../../contexts/languageContext'\r\nimport { buildAddToBasketEvent, publishAddToBasketEvent } from '../../services/dataLayerService'\r\nimport UserContext from '../../contexts/userContext'\r\nimport BaseModal from '../modal/baseModal'\r\nimport DataLayerContext from '../../contexts/dataLayerContext'\r\n\r\nconst AddToBasket = ({\r\n productCode,\r\n productDescription,\r\n boxQuantity,\r\n setParentQuantity,\r\n displayQuantity,\r\n requestQuote,\r\n isMobile,\r\n overrideAddProductToBasketCallback,\r\n price,\r\n}) => {\r\n const { eventApi } = useContext(DataLayerContext)\r\n const { country } = useContext(GeolocationContext)\r\n const { language } = useContext(LanguageContext)\r\n const { clearNotifications, setNotification } = useContext(NotificationsContext)\r\n const { basketId, basketCurrency, setBasket } = useContext(BasketContext)\r\n const { accountNumber, isDistributor } = useContext(UserContext)\r\n const [quantity, setQuantity] = useState(1)\r\n const [inputsDisabled, setInputsDisabled] = useState(true)\r\n const [addToBasketModalOpen, setAddToBasketModalOpen] = useState(false)\r\n const locale = useContext(LocaleContext)\r\n const productMicrocopy = useProductI18n(locale)\r\n const basketMicrocopy = useBasketI18n(locale)\r\n const [addToBasketClasses, setAddToBasketClasses] = useState(\r\n 'btn btn-red text-uppercase add-to-basket'\r\n )\r\n const [eventModelToPublish, setEventModelToPublish] = useState()\r\n\r\n useEffect(() => {\r\n if (boxQuantity !== undefined) {\r\n setQuantity(boxQuantity)\r\n }\r\n setInputsDisabled(false)\r\n\r\n if (requestQuote) {\r\n setInputsDisabled(true)\r\n }\r\n }, [productCode, boxQuantity, requestQuote])\r\n\r\n useEffect(() => {\r\n let addToBasketClasses = 'btn btn-red text-uppercase add-to-basket'\r\n\r\n if (isMobile === undefined || isMobile === false) {\r\n addToBasketClasses = `${addToBasketClasses} mt-3`\r\n }\r\n\r\n if (inputsDisabled) {\r\n addToBasketClasses = `${addToBasketClasses} disabled`\r\n }\r\n\r\n setAddToBasketClasses(addToBasketClasses)\r\n }, [isMobile, inputsDisabled])\r\n\r\n useEffect(() => {\r\n if (eventApi && eventModelToPublish) {\r\n publishAddToBasketEvent(eventApi, eventModelToPublish)\r\n }\r\n }, [eventApi, eventModelToPublish])\r\n\r\n function openAddToBasketModal() {\r\n setAddToBasketModalOpen(true)\r\n }\r\n\r\n function closeAddToBasketModal() {\r\n setAddToBasketModalOpen(false)\r\n }\r\n\r\n function addProduct() {\r\n setInputsDisabled(true)\r\n const requestId = uuid()\r\n let myAddProduct = null\r\n if (inputsDisabled !== true) {\r\n if (overrideAddProductToBasketCallback) {\r\n myAddProduct = overrideAddProductToBasketCallback(\r\n basketId,\r\n productCode,\r\n quantity,\r\n country,\r\n basketCurrency,\r\n requestId,\r\n BasketContextBrowsing,\r\n null,\r\n productDescription\r\n )\r\n } else {\r\n myAddProduct = addProductToBasket(\r\n basketId,\r\n productCode,\r\n quantity,\r\n country,\r\n basketCurrency,\r\n requestId,\r\n BasketContextBrowsing,\r\n null,\r\n productDescription,\r\n language\r\n )\r\n }\r\n\r\n try {\r\n let totalPrice = price ? parseFloat(price) : undefined\r\n\r\n if (totalPrice && boxQuantity) {\r\n totalPrice = (quantity / boxQuantity) * totalPrice\r\n }\r\n\r\n setEventModelToPublish(\r\n buildAddToBasketEvent(\r\n [\r\n {\r\n name: Array.isArray(productDescription)\r\n ? productDescription[0]\r\n : productDescription,\r\n series: undefined,\r\n sku: productCode,\r\n quantity: quantity,\r\n position: 0,\r\n brand: undefined,\r\n price: totalPrice,\r\n category: undefined,\r\n },\r\n ],\r\n basketCurrency,\r\n locale,\r\n accountNumber,\r\n isDistributor\r\n )\r\n )\r\n } catch (error) {}\r\n\r\n myAddProduct\r\n .then((data) => {\r\n if (data.requestId === requestId) {\r\n clearNotifications()\r\n if (\r\n data.basket !== null &&\r\n data.basket.items !== null &&\r\n data.basket.items.length > 0\r\n ) {\r\n let errored = false\r\n let erroredType = undefined\r\n\r\n for (let index = 0; index < data.basket.items.length; index++) {\r\n let item = data.basket.items[index]\r\n if (item.error !== undefined && item.error !== null) {\r\n erroredType = item.error\r\n errored = true\r\n }\r\n }\r\n\r\n openAddToBasketModal()\r\n\r\n if (errored === false) {\r\n setBasket(data.basket)\r\n } else {\r\n switch (erroredType) {\r\n case 0:\r\n publishDismissableError(\r\n null,\r\n getI18nText(basketMicrocopy, 'basket.error.insufficientstock'),\r\n setNotification\r\n )\r\n break\r\n default:\r\n publishDismissableError(\r\n null,\r\n getI18nText(basketMicrocopy, 'basket.error.general'),\r\n setNotification\r\n )\r\n break\r\n }\r\n }\r\n }\r\n changeQuantity(boxQuantity)\r\n }\r\n setInputsDisabled(false)\r\n })\r\n .catch((err) => {\r\n setInputsDisabled(false)\r\n publishDismissableError(\r\n null,\r\n getI18nText(basketMicrocopy, 'basket.error.general'),\r\n setNotification\r\n )\r\n })\r\n }\r\n }\r\n\r\n function changeQuantity(value) {\r\n if (value % boxQuantity === 0 && value > 0) {\r\n if (setParentQuantity !== null && setParentQuantity !== undefined) {\r\n setParentQuantity(value)\r\n }\r\n\r\n setQuantity(value)\r\n } else {\r\n setQuantity(boxQuantity ?? 1)\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {({ basketFeatureAvailable, basketIsReadonly }) =>\r\n basketFeatureAvailable === true ? (\r\n <>\r\n {isMobile && isMobile === true ? (\r\n <>\r\n {displayQuantity === true ? (\r\n \r\n ) : null}\r\n\r\n {basketIsReadonly === null ||\r\n basketIsReadonly === undefined ||\r\n basketIsReadonly === false ? (\r\n \r\n {getI18nText(productMicrocopy, 'product.addtobasket')}\r\n \r\n ) : null}\r\n\r\n \r\n \r\n ) : (\r\n
\r\n {displayQuantity === true ? (\r\n \r\n ) : null}\r\n\r\n {basketIsReadonly === null ||\r\n basketIsReadonly === undefined ||\r\n basketIsReadonly === false ? (\r\n \r\n
\r\n \r\n {getI18nText(productMicrocopy, 'product.addtobasket')}\r\n
\r\n
\r\n ) : null}\r\n\r\n \r\n
\r\n )}\r\n \r\n ) : null\r\n }\r\n
\r\n \r\n )\r\n}\r\n\r\nexport default AddToBasket\r\n","import React from 'react'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport { useProductI18n } from '../../hooks/i18n/useProductI18n'\r\n\r\nconst RequestAQuoteButton = ({ locale, loading, openRequestAQuoteCallback }) => {\r\n const microcopy = useProductI18n(locale)\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default RequestAQuoteButton\r\n","import React from 'react'\r\nimport { Link } from 'gatsby'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport { buildUrl } from '../../services/urlService'\r\nimport { useDistributorsNavigation } from '../../hooks/navigation/useDistributorsNavigation'\r\nimport { useProductPriceI18n } from '../../hooks/i18n/useProductPriceI18n'\r\n\r\nconst FindADistributorButton = ({ locale, loading }) => {\r\n const linkPath = buildUrl(useDistributorsNavigation(locale), '')\r\n const microcopy = useProductPriceI18n(locale)\r\n return (\r\n \r\n
\r\n \r\n {getI18nText(microcopy, 'productprice.finddistributor')}\r\n
\r\n \r\n )\r\n }\r\n\r\n export default FindADistributorButton","import React from 'react'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport { DisplayPriceAsString } from '../widgets/displayPrice'\r\nimport RequestAQuoteButton from './requestAQuoteButton'\r\nimport { useProductPriceI18n } from '../../hooks/i18n/useProductPriceI18n'\r\nimport FindADistributorButton from './findADistributorButton'\r\n\r\nconst ProductPrice = ({ locale, loading, openRequestAQuoteCallback, displayOptions, product }) => {\r\n return (\r\n
\r\n {displayOptions.showLoginForPrice ? (\r\n \r\n ) : (\r\n
\r\n {displayOptions.showRequestAQuote ? (\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 ProductPrice\r\n\r\nconst RequestAQuoteContent = ({ locale, loading, displayOptions, openRequestAQuoteCallback }) => {\r\n return (\r\n <>\r\n {displayOptions.showFindDistributor === true ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nconst LoginForPriceContent = ({ locale }) => {\r\n const microcopy = useProductPriceI18n(locale)\r\n return (\r\n
\r\n

\r\n {getI18nText(microcopy, 'productprice.loginforprice')}\r\n

\r\n
\r\n )\r\n}\r\n\r\nconst ListPriceContent = ({ locale, displayOptions, product }) => {\r\n const microcopy = useProductPriceI18n(locale)\r\n return (\r\n <>\r\n {displayOptions.showListPrice ? (\r\n

\r\n {getI18nText(microcopy, 'productprice.listprice')}: \r\n {DisplayPriceAsString({\r\n currency: product.priceModel.listPrice.currency,\r\n amount: product.priceModel.listPrice.amount,\r\n })}\r\n

\r\n ) : null}\r\n \r\n )\r\n}\r\n\r\nconst IsFallbackMessageContent = ({ locale, displayOptions }) => {\r\n const microcopy = useProductPriceI18n(locale)\r\n return (\r\n <>\r\n {displayOptions.showIsFallbackMessage ? (\r\n

{getI18nText(microcopy, 'productprice.listpricewarning')}

\r\n ) : null}\r\n \r\n )\r\n}\r\n\r\nconst NetPriceContent = ({ locale, displayOptions, product }) => {\r\n const microcopy = useProductPriceI18n(locale)\r\n return (\r\n <>\r\n {displayOptions.showNetPrice ? (\r\n

\r\n {DisplayPriceAsString({\r\n currency: product.priceModel.price.currency,\r\n amount: product.priceModel.price.amount,\r\n })}\r\n

\r\n ) : (\r\n

\r\n {getI18nText(microcopy, 'productprice.priceunavailable')}\r\n

\r\n )}\r\n \r\n )\r\n}\r\n","import React, { useContext } from 'react'\r\nimport { useProductPriceI18n } from '../../hooks/i18n/useProductPriceI18n'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport { DisplayPriceAsString } from '../widgets/displayPrice'\r\nimport LocaleContext from '../../contexts/localeContext'\r\n\r\nconst PricingTiersTable = ({ displayOptions, product }) => {\r\n const locale = useContext(LocaleContext)\r\n const microcopy = useProductPriceI18n(locale)\r\n\r\n return (\r\n <>\r\n {displayOptions.showPricingTiers ? (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {product.priceModel.pricingTiers.map((element, index) => {\r\n return (\r\n \r\n )\r\n })}\r\n \r\n
{getI18nText(microcopy, 'productprice.quantity')}{getI18nText(microcopy, 'productprice.priceperitem')}{getI18nText(microcopy, 'productprice.saving')}
\r\n
\r\n ) : null}\r\n \r\n )\r\n}\r\n\r\nconst PricingTiersTableRow = ({ tier, index, pricingTiers }) => {\r\n let minimumQuantityValue\r\n if (pricingTiers[index + 1]) {\r\n minimumQuantityValue =\r\n tier.minimumQuantity + ' - ' + (pricingTiers[index + 1].minimumQuantity - 1)\r\n } else {\r\n minimumQuantityValue = tier.minimumQuantity + '+ '\r\n }\r\n\r\n return (\r\n \r\n {minimumQuantityValue}\r\n {DisplayPriceAsString({ currency: tier.price.currency, amount: tier.price.amount })}\r\n {tier.savingPercentageFrom100 + '%'}\r\n \r\n )\r\n}\r\n\r\nexport default PricingTiersTable\r\n","import React, { useState, useEffect } from 'react'\r\nimport { useProductPriceI18n } from '../../hooks/i18n/useProductPriceI18n'\r\nimport { canFulfillItemQuantity, getDaysToDespatch } from '../../services/stockLevelService'\r\nimport { formatDate } from '../../services/formattingService'\r\nimport { addWorkingDaysToCurrentDate } from '../../services/dateService'\r\nimport { Spinner } from 'react-bootstrap'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport UserContext from '../../contexts/userContext'\r\nimport { useContext } from 'react'\r\nimport { isAnonymousUser } from '../../services/userService'\r\nimport GeolocationContext from '../../contexts/geolocationContext'\r\n\r\nconst ConfiguratorProductDeliveryDate = ({\r\n locale,\r\n leadTime,\r\n leadTimeSource,\r\n quantity,\r\n stockOnHand,\r\n loading,\r\n deliveryOnRequest,\r\n exceptionalDemandQuantity,\r\n}) => {\r\n const { email } = useContext(UserContext)\r\n const [estimatedDespatchDate, setEstimatedDespatchDate] = useState()\r\n const [isExceptionalDemandQuantity, setIsExceptionalDemandQuantity] = useState(false)\r\n const microcopy = useProductPriceI18n(locale)\r\n const { country } = useContext(GeolocationContext)\r\n\r\n useEffect(() => {\r\n let daysToDespatch = leadTime\r\n\r\n if (canFulfillItemQuantity(stockOnHand, quantity)) {\r\n daysToDespatch = getDaysToDespatch(leadTime) \r\n }\r\n\r\n if (exceptionalDemandQuantity) {\r\n try {\r\n const edQuantity = parseFloat(exceptionalDemandQuantity)\r\n if (quantity >= edQuantity) {\r\n setIsExceptionalDemandQuantity(true)\r\n } else {\r\n setIsExceptionalDemandQuantity(false)\r\n }\r\n } catch (error) {}\r\n }\r\n\r\n if (leadTime === 0 && leadTimeSource === 1 /*JDE*/) {\r\n // leadTime of 0 from JDE means it's not available NDC-1560\r\n setEstimatedDespatchDate(null)\r\n } else {\r\n setEstimatedDespatchDate(formatDate(addWorkingDaysToCurrentDate(daysToDespatch), country))\r\n }\r\n }, [leadTime, quantity, stockOnHand])\r\n\r\n return (\r\n
\r\n {loading ? (\r\n \r\n ) : (\r\n <>\r\n {isAnonymousUser(email) && leadTime === null ? null : estimatedDespatchDate !== null &&\r\n leadTimeSource !== null ? (\r\n isExceptionalDemandQuantity === false ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : deliveryOnRequest ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n
\r\n )\r\n}\r\n\r\nexport default ConfiguratorProductDeliveryDate\r\n\r\nconst EstimatedDelivery = ({ estimatedDespatchDate, microcopy }) => (\r\n

\r\n \r\n {getI18nText(microcopy, 'productprice.estimatedshippingdate')}\r\n : \r\n {estimatedDespatchDate}\r\n \r\n

\r\n)\r\n\r\nconst DeliveryOnRequest = ({ microcopy }) => (\r\n

\r\n \r\n {getI18nText(microcopy, 'productprice.error.deliveryonrequest')}\r\n \r\n

\r\n)\r\n\r\nconst NoDeliveryEstimateAvailable = ({ microcopy }) => (\r\n

\r\n \r\n {getI18nText(microcopy, 'productprice.error.unabletogetestimatedshippingdate')}\r\n \r\n

\r\n)\r\n","import React, { useState, useEffect } from 'react'\r\nimport { useProductPriceI18n } from '../../hooks/i18n/useProductPriceI18n'\r\nimport { canFulfillItemQuantity } from '../../services/stockLevelService'\r\nimport { calculateDaysToDespatch } from '../../services/dateService'\r\nimport { Spinner } from 'react-bootstrap'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport { useContext } from 'react'\r\nimport GeolocationContext from '../../contexts/geolocationContext'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport ConfiguratorProductDeliveryDate from './configuratorProductDeliveryDate'\r\n\r\nconst DeliveryDate = ({ product, displayOptions, loading, quantity }) => {\r\n const locale = useContext(LocaleContext)\r\n return (\r\n <>\r\n {product.priceModel.isConfigurator ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport const ProductDeliveryDate = ({ locale, quantity, loading, displayOptions, stockModel }) => {\r\n const microcopy = useProductPriceI18n(locale)\r\n const [estimatedDespatchDate, setEstimatedDespatchDate] = useState()\r\n const { country } = useContext(GeolocationContext)\r\n\r\n useEffect(() => {\r\n setEstimatedDespatchDate(\r\n calculateDaysToDespatch(stockModel.leadTime, stockModel.stockOnHand, quantity, country)\r\n )\r\n }, [stockModel.leadTime, quantity, stockModel.stockOnHand])\r\n\r\n return (\r\n
\r\n {loading ? (\r\n \r\n ) : (\r\n <>\r\n {displayOptions.showDeliveryDate && estimatedDespatchDate !== null ? (\r\n

\r\n \r\n {stockModel.leadTimeSource === 1 &&\r\n canFulfillItemQuantity(stockModel.stockOnHand, quantity) === false\r\n ? getI18nText(microcopy, 'productprice.estimateddeliverydate')\r\n : getI18nText(microcopy, 'productprice.estimatedshippingdate')}\r\n : \r\n {estimatedDespatchDate}\r\n \r\n

\r\n ) : (\r\n

\r\n \r\n {displayOptions.showDeliveryOnRequest\r\n ? getI18nText(microcopy, 'productprice.error.deliveryonrequest')\r\n : getI18nText(microcopy, 'productprice.error.unabletogetestimatedshippingdate')}\r\n \r\n

\r\n )}\r\n \r\n )}\r\n
\r\n )\r\n}\r\n\r\nexport default DeliveryDate\r\n","import React, { useContext } from 'react'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { useConfiguratorI18n } from '../../hooks/i18n/useConfiguratorI18n'\r\nimport ConfiguratorContext, { startConfigurator } from '../../contexts/newConfiguratorContext'\r\nimport { removeQueryParamFromLocationPath } from '../../services/queryParamService'\r\nimport { navigate } from 'gatsby'\r\nimport { useLocation } from '@reach/router'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport BasketContext from '../../contexts/basketContext'\r\n\r\nconst DiscardConfiguration = ({ displayOptions, loading }) => {\r\n const locale = useContext(LocaleContext)\r\n const configuratorMicrocopy = useConfiguratorI18n(locale)\r\n const configuratorContext = useContext(ConfiguratorContext)\r\n const { basketCurrency } = useContext(BasketContext)\r\n const location = useLocation()\r\n\r\n function discardConfiguration(configuratorContext) {\r\n var removedAllQueryStringsPath = removeQueryParamFromLocationPath('productCode', location)\r\n\r\n navigate(removedAllQueryStringsPath)\r\n startConfigurator(configuratorContext, configuratorContext.configuratorType, locale, basketCurrency)\r\n }\r\n\r\n return (\r\n <>\r\n {displayOptions.showDiscardConfiguration ? (\r\n discardConfiguration(configuratorContext)}\r\n disabled={loading}\r\n >\r\n
\r\n {getI18nText(configuratorMicrocopy, 'configurator.discardconfiguration')}\r\n
\r\n \r\n ) : null}\r\n \r\n )\r\n}\r\n\r\nexport default DiscardConfiguration\r\n","import React, { useContext } from 'react'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { useProductPriceI18n } from '../../hooks/i18n/useProductPriceI18n'\r\nimport { DisplayPriceAsString } from '../widgets/displayPrice'\r\nimport { getI18nText } from '../../services/i18nService'\r\n\r\nconst QuantityPrice = ({ product, quantityPrice, quantity }) => {\r\n const locale = useContext(LocaleContext)\r\n const microcopy = useProductPriceI18n(locale)\r\n\r\n return (\r\n
\r\n

\r\n {isNaN(quantity) || !quantityPrice || !product.priceModel.price ? null : (\r\n <>\r\n {getI18nText(microcopy, 'productprice.quantity')}\r\n \r\n {DisplayPriceAsString({\r\n currency: product.priceModel.price.currency,\r\n amount: quantityPrice,\r\n })}\r\n \r\n \r\n )}\r\n

\r\n
\r\n )\r\n}\r\n\r\nexport default QuantityPrice\r\n","import React, { useEffect, useState } from 'react'\r\nimport { useContext } from 'react'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { useProductPriceI18n } from '../../hooks/i18n/useProductPriceI18n'\r\nimport { getI18nText } from '../../services/i18nService'\r\nimport { useProductI18n } from '../../hooks/i18n/useProductI18n'\r\nimport { replaceHtmlEntityWithCharacter } from '../../services/htmlEncodingService'\r\nimport RequestAQuoteButton from './requestAQuoteButton'\r\nimport FindADistributorButton from './findADistributorButton'\r\n\r\nconst RequestAQuotePanel = ({ data, product, displayOptions, openRequestAQuoteCallback }) => {\r\n const locale = useContext(LocaleContext)\r\n const microcopy = useProductPriceI18n(locale)\r\n const productMicrocopy = useProductI18n(locale)\r\n const [partNumber, setPartNumber] = useState(null)\r\n const [productDescription, setProductDescription] = useState(null)\r\n const [showActions, setShowActions] = useState(false)\r\n\r\n useEffect(() => {\r\n if (data) {\r\n setProductDescription(\r\n data?.pimData?.description ? replaceHtmlEntityWithCharacter(data.pimData.description) : null\r\n )\r\n setPartNumber(data?.partNumber)\r\n setShowActions(true)\r\n } else if (product) {\r\n const isConfigurator = product?.priceModel?.isConfigurator ?? false\r\n setProductDescription(product.name)\r\n setPartNumber(product.sku)\r\n //setShowActions(!isConfigurator)\r\n setShowActions(true)\r\n } else {\r\n setProductDescription(null)\r\n setPartNumber(null)\r\n setShowActions(false)\r\n }\r\n }, [data, product])\r\n\r\n return (\r\n <>\r\n
\r\n {getI18nText(microcopy, 'productprice.item')}: \r\n {partNumber}\r\n
\r\n

\r\n {productDescription}\r\n

\r\n
\r\n {data?.pimData ? (\r\n \r\n ) : null}\r\n
\r\n <>\r\n {showActions ? (\r\n <>\r\n
\r\n <>\r\n {displayOptions.showFindDistributor === true ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n ) : null}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default RequestAQuotePanel\r\n\r\nconst RequestAQuotePanelDownloads = ({ pimData, productMicrocopy }) => {\r\n return (\r\n <>\r\n {pimData.cadfilestep ? (\r\n \r\n \r\n

\r\n {getI18nText(productMicrocopy, 'product.cad')}(\r\n {getI18nText(productMicrocopy, 'product.step')})\r\n

\r\n \r\n ) : null}\r\n\r\n {pimData.brochure ? (\r\n \r\n \r\n

\r\n {getI18nText(productMicrocopy, 'product.brochure')} (\r\n {getI18nText(productMicrocopy, 'product.pdf')})\r\n

\r\n \r\n ) : null}\r\n\r\n {pimData.technicalspecs ? (\r\n \r\n \r\n

\r\n {getI18nText(productMicrocopy, 'product.datasheet')} (\r\n {getI18nText(productMicrocopy, 'product.pdf')})\r\n

\r\n \r\n ) : null}\r\n\r\n {pimData.software ? (\r\n \r\n \r\n

{getI18nText(productMicrocopy, 'product.software')}

\r\n \r\n ) : null}\r\n\r\n {pimData.installationandmaintenanceinstructionspdf ? (\r\n \r\n \r\n

\r\n {getI18nText(productMicrocopy, 'product.installationguide')} (\r\n {getI18nText(productMicrocopy, 'product.pdf')})\r\n

\r\n \r\n ) : null}\r\n \r\n )\r\n}\r\n","import React, { useState, useEffect, useContext, useRef } from 'react'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { Spinner } from 'react-bootstrap'\r\nimport { useOnScroll } from '../../hooks/useOnScroll'\r\nimport { useOnResize } from '../../hooks/useOnResize'\r\nimport { useOnPageLoad } from '../../hooks/useOnPageLoad'\r\nimport {\r\n setContainerOffset,\r\n floatingBasket,\r\n setHeaderHeight,\r\n offset,\r\n} from '../../services/floatingElementService'\r\nimport ProductStock from './productStock'\r\nimport AddToBasket from '../widgets/addToBasket'\r\nimport ProductPrice from './productPrice'\r\nimport PricingTiersTable from './pricingTiersTable'\r\nimport DeliveryDate from './deliveryDate'\r\nimport DiscardConfiguration from './discardConfiguration'\r\nimport QuantityPrice from './quantityPrice'\r\nimport RequestAQuotePanel from './requestAQuotePanel'\r\nimport SaveConfiguration from '../configurators/new-valve-island/stepComponents/summary/saveConfiguration'\r\n\r\nexport const ProductSidebox = ({\r\n displayOptions,\r\n product,\r\n loading,\r\n quantity,\r\n isMobile,\r\n openRequestAQuoteCallback,\r\n setQuantityCallback,\r\n overrideAddToBasketCallback,\r\n contentfulProductData,\r\n}) => {\r\n const locale = useContext(LocaleContext)\r\n const myOnScrollRef = useRef(null)\r\n const myOnResizeRef = useRef(null)\r\n const myOnPageLoadRef = useRef(null)\r\n const [isIE, setIsIE] = useState(false)\r\n const [isRange] = useState(contentfulProductData?.pimData?.israngesku === 'True')\r\n const [classNames] = useState(\r\n isMobile\r\n ? 'col-15 product-details__basket for-mobile'\r\n : 'col-15 col-md product-details__basket mb-5 mb-md-0 for-desktop'\r\n )\r\n\r\n const mobilePriceBreakpoint = 834\r\n let priceContainer = null\r\n let headerHeight = null\r\n let originalPriceTopOffset = null\r\n\r\n useEffect(() => {\r\n var msie = window.navigator.userAgent.indexOf('Trident/')\r\n setIsIE(msie > 0)\r\n }, [loading])\r\n\r\n useOnPageLoad([myOnPageLoadRef], () => {\r\n priceContainer = document.querySelector('.for-desktop .product-details__basket--container')\r\n priceContainer.classList.remove('product-details__basket--absolute')\r\n headerHeight = document.querySelector('header').clientHeight\r\n originalPriceTopOffset = offset(priceContainer).top - headerHeight\r\n })\r\n\r\n useOnScroll([myOnScrollRef], () => {\r\n const windowWidth = window.innerWidth\r\n\r\n if (\r\n priceContainer &&\r\n !priceContainer.classList.contains('no-movement') &&\r\n windowWidth >= mobilePriceBreakpoint\r\n ) {\r\n floatingBasket(priceContainer, headerHeight, originalPriceTopOffset, isIE, false)\r\n }\r\n })\r\n\r\n useOnResize([myOnResizeRef], () => {\r\n const windowWidth = window.innerWidth\r\n\r\n if (\r\n priceContainer &&\r\n !priceContainer.classList.contains('no-movement') &&\r\n windowWidth >= mobilePriceBreakpoint\r\n ) {\r\n priceContainer.classList.remove('product-details__basket--absolute')\r\n\r\n headerHeight = setHeaderHeight()\r\n originalPriceTopOffset = setContainerOffset(priceContainer, headerHeight)\r\n floatingBasket(priceContainer, headerHeight, originalPriceTopOffset, isIE, false)\r\n }\r\n })\r\n\r\n return (\r\n
\r\n {loading ? (\r\n \r\n ) : (\r\n
\r\n
\r\n <>\r\n {isRange || displayOptions.showRequestAQuote ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n
\r\n
\r\n )}\r\n
\r\n )\r\n}\r\n\r\nconst ProductSideboxLoadingContent = () => (\r\n
\r\n
\r\n \r\n
\r\n
\r\n)\r\n\r\nconst ProductSideboxPricingContent = ({\r\n locale,\r\n loading,\r\n product,\r\n quantity,\r\n displayOptions,\r\n overrideAddToBasketCallback,\r\n openRequestAQuoteCallback,\r\n setQuantityCallback,\r\n}) => {\r\n const [quantityPrice, setQuantityPrice] = useState(null)\r\n\r\n useEffect(() => {\r\n if (product && product.priceModel.price !== null) {\r\n let amount = product.priceModel.price.amount\r\n\r\n if (product.priceModel.pricingTiers) {\r\n for (let index = 0; index < product.priceModel.pricingTiers.length; index++) {\r\n const element = product.priceModel.pricingTiers[index]\r\n if (element && quantity >= element.minimumQuantity) {\r\n amount = element.price.amount\r\n }\r\n }\r\n }\r\n\r\n calculateAndSetQuantityPrice(amount)\r\n }\r\n }, [product, quantity, loading])\r\n\r\n function calculateAndSetQuantityPrice(amount) {\r\n if (displayOptions.showListPrice || displayOptions.showNetPrice) {\r\n setQuantityPrice((amount * quantity).toFixed(2))\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {product ? (\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\n}\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 ColouredStandardButton = ({\r\n path,\r\n icon,\r\n onClickCallback,\r\n children,\r\n colour,\r\n additionalClasses,\r\n ...rest\r\n}) => {\r\n const [classes, setClasses] = useState('btn text-uppercase')\r\n\r\n useEffect(() => {\r\n setClasses(\r\n `btn ${icon ? icon : ''} ${colour ? 'btn-' + colour : ''} text-uppercase ${additionalClasses}`\r\n )\r\n }, [icon, colour, additionalClasses])\r\n\r\n return (\r\n \r\n
{children}
\r\n \r\n )\r\n}\r\n\r\nexport default ColouredStandardButton\r\n","import React from 'react'\r\nimport { getCurrencySymbol } from '../../services/currencyService'\r\nimport { formatDecimalString } from '../../services/formattingService'\r\n\r\nexport const DisplayPrice = ({ item, priceKey, currency }) => {\r\n try {\r\n return item[priceKey] ? (\r\n <>\r\n <>{getCurrencySymbol(currency ? currency : item[priceKey].currency)}\r\n <>{formatDecimalString(item[priceKey].amount)}\r\n \r\n ) : null\r\n } catch (error) {}\r\n\r\n return null\r\n}\r\n\r\nexport const DisplayDeliveryPrice = ({ item, priceKey, currency }) => {\r\n try {\r\n return item[priceKey] ? (\r\n <>\r\n <>{getCurrencySymbol(currency ? currency : item[priceKey].currency)}\r\n <>{formatDecimalString(item[priceKey])}\r\n \r\n ) : null\r\n } catch (error) {}\r\n\r\n return null\r\n}\r\n\r\nexport const DisplayPriceWithoutKey = ({ item }) => {\r\n try {\r\n return item ? (\r\n <>\r\n <>{getCurrencySymbol(item.currency)}\r\n <>{formatDecimalString(item.amount)}\r\n \r\n ) : null\r\n } catch (error) {}\r\n\r\n return null\r\n}\r\n\r\n\r\nexport const DisplayPriceAsString = ({ currency, amount }) => {\r\n try {\r\n return `${getCurrencySymbol(currency)}${formatDecimalString(amount)}`\r\n } catch (error) {}\r\n\r\n return null\r\n}","import React, { useContext, useEffect, useState } from 'react'\r\nimport { useFormContext } from 'react-hook-form'\r\nimport {\r\n buildFormStartEvent,\r\n publishFormStartEvent,\r\n buildFormSubmissionEvent,\r\n publishFormSubmissionEvent,\r\n} from '../../services/dataLayerService'\r\nimport { extractDomain } from '../../services/urlService'\r\nimport DataLayerContext from '../../contexts/dataLayerContext'\r\n\r\nconst FormDataLayer = ({ formName, formId, submitRef }) => {\r\n const { eventApi } = useContext(DataLayerContext)\r\n const [eventModelToPublish, setEventModelToPublish] = useState()\r\n const {\r\n formState: { isSubmitSuccessful },\r\n watch,\r\n } = useFormContext()\r\n\r\n useEffect(() => {\r\n const watchSubscription = watch((data, { name, type }) => {\r\n if (type) {\r\n let linkClasses = null\r\n let linkDomain = null\r\n let linkId = null\r\n let linkUrl = null\r\n let linkText = null\r\n\r\n if (submitRef.current && submitRef.current.form && submitRef.current.form) {\r\n linkUrl = submitRef.current.formAction\r\n linkDomain = extractDomain(linkUrl)\r\n\r\n const found = findInFormByName(submitRef.current.form, name)\r\n if (found) {\r\n linkClasses = found.className\r\n linkId = found.id\r\n\r\n if (found.previousSibling) {\r\n linkText = found.previousSibling.textContent\r\n }\r\n }\r\n }\r\n\r\n setEventModelToPublish({\r\n eventId: 'FormStart',\r\n eventModel: 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 })\r\n watchSubscription.unsubscribe()\r\n }\r\n })\r\n\r\n return () => {\r\n watchSubscription.unsubscribe()\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (isSubmitSuccessful) {\r\n let linkClasses = null\r\n let linkDomain = null\r\n let linkId = null\r\n let linkUrl = null\r\n let linkText = null\r\n\r\n if (submitRef.current) {\r\n linkClasses = submitRef.current.className\r\n linkId = submitRef.current.id\r\n linkUrl = submitRef.current.formAction\r\n linkDomain = extractDomain(linkUrl)\r\n linkText = submitRef.current.textContent\r\n }\r\n\r\n setEventModelToPublish({\r\n eventId: 'FormSubmission',\r\n eventModel: 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 })\r\n }\r\n }, [isSubmitSuccessful])\r\n\r\n useEffect(() => {\r\n if (eventApi && eventModelToPublish) {\r\n if (eventModelToPublish.eventId === 'FormStart') {\r\n publishFormStartEvent(eventApi, eventModelToPublish.eventModel)\r\n } else if (eventModelToPublish.eventId === 'FormSubmission') {\r\n publishFormSubmissionEvent(eventApi, eventModelToPublish.eventModel)\r\n }\r\n }\r\n }, [eventApi, eventModelToPublish])\r\n\r\n return null\r\n}\r\n\r\nexport default FormDataLayer\r\n\r\nconst findInFormByName = (form, name) => {\r\n if (form) {\r\n for (let index = 0; index < form.length; index++) {\r\n const element = form[index]\r\n if (element.name === name) {\r\n return element\r\n }\r\n }\r\n }\r\n\r\n return null\r\n}\r\n","import React, { useState, useEffect } from 'react'\r\nimport { useContext } from 'react'\r\nimport { Spinner } from 'react-bootstrap'\r\nimport LocaleContext from '../../contexts/localeContext'\r\nimport { useBasketI18n } from '../../hooks/i18n/useBasketI18n'\r\nimport { getI18nText } from '../../services/i18nService'\r\n\r\nconst NumberInput = ({\r\n value,\r\n step,\r\n onChange,\r\n disabled,\r\n minValue = 1,\r\n maxValue = Number.MAX_SAFE_INTEGER,\r\n updating = false,\r\n}) => {\r\n const locale = useContext(LocaleContext)\r\n const microcopy = useBasketI18n(locale)\r\n const [inputValue, setInputValue] = useState(step)\r\n\r\n useEffect(() => {\r\n if (value) {\r\n setInputValue(value)\r\n }\r\n }, [value])\r\n\r\n function Increase() {\r\n if (updating === false) {\r\n let newQuantity = value + step\r\n if (newQuantity % step === 0 && valueIsBetweenMinAndMax(newQuantity)) {\r\n onChange(newQuantity)\r\n setInputValue(newQuantity)\r\n }\r\n }\r\n }\r\n\r\n function Decrease() {\r\n if (updating === false) {\r\n let newQuantity = value - step\r\n if (newQuantity % step === 0 && valueIsBetweenMinAndMax(newQuantity)) {\r\n onChange(newQuantity)\r\n setInputValue(newQuantity)\r\n }\r\n }\r\n }\r\n\r\n function OnValueChange(e) {\r\n if (updating === false) {\r\n if (!isNaN(e.target.value) && e.target.value <= maxValue) {\r\n setInputValue(e.target.value)\r\n }\r\n }\r\n }\r\n\r\n function OnValueBlur(e) {\r\n if (updating === false) {\r\n if (\r\n e.target.value === '' ||\r\n isNaN(e.target.value) ||\r\n valueIsBetweenMinAndMax(e.target.value) === false\r\n ) {\r\n onChange(step)\r\n setInputValue(step)\r\n } else if (valueIsBetweenMinAndMax(e.target.value)) {\r\n var quantityRoundedToBoxQuantity = Math.round(e.target.value / step) * step\r\n setInputValue(quantityRoundedToBoxQuantity)\r\n onChange(quantityRoundedToBoxQuantity)\r\n }\r\n }\r\n }\r\n\r\n function valueIsBetweenMinAndMax(value) {\r\n return value >= minValue && value <= maxValue ? true : false\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n <>\r\n {updating ? (\r\n \r\n \r\n \r\n ) : (\r\n {\r\n if (event.key === 'Enter') {\r\n OnValueBlur(event)\r\n }\r\n }}\r\n placeholder={getI18nText(microcopy, 'basket.linequantity')}\r\n >\r\n )}\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default NumberInput\r\n","import React, { useEffect, useState } from 'react'\r\n\r\nconst StandardSubmitButton = ({\r\n icon,\r\n value,\r\n disabled,\r\n onClick,\r\n additionalClasses,\r\n refCallback,\r\n}) => {\r\n const [classes, setClasses] = useState('btn text-uppercase my-5')\r\n\r\n useEffect(() => {\r\n setClasses(\r\n `btn ${icon ? icon : ''} text-uppercase my-5` +\r\n (additionalClasses ? ` ${additionalClasses}` : '')\r\n )\r\n }, [icon, additionalClasses])\r\n\r\n return onClick !== null && onClick !== undefined ? (\r\n onClick()}\r\n ref={refCallback}\r\n >\r\n {icon ? (\r\n value\r\n ) : (\r\n
{value}
\r\n )}\r\n \r\n ) : (\r\n \r\n )\r\n}\r\n\r\nexport const ColouredSubmitButton = ({\r\n icon,\r\n value,\r\n disabled,\r\n onClick,\r\n colour,\r\n additionalClasses,\r\n refCallback,\r\n}) => {\r\n const [classes, setClasses] = useState('btn text-uppercase my-5')\r\n\r\n useEffect(() => {\r\n setClasses(\r\n `btn ${icon ? icon : ''} ${colour ? 'btn-' + colour : ''}` +\r\n (additionalClasses ? ` ${additionalClasses}` : '')\r\n )\r\n }, [icon, colour, additionalClasses])\r\n\r\n return onClick !== null && onClick !== undefined ? (\r\n onClick()}\r\n ref={refCallback}\r\n >\r\n {icon ? (\r\n value\r\n ) : (\r\n
{value}
\r\n )}\r\n \r\n ) : (\r\n \r\n )\r\n}\r\n\r\nexport default StandardSubmitButton\r\n","import React from 'react'\r\n\r\nexport const StockLevelNone = 0\r\nexport const StockLevelLow = 1\r\nexport const StockLevelHigh = 2\r\n\r\nexport const StockLevel = ({ text, stockLevelIndicator }) => {\r\n switch (stockLevelIndicator) {\r\n case StockLevelNone:\r\n return

{text}

\r\n case StockLevelLow:\r\n return (\r\n \r\n \r\n {text}\r\n \r\n )\r\n case StockLevelHigh:\r\n return (\r\n \r\n \r\n {text}\r\n \r\n )\r\n default:\r\n return null\r\n }\r\n}\r\n","import React from 'react'\r\n\r\nconst ConfiguratorMicrocopyContext = React.createContext({})\r\n\r\nexport const ConfiguratorMicrocopyProvider = ConfiguratorMicrocopyContext.Provider\r\nexport default ConfiguratorMicrocopyContext","import { useStaticQuery, graphql } from 'gatsby'\r\nimport { resolveMicrocopyFromResourcesQueryResultForLocale } from '../../services/microcopyService'\r\n\r\nconst resourcesQuery = graphql`\r\n query ProductMicrocopyQuery {\r\n en: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en\" }, key: { eq: \"product\" } }\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: \"product\" } }\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: \"product\" } }\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: \"product\" } }\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: \"product\" } }\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: \"product\" } }\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: \"product\" } }\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: \"product\" } }\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: \"product\" } }\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: \"product\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const useProductI18n = (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 ProductPriceMicrocopyQuery {\r\n en: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en\" }, key: { eq: \"productprice\" } }\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: \"productprice\" } }\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: \"productprice\" } }\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: \"productprice\" } }\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: \"productprice\" } }\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: \"productprice\" } }\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: \"productprice\" } }\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: \"productprice\" } }\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: \"productprice\" } }\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: \"productprice\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const useProductPriceI18n = (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 ProductStockMicrocopyQuery {\r\n en: allContentfulMicrocopyContainer(\r\n filter: { node_locale: { eq: \"en\" }, key: { eq: \"productstock\" } }\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: \"productstock\" } }\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: \"productstock\" } }\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: \"productstock\" } }\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: \"productstock\" } }\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: \"productstock\" } }\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: \"productstock\" } }\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: \"productstock\" } }\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: \"productstock\" } }\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: \"productstock\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const useProductStockI18n = (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: \"requestaquote\" } }\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: \"requestaquote\" } }\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: \"requestaquote\" } }\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: \"requestaquote\" } }\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: \"requestaquote\" } }\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: \"requestaquote\" } }\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: \"requestaquote\" } }\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: \"requestaquote\" } }\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: \"requestaquote\" } }\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: \"requestaquote\" } }\r\n ) {\r\n nodes {\r\n ...CoreMicrocopyFields\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const useRequestQuoteI18n = (locale) => {\r\n return resolveMicrocopyFromResourcesQueryResultForLocale(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: \"Checkout\" } }\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: \"Checkout\" } }\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: \"Checkout\" } }\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: \"Checkout\" } }\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: \"Checkout\" } }\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: \"Checkout\" } }\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: \"Checkout\" } }\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: \"Checkout\" } }\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: \"Checkout\" }}\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: \"Checkout\" }}\r\n ) {\r\n nodes {\r\n ...CoreNavigationFields\r\n }\r\n }\r\n }\r\n`\r\nexport const useCheckoutSlug = (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 query {\r\n en: allContentfulCountry(\r\n filter: { node_locale: { eq: \"en\" }, includeInForms: { eq: true } }\r\n sort: { name: ASC }\r\n ) {\r\n nodes {\r\n ...CoreCountryFields\r\n }\r\n }\r\n de: allContentfulCountry(\r\n filter: { node_locale: { eq: \"de\" }, includeInForms: { eq: true } }\r\n sort: { name: ASC }\r\n ) {\r\n nodes {\r\n ...CoreCountryFields\r\n }\r\n }\r\n nl: allContentfulCountry(\r\n filter: { node_locale: { eq: \"nl\" }, includeInForms: { eq: true } }\r\n sort: { name: ASC }\r\n ) {\r\n nodes {\r\n ...CoreCountryFields\r\n }\r\n }\r\n fr: allContentfulCountry(\r\n filter: { node_locale: { eq: \"fr\" }, includeInForms: { eq: true } }\r\n sort: { name: ASC }\r\n ) {\r\n nodes {\r\n ...CoreCountryFields\r\n }\r\n }\r\n it: allContentfulCountry(\r\n filter: { node_locale: { eq: \"it\" }, includeInForms: { eq: true } }\r\n sort: { name: ASC }\r\n ) {\r\n nodes {\r\n ...CoreCountryFields\r\n }\r\n }\r\n es: allContentfulCountry(\r\n filter: { node_locale: { eq: \"es\" }, includeInForms: { eq: true } }\r\n sort: { name: ASC }\r\n ) {\r\n nodes {\r\n ...CoreCountryFields\r\n }\r\n }\r\n enUS: allContentfulCountry(\r\n filter: { node_locale: { eq: \"en-US\" }, includeInForms: { eq: true } }\r\n sort: { name: ASC }\r\n ) {\r\n nodes {\r\n ...CoreCountryFields\r\n }\r\n }\r\n cs: allContentfulCountry(\r\n filter: { node_locale: { eq: \"cs\" }, includeInForms: { eq: true } }\r\n sort: { name: ASC }\r\n ) {\r\n nodes {\r\n ...CoreCountryFields\r\n }\r\n }\r\n pl: allContentfulCountry(\r\n filter: { node_locale: { eq: \"pl\" }, includeInForms: { eq: true } }\r\n sort: { name: ASC }\r\n ) {\r\n nodes {\r\n ...CoreCountryFields\r\n }\r\n }\r\n pt: allContentfulCountry(\r\n filter: { node_locale: { eq: \"pt\" }, includeInForms: { eq: true } }\r\n sort: { name: ASC }\r\n ) {\r\n nodes {\r\n ...CoreCountryFields\r\n }\r\n }\r\n }\r\n`\r\n\r\nexport const useCountriesForFormsDictionary = (locale) => {\r\n const nodes = resolveNodesFromResourcesQueryResultForLocale(useStaticQuery(resourcesQuery), locale)\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 countriesObjects.push({ key: node.alpha2Code, value: node.name })\r\n }\r\n\r\n return countriesObjects\r\n}\r\n","import { formatDate } from './formattingService'\r\nimport { canFulfillItemQuantity, getDaysToDespatch } from './stockLevelService'\r\n\r\nexport function addWorkingDaysToCurrentDate(days) {\r\n if (days !== null && days !== undefined && days >= 0) {\r\n var fromDate = new Date()\r\n var count = 0\r\n while (count < days) {\r\n fromDate.setDate(fromDate.getDate() + 1)\r\n if (fromDate.getDay() !== 0 && fromDate.getDay() !== 6) count++\r\n }\r\n return fromDate\r\n } else {\r\n return null\r\n }\r\n}\r\n\r\nexport function calculateDaysToDespatch(leadTime, stockOnHand, quantity, country) {\r\n let daysToDespatch = leadTime\r\n\r\n if (canFulfillItemQuantity(stockOnHand, quantity)) {\r\n daysToDespatch = getDaysToDespatch(leadTime)\r\n }\r\n\r\n return formatDate(addWorkingDaysToCurrentDate(daysToDespatch), country)\r\n}\r\n","export function floatingBasket(\r\n basketContainer,\r\n headerHeight,\r\n originalBasketTopOffset,\r\n isIE,\r\n isConfigurator,\r\n isAccordionOpen\r\n) {\r\n const basketBottomGutter = 70\r\n let floatingEndPoint\r\n let topOfFloatingEndPoint = 0\r\n\r\n if (document.querySelector('.accordion-full')) {\r\n floatingEndPoint = document.querySelector('.accordion-full')\r\n } else if (document.querySelector('.checkout__purchase-info')) {\r\n floatingEndPoint = document.querySelector('.checkout__purchase-info')\r\n } else {\r\n floatingEndPoint = document.querySelector('footer')\r\n }\r\n\r\n if (floatingEndPoint) {\r\n topOfFloatingEndPoint = offset(floatingEndPoint).top - headerHeight\r\n }\r\n\r\n const maxY = topOfFloatingEndPoint - basketContainer.offsetHeight\r\n const basketTopOffset = originalBasketTopOffset\r\n let y\r\n if (isIE === false) {\r\n y = document.scrollingElement.scrollTop\r\n }\r\n\r\n if (basketTopOffset < 0) {\r\n originalBasketTopOffset = y - Math.abs(basketTopOffset)\r\n }\r\n\r\n if (y > basketTopOffset || isIE || isAccordionOpen) {\r\n if (isConfigurator) {\r\n basketContainer.classList.add('configurators__basket--fixed')\r\n basketContainer.classList.remove('configurators__basket--absolute')\r\n if (maxY - basketBottomGutter > 0) {\r\n basketContainer.classList.add('configurators__basket--fixed')\r\n basketContainer.classList.remove('configurators__basket--absolute')\r\n } else {\r\n basketContainer.classList.add('configurators__basket--absolute')\r\n basketContainer.classList.remove('configurators__basket--fixed')\r\n }\r\n } else if (isAccordionOpen) {\r\n basketContainer.classList.remove('product-details__basket--absolute')\r\n basketContainer.classList.remove('product-details__basket--fixed')\r\n basketContainer.classList.add('product-details__basket--relative')\r\n basketContainer.parentNode.classList.add('accordion-open')\r\n } else {\r\n basketContainer.classList.add('product-details__basket--fixed')\r\n basketContainer.classList.remove('product-details__basket--absolute')\r\n if (maxY - basketBottomGutter > 0) {\r\n basketContainer.classList.add('product-details__basket--fixed')\r\n basketContainer.classList.remove('product-details__basket--absolute')\r\n } else {\r\n basketContainer.classList.add('product-details__basket--absolute')\r\n basketContainer.classList.remove('product-details__basket--fixed')\r\n }\r\n }\r\n } else {\r\n //basketContainer.classList.remove('product-details__basket--fixed')\r\n }\r\n\r\n if (floatingEndPoint) {\r\n if (\r\n y -\r\n (Math.abs(floatingEndPoint.offsetTop) - basketContainer.offsetHeight - basketBottomGutter) +\r\n headerHeight >\r\n 0\r\n ) {\r\n if (isConfigurator) {\r\n basketContainer.classList.add('configurators__basket--absolute')\r\n basketContainer.classList.remove('configurators__basket--fixed')\r\n } else if (isAccordionOpen) {\r\n basketContainer.classList.remove('product-details__basket--absolute')\r\n basketContainer.classList.remove('product-details__basket--fixed')\r\n basketContainer.classList.add('product-details__basket--relative')\r\n basketContainer.parentNode.classList.add('accordion-open')\r\n } else {\r\n //basketContainer.classList.add('product-details__basket--absolute')\r\n basketContainer.classList.remove('product-details__basket--fixed')\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport function setContainerOffset(container, headerHeight) {\r\n return offset(container).top - headerHeight\r\n}\r\n\r\nexport function setHeaderHeight() {\r\n const resizedHeaderHeight = document.querySelector('header').clientHeight\r\n return resizedHeaderHeight\r\n}\r\n\r\nexport function offset(elt) {\r\n var rect = elt.getBoundingClientRect(),\r\n bodyElt = document.body\r\n return {\r\n top: rect.top + bodyElt.scrollTop,\r\n left: rect.left + bodyElt.scrollLeft,\r\n }\r\n}\r\n","export function formatDate(date, country) {\r\n if (date !== null && date !== undefined) {\r\n try {\r\n switch (country) {\r\n case 'US':\r\n return new Date(date).toLocaleDateString('en-US')\r\n\r\n default:\r\n return new Date(date).toLocaleDateString('en-GB')\r\n }\r\n\r\n //HACK: to get dates to display correctly for europe, may need to change for US\r\n } catch (error) {}\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport function formatTime(date, country) {\r\n if (date !== null && date !== undefined) {\r\n try {\r\n switch (country) {\r\n case 'US':\r\n return new Date(date).toLocaleTimeString('en-US')\r\n\r\n default:\r\n return new Date(date).toLocaleTimeString('en-GB')\r\n }\r\n\r\n //HACK: to get dates to display correctly for europe, may need to change for US\r\n } catch (error) {}\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport function formatIntString(numberString) {\r\n if (numberString !== null && numberString !== undefined && numberString !== '') {\r\n try {\r\n let parsedNumber = parseInt(numberString)\r\n return parsedNumber.toLocaleString()\r\n } catch (error) {}\r\n }\r\n}\r\n\r\nexport function formatDecimalString(\r\n numberString,\r\n minimumFractionDigits = 2,\r\n maximumFractionDigits = 2\r\n) {\r\n if (numberString !== null && numberString !== undefined && numberString !== '') {\r\n try {\r\n var parsedNumber = parseFloat(numberString)\r\n return parsedNumber.toLocaleString(undefined, {\r\n minimumFractionDigits: minimumFractionDigits,\r\n maximumFractionDigits: maximumFractionDigits,\r\n })\r\n } catch (error) {}\r\n }\r\n}\r\n\r\nexport function formatNumberString(value) {\r\n if (value !== null && value !== undefined && value !== '') {\r\n if (value.includes('.')) {\r\n let decimalLength = value.split('.')[1].length || 0\r\n if (decimalLength) {\r\n return formatDecimalString(value, decimalLength)\r\n }\r\n }\r\n\r\n return formatIntString(value)\r\n }\r\n}\r\n","import React from 'react'\r\n\r\nexport function replaceHtmlEntityWithCharacter(value) {\r\n return extractTextValue(value, htmlEntityToCharacter)\r\n}\r\n\r\nexport function replaceCharacterWithUnicodeCode(value) {\r\n return extractTextValue(value, characterToUnicodeCode)\r\n}\r\n\r\nexport function extractTextValue(value, characterHelperCallback) {\r\n let textValue = value\r\n\r\n try {\r\n if (Array.isArray(value) === true) {\r\n for (let index = 0; index < value.length; index++) {\r\n const element = value[index]\r\n if (index === 0) {\r\n textValue = ''\r\n }\r\n\r\n if (characterHelperCallback) {\r\n textValue += characterHelperCallback(element)\r\n } else {\r\n textValue += element\r\n }\r\n }\r\n } else {\r\n if (characterHelperCallback) {\r\n textValue = characterHelperCallback(value)\r\n } else {\r\n textValue = value\r\n }\r\n }\r\n } catch (error) {\r\n console.log(error)\r\n textValue = value\r\n }\r\n\r\n return textValue\r\n}\r\n\r\nfunction htmlEntityToCharacter(text) {\r\n let safeTextValue = text\r\n\r\n if (safeTextValue) {\r\n safeTextValue = safeTextValue.replace('µ', 'µ')\r\n safeTextValue = safeTextValue.replace('μ', 'µ')\r\n }\r\n return safeTextValue\r\n}\r\n\r\n/// https://en.wikipedia.org/wiki/List_of_Unicode_characters\r\nfunction characterToUnicodeCode(text) {\r\n let safeTextValue = text\r\n\r\n if (safeTextValue) {\r\n // Common\r\n safeTextValue = safeTextValue.replace('À', '\\u00C0')\r\n safeTextValue = safeTextValue.replace('Á', '\\u00C1')\r\n safeTextValue = safeTextValue.replace('Â', '\\u00C2')\r\n safeTextValue = safeTextValue.replace('Ä', '\\u00C4')\r\n safeTextValue = safeTextValue.replace('È', '\\u00C8')\r\n safeTextValue = safeTextValue.replace('É', '\\u00C9')\r\n safeTextValue = safeTextValue.replace('Ê', '\\u00CA')\r\n safeTextValue = safeTextValue.replace('Ë', '\\u00CB')\r\n safeTextValue = safeTextValue.replace('Í', '\\u00CD')\r\n safeTextValue = safeTextValue.replace('Î', '\\u00CE')\r\n safeTextValue = safeTextValue.replace('Ì', '\\u00CC')\r\n safeTextValue = safeTextValue.replace('Ï', '\\u00CF')\r\n safeTextValue = safeTextValue.replace('Ò', '\\u00D2')\r\n safeTextValue = safeTextValue.replace('Ó', '\\u00D3')\r\n safeTextValue = safeTextValue.replace('Ô', '\\u00D4')\r\n safeTextValue = safeTextValue.replace('Ö', '\\u00D6')\r\n safeTextValue = safeTextValue.replace('Ù', '\\u00D9')\r\n safeTextValue = safeTextValue.replace('Ú', '\\u00DA')\r\n safeTextValue = safeTextValue.replace('Û', '\\u00DB')\r\n safeTextValue = safeTextValue.replace('Ü', '\\u00DC')\r\n\r\n safeTextValue = safeTextValue.replace('á', '\\u00E1')\r\n safeTextValue = safeTextValue.replace('â', '\\u00E2')\r\n safeTextValue = safeTextValue.replace('à', '\\u00E0')\r\n safeTextValue = safeTextValue.replace('ä', '\\u00E4')\r\n\r\n safeTextValue = safeTextValue.replace('é', '\\u00ED')\r\n safeTextValue = safeTextValue.replace('ê', '\\u00EA')\r\n safeTextValue = safeTextValue.replace('è', '\\u00E8')\r\n safeTextValue = safeTextValue.replace('ë', '\\u00EB')\r\n\r\n safeTextValue = safeTextValue.replace('í', '\\u00ED')\r\n safeTextValue = safeTextValue.replace('î', '\\u00EE')\r\n safeTextValue = safeTextValue.replace('ì', '\\u00EC')\r\n safeTextValue = safeTextValue.replace('ï', '\\u00EF')\r\n\r\n safeTextValue = safeTextValue.replace('ó', '\\u00F3')\r\n safeTextValue = safeTextValue.replace('ô', '\\u00F4')\r\n safeTextValue = safeTextValue.replace('ò', '\\u00F2')\r\n safeTextValue = safeTextValue.replace('ö', '\\u00F6')\r\n\r\n safeTextValue = safeTextValue.replace('ú', '\\u00FA')\r\n safeTextValue = safeTextValue.replace('û', '\\u00FB')\r\n safeTextValue = safeTextValue.replace('ù', '\\u00F9')\r\n safeTextValue = safeTextValue.replace('ü', '\\u00FC')\r\n\r\n // German\r\n safeTextValue = safeTextValue.replace('ß', '\\u00DF')\r\n\r\n // Spanish\r\n safeTextValue = safeTextValue.replace('Ñ', '\\u00D1')\r\n safeTextValue = safeTextValue.replace('ñ', '\\u00F1')\r\n\r\n // French\r\n safeTextValue = safeTextValue.replace('Ç', '\\u00C7')\r\n safeTextValue = safeTextValue.replace('ç', '\\u00E7')\r\n\r\n // Polish\r\n safeTextValue = safeTextValue.replace('Ć', '\\u0106')\r\n safeTextValue = safeTextValue.replace('ć', '\\u0107')\r\n safeTextValue = safeTextValue.replace('Ń', '\\u0143')\r\n safeTextValue = safeTextValue.replace('ń', '\\u0144')\r\n safeTextValue = safeTextValue.replace('Ś', '\\u015A')\r\n safeTextValue = safeTextValue.replace('ś', '\\u015B')\r\n safeTextValue = safeTextValue.replace('Ź', '\\u0179')\r\n safeTextValue = safeTextValue.replace('ź', '\\u017A')\r\n safeTextValue = safeTextValue.replace('Ż', '\\u017B')\r\n safeTextValue = safeTextValue.replace('ż', '\\u017C')\r\n safeTextValue = safeTextValue.replace('Ł', '\\u0141')\r\n safeTextValue = safeTextValue.replace('ł', '\\u0142')\r\n safeTextValue = safeTextValue.replace('Ą', '\\u0104')\r\n safeTextValue = safeTextValue.replace('ą', '\\u0105')\r\n safeTextValue = safeTextValue.replace('Ę', '\\u0118')\r\n safeTextValue = safeTextValue.replace('ę', '\\u0119')\r\n\r\n // Czech\r\n safeTextValue = safeTextValue.replace('Č', '\\u010C;')\r\n safeTextValue = safeTextValue.replace('č', '\\u010D')\r\n safeTextValue = safeTextValue.replace('Ď', '\\u010E')\r\n safeTextValue = safeTextValue.replace('ď', '\\u010F')\r\n safeTextValue = safeTextValue.replace('Ě', '\\u011A')\r\n safeTextValue = safeTextValue.replace('ě', '\\u011B')\r\n safeTextValue = safeTextValue.replace('Ň', '\\u0147')\r\n safeTextValue = safeTextValue.replace('ň', '\\u0148')\r\n safeTextValue = safeTextValue.replace('Ř', '\\u0158')\r\n safeTextValue = safeTextValue.replace('ř', '\\u0159')\r\n safeTextValue = safeTextValue.replace('Ŝ', '\\u015C')\r\n safeTextValue = safeTextValue.replace('š', '\\u015D')\r\n safeTextValue = safeTextValue.replace('Ť', '\\u0164')\r\n safeTextValue = safeTextValue.replace('ť', '\\u0165')\r\n safeTextValue = safeTextValue.replace('Ů', '\\u016E')\r\n safeTextValue = safeTextValue.replace('ů', '\\u016F')\r\n safeTextValue = safeTextValue.replace('Ý', '\\u00DD')\r\n safeTextValue = safeTextValue.replace('ý', '\\u00FD')\r\n safeTextValue = safeTextValue.replace('Ž', '\\u017D')\r\n safeTextValue = safeTextValue.replace('ž', '\\u017E')\r\n }\r\n\r\n return safeTextValue\r\n}\r\n\r\nfunction characterToHtmlEntity(text) {\r\n let safeTextValue = text\r\n\r\n // Common\r\n safeTextValue = safeTextValue.replace('Á', 'Á')\r\n safeTextValue = safeTextValue.replace('á', 'á')\r\n safeTextValue = safeTextValue.replace('Â', 'Â')\r\n safeTextValue = safeTextValue.replace('â', 'â')\r\n safeTextValue = safeTextValue.replace('À', 'À')\r\n safeTextValue = safeTextValue.replace('à', 'à')\r\n safeTextValue = safeTextValue.replace('Ä', 'Ä')\r\n safeTextValue = safeTextValue.replace('ä', 'ä')\r\n\r\n safeTextValue = safeTextValue.replace('É', 'É')\r\n safeTextValue = safeTextValue.replace('é', 'é')\r\n safeTextValue = safeTextValue.replace('Ê', 'Ê')\r\n safeTextValue = safeTextValue.replace('ê', 'ê')\r\n safeTextValue = safeTextValue.replace('È', 'È')\r\n safeTextValue = safeTextValue.replace('è', 'è')\r\n safeTextValue = safeTextValue.replace('Ë', 'Ë')\r\n safeTextValue = safeTextValue.replace('ë', 'ë')\r\n\r\n safeTextValue = safeTextValue.replace('Í', 'Í')\r\n safeTextValue = safeTextValue.replace('í', 'í')\r\n safeTextValue = safeTextValue.replace('Î', 'Î')\r\n safeTextValue = safeTextValue.replace('î', 'î')\r\n safeTextValue = safeTextValue.replace('Ì', 'Ì')\r\n safeTextValue = safeTextValue.replace('ì', 'ì')\r\n safeTextValue = safeTextValue.replace('Ï', 'Ï')\r\n safeTextValue = safeTextValue.replace('ï', 'ï')\r\n\r\n safeTextValue = safeTextValue.replace('Ó', 'Ó')\r\n safeTextValue = safeTextValue.replace('ó', 'ó')\r\n safeTextValue = safeTextValue.replace('Ô', 'Ô')\r\n safeTextValue = safeTextValue.replace('ô', 'ô')\r\n safeTextValue = safeTextValue.replace('Ò', 'Ò')\r\n safeTextValue = safeTextValue.replace('ò', 'ò')\r\n safeTextValue = safeTextValue.replace('Ö', 'Ö')\r\n safeTextValue = safeTextValue.replace('ö', 'ö')\r\n\r\n safeTextValue = safeTextValue.replace('Ú', 'Ú')\r\n safeTextValue = safeTextValue.replace('ú', 'ú')\r\n safeTextValue = safeTextValue.replace('Û', 'Û')\r\n safeTextValue = safeTextValue.replace('û', 'û')\r\n safeTextValue = safeTextValue.replace('Ù', 'Ù')\r\n safeTextValue = safeTextValue.replace('ù', 'ù')\r\n safeTextValue = safeTextValue.replace('Ü', 'Ü')\r\n safeTextValue = safeTextValue.replace('ü', 'ü')\r\n\r\n // German\r\n safeTextValue = safeTextValue.replace('ß', 'ß')\r\n\r\n // Spanish\r\n safeTextValue = safeTextValue.replace('Ñ', 'Ñ')\r\n safeTextValue = safeTextValue.replace('ñ', 'ñ')\r\n\r\n // French\r\n safeTextValue = safeTextValue.replace('Ç', 'Ç')\r\n safeTextValue = safeTextValue.replace('ç', 'ç')\r\n\r\n // Polish\r\n safeTextValue = safeTextValue.replace('Ć', 'Ć')\r\n safeTextValue = safeTextValue.replace('ć', 'ć')\r\n safeTextValue = safeTextValue.replace('Ń', 'Ń')\r\n safeTextValue = safeTextValue.replace('ń', 'ń')\r\n safeTextValue = safeTextValue.replace('Ś', 'Ś')\r\n safeTextValue = safeTextValue.replace('ś', 'ś')\r\n safeTextValue = safeTextValue.replace('Ź', 'Ź')\r\n safeTextValue = safeTextValue.replace('ź', 'ź')\r\n safeTextValue = safeTextValue.replace('Ż', 'Ż')\r\n safeTextValue = safeTextValue.replace('ż', 'ż')\r\n safeTextValue = safeTextValue.replace('Ł', 'Ł')\r\n safeTextValue = safeTextValue.replace('ł', 'ł')\r\n safeTextValue = safeTextValue.replace('Ą', 'Ą')\r\n safeTextValue = safeTextValue.replace('ą', 'ą')\r\n safeTextValue = safeTextValue.replace('Ę', 'Ę')\r\n safeTextValue = safeTextValue.replace('ę', 'ę')\r\n\r\n // Czech\r\n safeTextValue = safeTextValue.replace('Č', 'Č')\r\n safeTextValue = safeTextValue.replace('č', 'č')\r\n safeTextValue = safeTextValue.replace('Ď', 'Ď')\r\n safeTextValue = safeTextValue.replace('ď', 'ď')\r\n safeTextValue = safeTextValue.replace('Ě', 'Ě')\r\n safeTextValue = safeTextValue.replace('ě', 'ě')\r\n safeTextValue = safeTextValue.replace('Ň', 'Ň')\r\n safeTextValue = safeTextValue.replace('ň', 'ň')\r\n safeTextValue = safeTextValue.replace('Ř', 'Ř')\r\n safeTextValue = safeTextValue.replace('ř', 'ř')\r\n safeTextValue = safeTextValue.replace('Ŝ', 'Ŝ')\r\n safeTextValue = safeTextValue.replace('š', 'ŝ')\r\n safeTextValue = safeTextValue.replace('Ť', 'Ť')\r\n safeTextValue = safeTextValue.replace('ť', 'ť')\r\n safeTextValue = safeTextValue.replace('Ů', 'Ů')\r\n safeTextValue = safeTextValue.replace('ů', 'ů')\r\n safeTextValue = safeTextValue.replace('Ý', 'Ý')\r\n safeTextValue = safeTextValue.replace('ý', 'ý')\r\n safeTextValue = safeTextValue.replace('Ž', 'Ž')\r\n safeTextValue = safeTextValue.replace('ž', 'ž')\r\n\r\n return safeTextValue\r\n}\r\n","import { StockLevelLow, StockLevelNone } from \"../components/widgets/stockLevel\";\r\nimport { getI18nText } from \"./i18nService\"\r\n\r\nexport function getStockLevelString(stockLevelIndicator, microcopy) {\r\n if (stockLevelIndicator !== null && stockLevelIndicator !== undefined) {\r\n if (stockLevelIndicator === StockLevelNone) {\r\n return getI18nText(microcopy, 'productstock.outofstock')\r\n } else if (stockLevelIndicator === StockLevelLow) {\r\n return getI18nText(microcopy, 'productstock.lowstock')\r\n } else {\r\n return getI18nText(microcopy, 'productstock.instock')\r\n }\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nexport function canFulfillItemQuantity(availableStock, requestedQuantity) {\r\n return availableStock && requestedQuantity ? availableStock - requestedQuantity >= 0 : false\r\n}\r\n\r\nexport function getDaysToDespatch(leadTime) {\r\n let daysToDespatch = leadTime\r\n try {\r\n // https://docs.oracle.com/middleware/1221/wcs/tag-ref/MISC/TimeZones.html\r\n const defaultTimeZone = 'Europe/London'\r\n const { timeZone } = Intl.DateTimeFormat().resolvedOptions()\r\n const now = new Date()\r\n let selectedTimeZone = defaultTimeZone\r\n //console.log(timeZone)\r\n\r\n /*if (timeZone.startsWith('Pacific') === true) {\r\n selectedTimeZone = 'Pacific/Auckland'\r\n } else if (timeZone.startsWith('Australia') === true) {\r\n selectedTimeZone = 'Australia/Adelaide'\r\n } else if (timeZone.startsWith('America') === true) {\r\n selectedTimeZone = 'America/Los_Angeles'\r\n } else {\r\n selectedTimeZone = defaultTimeZone\r\n }*/\r\n\r\n const timeZoneDate = new Date(now.toLocaleString('en-US', { timeZone: selectedTimeZone }))\r\n daysToDespatch = timeZoneDate.getHours() < 12 ? 0 : 1\r\n } catch (error) {}\r\n\r\n return daysToDespatch\r\n}"],"names":["BasketContinueShopping","_ref","microcopy","locale","additionalClasses","onClick","productsPath","useNavigationHome","slug","useProductSlug","React","className","getI18nText","Link","to","BasketViewBasket","_ref2","basketPath","useBasketSlug","BasketCheckout","_ref3","path","useCheckoutSlug","UserContext","Consumer","_ref4","email","canCheckout","ColouredStandardButton","id","colour","rel","displayOptions","countries","useCountries","country","useContext","GeolocationContext","setNotification","NotificationsContext","responseModel","ConfiguratorContext","configuratorMicrocopyContext","ConfiguratorMicrocopyContext","showSaveConfiguration","setShowSaveConfiguration","useState","useEffect","requestId","uuid","saveConfiguration","GetCurrencyForCountry","summaryResponse","shortCode","protocol","range","numberOfStationsOrUnits","description","then","data","cannotSaveConfiguration","publishDismissableError","publishDismissableSuccess","inputName","label","errorMessage","required","options","microcopyName","onChange","disabled","selectedOptionKey","errorTextColor","LocaleContext","register","setValue","formState","errors","useFormContext","formMicrocopy","useFormI18n","defaultSelectedValue","setDefaultSelectedValue","validationObject","undefined","formName","split","fieldName","inputLabel","value","formClassName","geolocation","callingCountry","htmlFor","Form","Select","Object","assign","name","onBlur","defaultValue","map","option","_option$disabled","key","message","placeholder","pattern","patternErrorMessage","match","matchErrorMessage","getValues","validate","handleOnChange","matchesValue","type","onKeyUp","component","Component","title","isOpen","closeModal","rest","classes","setClasses","myClasses","tabIndex","role","_site$siteMetadata","_site$siteMetadata2","_site$siteMetadata2$s","image","showTitleSuffix","site","useSeoSite","metaDescription","siteMetadata","pageTitle","defaultTitle","myTitleSuffix","myPageTitle","GetSeoPageTitle","content","social","twitter","useStaticQuery","productCode","showStockLevel","stockLevelIndicator","loading","quantity","stockAmount","useProductPriceI18n","stockMicrocopy","useProductStockI18n","stock","setStock","quantityExceedsStockLevel","stockLevelText","getStockLevelString","Spinner","animation","StockLevel","text","StockLevelNone","getStockResult","productDescription","closeBasketModal","useBasketI18n","isDistributor","isAnonymousUser","boxQuantity","setParentQuantity","displayQuantity","requestQuote","isMobile","overrideAddProductToBasketCallback","price","eventApi","DataLayerContext","language","LanguageContext","clearNotifications","basketId","basketCurrency","setBasket","BasketContext","accountNumber","setQuantity","inputsDisabled","setInputsDisabled","addToBasketModalOpen","setAddToBasketModalOpen","productMicrocopy","useProductI18n","basketMicrocopy","addToBasketClasses","setAddToBasketClasses","eventModelToPublish","setEventModelToPublish","closeAddToBasketModal","addProduct","myAddProduct","BasketContextBrowsing","addProductToBasket","totalPrice","parseFloat","buildAddToBasketEvent","Array","isArray","series","sku","position","brand","category","error","basket","items","length","erroredType","errored","index","item","changeQuantity","catch","err","publishAddToBasketEvent","basketFeatureAvailable","basketIsReadonly","NumberInput","step","maxValue","MaxBasketItemQuantity","BaseModal","AddToBasketModal","openRequestAQuoteCallback","linkPath","buildUrl","useDistributorsNavigation","product","showLoginForPrice","LoginForPriceContent","showRequestAQuote","RequestAQuoteContent","ListPriceContent","IsFallbackMessageContent","NetPriceContent","showFindDistributor","FindADistributorButton","RequestAQuoteButton","showListPrice","DisplayPriceAsString","currency","priceModel","listPrice","amount","_ref5","showIsFallbackMessage","_ref6","showNetPrice","PricingTiersTableRow","minimumQuantityValue","tier","pricingTiers","minimumQuantity","savingPercentageFrom100","showPricingTiers","element","leadTime","leadTimeSource","stockOnHand","deliveryOnRequest","exceptionalDemandQuantity","estimatedDespatchDate","setEstimatedDespatchDate","isExceptionalDemandQuantity","setIsExceptionalDemandQuantity","daysToDespatch","canFulfillItemQuantity","getDaysToDespatch","edQuantity","formatDate","addWorkingDaysToCurrentDate","EstimatedDelivery","DeliveryOnRequest","NoDeliveryEstimateAvailable","ProductDeliveryDate","stockModel","calculateDaysToDespatch","showDeliveryDate","showDeliveryOnRequest","isConfigurator","ConfiguratorProductDeliveryDate","configuratorMicrocopy","useConfiguratorI18n","configuratorContext","location","useLocation","showDiscardConfiguration","removedAllQueryStringsPath","removeQueryParamFromLocationPath","navigate","startConfigurator","configuratorType","discardConfiguration","quantityPrice","isNaN","partNumber","setPartNumber","setProductDescription","showActions","setShowActions","_data$pimData","pimData","replaceHtmlEntityWithCharacter","_product$priceModel$i","_product$priceModel","RequestAQuotePanelDownloads","cadfilestep","href","target","brochure","technicalspecs","software","installationandmaintenanceinstructionspdf","ProductSidebox","_contentfulProductDat","setQuantityCallback","overrideAddToBasketCallback","contentfulProductData","myOnScrollRef","useRef","myOnResizeRef","myOnPageLoadRef","isIE","setIsIE","isRange","israngesku","classNames","priceContainer","headerHeight","originalPriceTopOffset","msie","window","navigator","userAgent","indexOf","useOnPageLoad","document","querySelector","classList","remove","clientHeight","offset","top","useOnScroll","windowWidth","innerWidth","contains","floatingBasket","useOnResize","setHeaderHeight","setContainerOffset","ProductSideboxLoadingContent","RequestAQuotePanel","ProductSideboxPricingContent","setQuantityPrice","toFixed","calculateAndSetQuantityPrice","ProductPrice","PricingTiersTable","ProductStock","showStockLevelIndicator","DeliveryDate","QuantityPrice","AddToBasket","DiscardConfiguration","SaveConfiguration","icon","onClickCallback","children","DisplayPrice","priceKey","getCurrencySymbol","formatDecimalString","DisplayDeliveryPrice","DisplayPriceWithoutKey","formId","submitRef","isSubmitSuccessful","watch","watchSubscription","linkClasses","linkDomain","linkId","linkUrl","linkText","current","form","formAction","extractDomain","found","findInFormByName","previousSibling","textContent","eventId","eventModel","buildFormStartEvent","unsubscribe","buildFormSubmissionEvent","publishFormStartEvent","publishFormSubmissionEvent","minValue","Number","MAX_SAFE_INTEGER","updating","inputValue","setInputValue","OnValueBlur","e","valueIsBetweenMinAndMax","quantityRoundedToBoxQuantity","Math","round","newQuantity","min","max","event","ColouredSubmitButton","refCallback","ref","StockLevelLow","StockLevelHigh","ConfiguratorMicrocopyProvider","Provider","resolveMicrocopyFromResourcesQueryResultForLocale","useRequestQuoteI18n","resolveSlugsFromResourcesQueryResultForLocale","useCountriesForFormsDictionary","nodes","resolveNodesFromResourcesQueryResultForLocale","countriesObjects","node","push","alpha2Code","days","fromDate","Date","count","setDate","getDate","getDay","basketContainer","originalBasketTopOffset","isAccordionOpen","floatingEndPoint","topOfFloatingEndPoint","maxY","offsetHeight","basketTopOffset","y","scrollingElement","scrollTop","abs","add","parentNode","offsetTop","container","elt","rect","getBoundingClientRect","bodyElt","body","left","scrollLeft","date","toLocaleDateString","formatTime","toLocaleTimeString","numberString","minimumFractionDigits","maximumFractionDigits","toLocaleString","formatNumberString","includes","decimalLength","parseInt","formatIntString","extractTextValue","htmlEntityToCharacter","replaceCharacterWithUnicodeCode","characterToUnicodeCode","characterHelperCallback","textValue","console","log","safeTextValue","replace","availableStock","requestedQuantity","defaultTimeZone","timeZone","Intl","DateTimeFormat","resolvedOptions","now","selectedTimeZone","getHours"],"sourceRoot":""}