;\r\n}\r\n\r\nexport const MegaMenuListMobile = ({\r\n container,\r\n level,\r\n name,\r\n columnList = [],\r\n i18n,\r\n}: MegaMenuListMobileProps) => {\r\n let count = 0;\r\n\r\n const renderMenuItem = (item: ColumnsListItem, index: number, backID: string) => {\r\n const hasSubCategory = hasProperty(item, 'NoSubCategory') && !item.NoSubCategory;\r\n\r\n count++;\r\n\r\n if (!hasSubCategory) {\r\n const link = item.UrlSegment || ('HeaderPage' in item && item.HeaderPage) || '';\r\n\r\n return (\r\n window.location.replace(link)}\r\n data-mobile-menus-id={count}\r\n >\r\n {('Name' in item && item.Name) || item.Title || ''} \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n {level == 1 ? (\r\n \r\n {(columnList as ColumnsListItem[]).map((item: ColumnsListItem, index: number) =>\r\n renderMenuItem(item, index, `mobile-mm-${container}-${level}-1`)\r\n )}\r\n \r\n ) : (\r\n (columnList as ColumnsListItem[][]).map((list, index) => {\r\n const id = `mobile-mm-${container}-${level}-${index + 1}`;\r\n return (\r\n \r\n {list?.map((item, index) => renderMenuItem(item, index, id))}\r\n \r\n );\r\n })\r\n )}\r\n
\r\n );\r\n};\r\n","import { hasProperty } from '@helpers/objectHelpers';\r\nimport { ColumnsListItem, MegaMenuColumn } from '../MegaMenu.types';\r\n\r\nconst filterColumnList = (el: ColumnsListItem, level: number) => {\r\n const column = [];\r\n\r\n switch (level) {\r\n case 4: {\r\n if ('Children' in el && el.Children?.length > 0 && hasProperty(el, 'NoSubCategory')) {\r\n column.push(el.Children);\r\n } else {\r\n column.push([]);\r\n }\r\n break;\r\n }\r\n default: {\r\n if (el.NoSubCategory) {\r\n column.push([el] as MegaMenuColumn[]);\r\n } else if ('ColumnAndSection' in el && el.ColumnAndSection?.length > 0) {\r\n column.push(el.ColumnAndSection);\r\n } else if ('Sections' in el && el.Sections?.length > 0) {\r\n column.push(el.Sections);\r\n } else if ('Children' in el && el.Children?.length > 0) {\r\n column.push(el.Children);\r\n } else {\r\n column.push([]);\r\n }\r\n }\r\n }\r\n return column;\r\n};\r\n\r\nexport const renderOtherColumn = (\r\n columnData: ColumnsListItem[] | ColumnsListItem[][],\r\n level: number\r\n) => {\r\n const column: ColumnsListItem[] | ColumnsListItem[][] = [];\r\n if (columnData) {\r\n columnData.forEach((el) => {\r\n if (level === 2) {\r\n const data = filterColumnList(el, level);\r\n column.push(...data);\r\n } else if (Array.isArray(el)) {\r\n el.forEach((element) => {\r\n const data = filterColumnList(element, level);\r\n column.push(...data);\r\n });\r\n }\r\n });\r\n }\r\n return column;\r\n};\r\n","import React from 'react';\r\nimport { MegaMenuListMobile } from '../MegaMenuListMobile';\r\nimport { renderOtherColumn } from '../../../helpers/columnDataUtils';\r\nimport {\r\n MegaMenuNavigationItem,\r\n MegaMenuColumn,\r\n ColumnsListItem,\r\n} from '@layouts/MegaMenu/MegaMenu.types';\r\n\r\ninterface MegaMenuColumnMobileProps {\r\n nav: MegaMenuNavigationItem;\r\n i18n: Record;\r\n columnData?: MegaMenuColumn[];\r\n}\r\n\r\nexport const MegaMenuColumnMobile = ({ columnData = [], nav, i18n }: MegaMenuColumnMobileProps) => {\r\n const levelRender = (columnList: ColumnsListItem[] | ColumnsListItem[][], level: number) => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n const level2 = renderOtherColumn(columnData, 2);\r\n const level3 = renderOtherColumn(level2, 3);\r\n const level4 = renderOtherColumn(level3, 4);\r\n return (\r\n \r\n {levelRender(columnData, 1)}\r\n {levelRender(level2, 2)}\r\n {levelRender(level3, 3)}\r\n {levelRender(level4, 4)}\r\n
\r\n );\r\n};\r\n","import React from 'react';\r\nimport { LanguageSelect } from '@components/LanguageSelect';\r\nimport { Language } from '@type/common';\r\nimport './LanguageSelector.scss';\r\n\r\ninterface LanguageSelectorProps {\r\n languages: Language[];\r\n}\r\n\r\nexport const LanguageSelectorMobile = ({ languages }: LanguageSelectorProps) => {\r\n const currentLanguageTitle = () => {\r\n const lang = languages?.filter((i) => i.LanguageCode == window.lang);\r\n if (lang.length > 0) {\r\n return lang[0].Name;\r\n } else {\r\n return languages[0].Name;\r\n }\r\n };\r\n\r\n const languageTitle = currentLanguageTitle();\r\n\r\n const select = (item: Language) => {\r\n window.location.href = item.Href;\r\n };\r\n\r\n return (\r\n \r\n select(item)}\r\n />\r\n
\r\n );\r\n};\r\n","function _classPrivateFieldGet(receiver, privateMap) {\n var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"get\");\n return _classApplyDescriptorGet(receiver, descriptor);\n}\nfunction _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\");\n _classApplyDescriptorSet(receiver, descriptor, value);\n return value;\n}\nfunction _classExtractFieldDescriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n }\n return privateMap.get(receiver);\n}\nfunction _classApplyDescriptorGet(receiver, descriptor) {\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n return descriptor.value;\n}\nfunction _classApplyDescriptorSet(receiver, descriptor, value) {\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n descriptor.value = value;\n }\n}\nfunction _classPrivateMethodGet(receiver, privateSet, fn) {\n if (!privateSet.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return fn;\n}\nfunction _checkPrivateRedeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) {\n _checkPrivateRedeclaration(obj, privateMap);\n privateMap.set(obj, value);\n}\nfunction _classPrivateMethodInitSpec(obj, privateSet) {\n _checkPrivateRedeclaration(obj, privateSet);\n privateSet.add(obj);\n}\n\nvar list = [\n\t\" daum[ /]\",\n\t\" deusu/\",\n\t\" yadirectfetcher\",\n\t\"(?:^| )site\",\n\t\"(?:^|[^g])news\",\n\t\"@[a-z]\",\n\t\"\\\\(at\\\\)[a-z]\",\n\t\"\\\\(github\\\\.com/\",\n\t\"\\\\[at\\\\][a-z]\",\n\t\"^12345\",\n\t\"^<\",\n\t\"^[\\\\w \\\\.\\\\-\\\\(\\\\)]+(/v?\\\\d+(\\\\.\\\\d+)?(\\\\.\\\\d{1,10})?)?$\",\n\t\"^[^ ]{50,}$\",\n\t\"^active\",\n\t\"^ad muncher\",\n\t\"^amaya\",\n\t\"^anglesharp/\",\n\t\"^anonymous\",\n\t\"^avsdevicesdk/\",\n\t\"^axios/\",\n\t\"^bidtellect/\",\n\t\"^biglotron\",\n\t\"^btwebclient/\",\n\t\"^castro\",\n\t\"^clamav[ /]\",\n\t\"^client/\",\n\t\"^cobweb/\",\n\t\"^coccoc\",\n\t\"^custom\",\n\t\"^ddg[_-]android\",\n\t\"^discourse\",\n\t\"^dispatch/\\\\d\",\n\t\"^downcast/\",\n\t\"^duckduckgo\",\n\t\"^facebook\",\n\t\"^fdm[ /]\\\\d\",\n\t\"^getright/\",\n\t\"^gozilla/\",\n\t\"^hatena\",\n\t\"^hobbit\",\n\t\"^hotzonu\",\n\t\"^hwcdn/\",\n\t\"^jeode/\",\n\t\"^jetty/\",\n\t\"^jigsaw\",\n\t\"^linkdex\",\n\t\"^lwp[-: ]\",\n\t\"^metauri\",\n\t\"^microsoft bits\",\n\t\"^movabletype\",\n\t\"^mozilla/\\\\d\\\\.\\\\d \\\\(compatible;?\\\\)$\",\n\t\"^mozilla/\\\\d\\\\.\\\\d \\\\w*$\",\n\t\"^navermailapp\",\n\t\"^netsurf\",\n\t\"^offline explorer\",\n\t\"^php\",\n\t\"^postman\",\n\t\"^postrank\",\n\t\"^python\",\n\t\"^read\",\n\t\"^reed\",\n\t\"^restsharp/\",\n\t\"^snapchat\",\n\t\"^space bison\",\n\t\"^svn\",\n\t\"^swcd \",\n\t\"^taringa\",\n\t\"^test certificate info\",\n\t\"^thumbor/\",\n\t\"^tumblr/\",\n\t\"^user-agent:mozilla\",\n\t\"^valid\",\n\t\"^venus/fedoraplanet\",\n\t\"^w3c\",\n\t\"^webbandit/\",\n\t\"^webcopier\",\n\t\"^wget\",\n\t\"^whatsapp\",\n\t\"^xenu link sleuth\",\n\t\"^yahoo\",\n\t\"^yandex\",\n\t\"^zdm/\\\\d\",\n\t\"^zoom marketplace/\",\n\t\"^{{.*}}$\",\n\t\"adbeat\\\\.com\",\n\t\"appinsights\",\n\t\"archive\",\n\t\"ask jeeves/teoma\",\n\t\"bit\\\\.ly/\",\n\t\"bluecoat drtr\",\n\t\"bot\",\n\t\"browsex\",\n\t\"burpcollaborator\",\n\t\"capture\",\n\t\"catch\",\n\t\"check\",\n\t\"chrome-lighthouse\",\n\t\"chromeframe\",\n\t\"cloud\",\n\t\"crawl\",\n\t\"cryptoapi\",\n\t\"dareboost\",\n\t\"datanyze\",\n\t\"dataprovider\",\n\t\"dejaclick\",\n\t\"dmbrowser\",\n\t\"download\",\n\t\"evc-batch/\",\n\t\"feed\",\n\t\"firephp\",\n\t\"freesafeip\",\n\t\"ghost\",\n\t\"gomezagent\",\n\t\"google\",\n\t\"headlesschrome/\",\n\t\"http\",\n\t\"httrack\",\n\t\"hubspot marketing grader\",\n\t\"hydra\",\n\t\"ibisbrowser\",\n\t\"images\",\n\t\"iplabel\",\n\t\"ips-agent\",\n\t\"java\",\n\t\"library\",\n\t\"mail\\\\.ru/\",\n\t\"manager\",\n\t\"monitor\",\n\t\"morningscore/\",\n\t\"neustar wpm\",\n\t\"nutch\",\n\t\"offbyone\",\n\t\"optimize\",\n\t\"pageburst\",\n\t\"pagespeed\",\n\t\"perl\",\n\t\"phantom\",\n\t\"pingdom\",\n\t\"powermarks\",\n\t\"preview\",\n\t\"proxy\",\n\t\"ptst[ /]\\\\d\",\n\t\"reader\",\n\t\"rexx;\",\n\t\"rigor\",\n\t\"rss\",\n\t\"scan\",\n\t\"scrape\",\n\t\"search\",\n\t\"serp ?reputation ?management\",\n\t\"server\",\n\t\"sogou\",\n\t\"sparkler/\",\n\t\"speedcurve\",\n\t\"spider\",\n\t\"statuscake\",\n\t\"stumbleupon\\\\.com\",\n\t\"supercleaner\",\n\t\"synapse\",\n\t\"synthetic\",\n\t\"taginspector/\",\n\t\"torrent\",\n\t\"tracemyfile\",\n\t\"transcoder\",\n\t\"trendsmapresolver\",\n\t\"twingly recon\",\n\t\"url\",\n\t\"virtuoso\",\n\t\"wappalyzer\",\n\t\"webglance\",\n\t\"webkit2png\",\n\t\"websitemetadataretriever\",\n\t\"whatcms/\",\n\t\"wordpress\",\n\t\"zgrab\"\n];\n\n/**\n * Mutate given list of patter strings\n * @param {string[]} list\n * @returns {string[]}\n */\nfunction amend(list) {\n try {\n // Risk: Uses lookbehind assertion, avoid breakage in parsing by using RegExp constructor\n new RegExp('(? {\n let [search, replace] = _ref;\n const index = list.lastIndexOf(search);\n if (~index) {\n list.splice(index, 1, replace);\n }\n });\n return list;\n}\n\namend(list);\nconst flags = 'i';\n\n/**\n * Test user agents for matching patterns\n */\nvar _list = /*#__PURE__*/new WeakMap();\nvar _pattern = /*#__PURE__*/new WeakMap();\nvar _update = /*#__PURE__*/new WeakSet();\nvar _index = /*#__PURE__*/new WeakSet();\nclass Isbot {\n constructor(patterns) {\n /**\n * Find the first index of an existing rule or -1 if not found\n * @param {string} rule\n * @returns {number}\n */\n _classPrivateMethodInitSpec(this, _index);\n /**\n * Recreate the pattern from rules list\n */\n _classPrivateMethodInitSpec(this, _update);\n /**\n * @type {string[]}\n */\n _classPrivateFieldInitSpec(this, _list, {\n writable: true,\n value: void 0\n });\n /**\n * @type {RegExp}\n */\n _classPrivateFieldInitSpec(this, _pattern, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldSet(this, _list, patterns || list.slice());\n _classPrivateMethodGet(this, _update, _update2).call(this);\n const isbot = ua => this.test(ua);\n return Object.defineProperties(isbot, Object.entries(Object.getOwnPropertyDescriptors(Isbot.prototype)).reduce((accumulator, _ref) => {\n let [prop, descriptor] = _ref;\n if (typeof descriptor.value === 'function') {\n Object.assign(accumulator, {\n [prop]: {\n value: this[prop].bind(this)\n }\n });\n }\n if (typeof descriptor.get === 'function') {\n Object.assign(accumulator, {\n [prop]: {\n get: () => this[prop]\n }\n });\n }\n return accumulator;\n }, {}));\n }\n /**\n * Get a clone of the pattern\n * @type RegExp\n */\n get pattern() {\n return new RegExp(_classPrivateFieldGet(this, _pattern));\n }\n\n /**\n * Match given string against out pattern\n * @param {string} ua User Agent string\n * @returns {boolean}\n */\n test(ua) {\n return Boolean(ua) && _classPrivateFieldGet(this, _pattern).test(ua);\n }\n\n /**\n * Get the match for strings' known crawler pattern\n * @param {string} ua User Agent string\n * @returns {string|null}\n */\n find() {\n let ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n const match = ua.match(_classPrivateFieldGet(this, _pattern));\n return match && match[0];\n }\n\n /**\n * Get the patterns that match user agent string if any\n * @param {string} ua User Agent string\n * @returns {string[]}\n */\n matches() {\n let ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return _classPrivateFieldGet(this, _list).filter(entry => new RegExp(entry, flags).test(ua));\n }\n\n /**\n * Clear all patterns that match user agent\n * @param {string} ua User Agent string\n * @returns {void}\n */\n clear() {\n let ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n this.exclude(this.matches(ua));\n }\n\n /**\n * Extent patterns for known crawlers\n * @param {string[]} filters\n * @returns {void}\n */\n extend() {\n let filters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n [].push.apply(_classPrivateFieldGet(this, _list), filters.filter(rule => _classPrivateMethodGet(this, _index, _index2).call(this, rule) === -1).map(filter => filter.toLowerCase()));\n _classPrivateMethodGet(this, _update, _update2).call(this);\n }\n\n /**\n * Exclude patterns from bot pattern rule\n * @param {string[]} filters\n * @returns {void}\n */\n exclude() {\n let filters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let {\n length\n } = filters;\n while (length--) {\n const index = _classPrivateMethodGet(this, _index, _index2).call(this, filters[length]);\n if (index > -1) {\n _classPrivateFieldGet(this, _list).splice(index, 1);\n }\n }\n _classPrivateMethodGet(this, _update, _update2).call(this);\n }\n\n /**\n * Create a new Isbot instance using given list or self's list\n * @param {string[]} [list]\n * @returns {Isbot}\n */\n spawn(list) {\n return new Isbot(list || _classPrivateFieldGet(this, _list));\n }\n}\nfunction _update2() {\n _classPrivateFieldSet(this, _pattern, new RegExp(_classPrivateFieldGet(this, _list).join('|'), flags));\n}\nfunction _index2(rule) {\n return _classPrivateFieldGet(this, _list).indexOf(rule.toLowerCase());\n}\n\nconst isbot = new Isbot();\n\nexport { isbot as default };\n//# sourceMappingURL=index.mjs.map\n","import { MegaMenuNavigationItem } from '@layouts/MegaMenu/MegaMenu.types';\r\nimport React from 'react';\r\nimport { getPathLink } from './MobileNavigationList.utils';\r\n\r\ninterface MobileNavigationListProps {\r\n navigation?: MegaMenuNavigationItem[];\r\n contact: {\r\n Text: string;\r\n Href: string;\r\n };\r\n}\r\n\r\nexport const MobileNavigationList = ({ navigation = [], contact }: MobileNavigationListProps) => {\r\n const pathLink = getPathLink();\r\n const hasNavigationList = navigation.length > 0;\r\n\r\n const addToMegaMenu = (index: string) => {\r\n window.localStorage.setItem('menuContainerLink', index);\r\n const el = document.getElementById(`mobile-mm-${index}-1-1`);\r\n if (el) {\r\n el.classList.remove('move-from-right');\r\n el.classList.remove('hidden');\r\n el.classList.add('move-from-left');\r\n }\r\n };\r\n\r\n const onNavItemClick = (nav: MegaMenuNavigationItem) => {\r\n if (nav.NoSubCategory) {\r\n window.localStorage.setItem('menuContainerLink', nav.ContainerLink);\r\n window.location.href = nav.UrlSegment;\r\n } else {\r\n addToMegaMenu(nav.ContainerLink);\r\n }\r\n };\r\n\r\n if (!hasNavigationList) return null;\r\n\r\n return (\r\n <>\r\n {navigation.map((nav, index) => (\r\n onNavItemClick(nav)} key={index} className='l-header-mobile-menu-item'>\r\n {nav.Name} \r\n {!nav.NoSubCategory && }\r\n \r\n ))}\r\n {\r\n window.localStorage.setItem('menuContainerLink', '');\r\n window.location.href = pathLink + contact.Href;\r\n }}\r\n className='l-header-mobile-menu-item'\r\n >\r\n {contact.Text}\r\n \r\n >\r\n );\r\n};\r\n","export const getPathLink = () => {\r\n let pathLink = '';\r\n\r\n if (document.getElementsByTagName('html')[0].getAttribute('lang') === 'nl') {\r\n pathLink = '/nl/';\r\n } else if (\r\n document.getElementsByTagName('html')[0].getAttribute('lang') === 'fr-BE'\r\n ) {\r\n pathLink = '/fr-be/';\r\n } else if (\r\n document.getElementsByTagName('html')[0].getAttribute('lang') === 'fr-CA'\r\n ) {\r\n pathLink = '/fr-ca/';\r\n } else {\r\n pathLink = '/';\r\n }\r\n return pathLink;\r\n};\r\n","import React from 'react';\r\nimport { IconContainer, ExternalLink } from '@icons/common';\r\nimport { Button } from '@components/Button';\r\nimport { SignInLinkInformation } from '@layouts/Header/Header.types';\r\nimport dataLayer from '@helpers/dataLayer';\r\nimport './SignInDropdown.scss';\r\nimport { productShopUrl } from '@helpers/consts';\r\n\r\ninterface SignInDropdownProps {\r\n signInInformation?: string;\r\n links?: SignInLinkInformation[];\r\n}\r\n\r\nexport const SignInDropdown = ({ signInInformation, links }: SignInDropdownProps) => {\r\n\r\n const handleDatalayerPush = (linkText: string, linkUrl: string) => {\r\n dataLayer.push('exit_link', {\r\n link_text: linkText,\r\n link_url: linkUrl,\r\n });\r\n }\r\n return (\r\n <>\r\n
\r\n \r\n {links.map((item, index) => (\r\n handleDatalayerPush(item.Text, item.Url)}\r\n key={index}\r\n className='c-sign-in-dropdown-button'\r\n text={item.Text}\r\n size='small'\r\n color='primary'\r\n href={item.Url}\r\n //Story 365068 - Added new attribute i.e referrerpolicy=\"unsafe-url\" if item.Url contains shop.alfalaval.com\r\n {...(item.Url?.includes(productShopUrl) && { referrerPolicy: 'unsafe-url' })}\r\n >\r\n } className='svg-icon icon-sign-in' />\r\n \r\n ))}\r\n
\r\n >\r\n );\r\n};\r\n","import React, { MouseEvent } from 'react';\r\n\r\ninterface CountrySelectorFooterProps {\r\n footerLink: string;\r\n footerText: string;\r\n footerLinkHref: string;\r\n RedirectedIntro: string;\r\n RemoveSettingsText: string;\r\n}\r\n\r\nexport const CountrySelectorFooter = ({\r\n footerLink,\r\n footerText,\r\n footerLinkHref,\r\n RedirectedIntro,\r\n RemoveSettingsText,\r\n}: CountrySelectorFooterProps) => {\r\n const isCommertialSiteHomePage = () => {\r\n const site = window.location.href;\r\n if (\r\n site == 'https://www.alfalaval.com' ||\r\n site == 'https://www.alfalaval.com/' ||\r\n site == 'https://alfalaval.com' ||\r\n site == 'https://alfalaval.com/' ||\r\n site == 'https://www.alfalaval.com/?remove-preferred-site=true'\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const isThisSiteIsPreferedSiteAndCommertialSite = () => {\r\n if (\r\n window.localStorage.getItem('preferred-site') == 'https://www.alfalaval.com/' &&\r\n isCommertialSiteHomePage()\r\n ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n const removeSettings = (e: MouseEvent) => {\r\n e.preventDefault();\r\n window.localStorage.removeItem('preferred-site');\r\n document.location.href =\r\n (e.target as HTMLAnchorElement).href + '?remove-preferred-site=' + true;\r\n };\r\n\r\n const displayGeolocationForLocalSite = () => {\r\n if (window.localStorage.getItem('preferred-site') != null) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n return (\r\n \r\n {footerText}
{footerLink} \r\n {displayGeolocationForLocalSite() && !isThisSiteIsPreferedSiteAndCommertialSite() && (\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n","import React, { useState } from 'react';\r\nimport { CloseButton } from '@components/CloseButton';\r\nimport { CountrySelectorFooter } from './CountrySelectorFooter';\r\nimport classNames from 'classnames';\r\n\r\ninterface Link {\r\n Text: string;\r\n Href: string;\r\n Target: string | null;\r\n PageId: number;\r\n}\r\n\r\ninterface MobileListProps {\r\n title: string;\r\n countries: Array<{\r\n Text: string;\r\n Href: string;\r\n }>;\r\n countrySelectList: {\r\n ContactUsPageLink: Link;\r\n I18n: Record;\r\n RedirectedIntro: string;\r\n RemoveSettingsText: string;\r\n };\r\n}\r\n\r\nexport const MobileList = ({ countries, title, countrySelectList }: MobileListProps) => {\r\n const [isCountrySelector, setIsCountrySelector] = useState(false);\r\n\r\n const selectCountryMobile = (e) => {\r\n document.location.href = e.target.value;\r\n };\r\n\r\n const openCountrySelector = () => {\r\n setIsCountrySelector(true);\r\n };\r\n\r\n const closeCountrySelector = () => {\r\n setIsCountrySelector(false);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {isCountrySelector && (
)}\r\n
{title}
\r\n
\r\n
\r\n
{window.lang.toUpperCase()}
\r\n
\r\n
\r\n
\r\n {isCountrySelector && (\r\n \r\n
\r\n {title}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n )}\r\n >\r\n );\r\n};\r\n","import React, { MouseEvent } from 'react';\r\n\r\ninterface DesktopListProps {\r\n countries: Array<{\r\n Text: string;\r\n Href: string;\r\n }>;\r\n}\r\n\r\nexport const DesktopList = ({ countries }: DesktopListProps) => {\r\n const selectCountry = (e: MouseEvent) => {\r\n e.preventDefault();\r\n const url = new URL(e.currentTarget.attributes.getNamedItem('href').value);\r\n document.location.href = url.href;\r\n };\r\n\r\n const generateDesktopList = (array: typeof countries) => {\r\n const columns = 4;\r\n const temparray = [];\r\n const newArray = [];\r\n\r\n // Put all countries inside li\r\n array.forEach((element) => {\r\n temparray.push(\r\n \r\n \r\n {element.Text}\r\n \r\n \r\n );\r\n });\r\n\r\n const temparraylength = temparray.length;\r\n const columnsLength = Math.ceil(temparraylength / columns);\r\n\r\n // Split array and put all li inside ui\r\n for (let i = 0; i < temparraylength; i += columnsLength) {\r\n const column = temparray.slice(i, i + columnsLength);\r\n newArray.push(\r\n \r\n );\r\n }\r\n return newArray;\r\n };\r\n\r\n return (\r\n \r\n {countries && generateDesktopList(countries)}\r\n
\r\n );\r\n};\r\n","import { apiSlice } from '@services/apiSlice';\r\nimport { CountrySelector as endpoints } from '@services/endpoints';\r\nimport { CounstrySelectorData } from './CountrySelector.types';\r\n\r\n\r\nconst countrySelectorApi = apiSlice.injectEndpoints({\r\n endpoints: (build) => ({\r\n fetchCountrySelectList: build.query({\r\n query: () => ({\r\n url: endpoints.fetchCountrySelectList,\r\n params: { language: window.lang, pageId: window.pageId }\r\n }),\r\n }),\r\n }),\r\n overrideExisting: false,\r\n})\r\n\r\nexport const { useFetchCountrySelectListQuery } = countrySelectorApi;","import React from 'react';\r\nimport { MobileList } from './components/MobileList';\r\nimport { DesktopList } from './components/DesktopList';\r\nimport { CountrySelectorFooter } from './components/CountrySelectorFooter';\r\nimport { CloseButton } from '@components/CloseButton';\r\nimport { useFetchCountrySelectListQuery } from './CountrySelector.service';\r\nimport { useWinSize } from '@contexts/WinSizeContext';\r\nimport './CountrySelector.scss';\r\n\r\ninterface CountrySelectorProps {\r\n handleCloseDropdown?: () => void;\r\n}\r\n\r\nconst CountrySelector = ({ handleCloseDropdown }: CountrySelectorProps) => {\r\n const { data: countrySelectList } = useFetchCountrySelectListQuery();\r\n const { isDesktopForHeader: isDesktop } = useWinSize();\r\n const { isMobileForHeader: isMobileScreen } = useWinSize();\r\n const isMobile = !isDesktop;\r\n\r\n if (!countrySelectList) return null;\r\n\r\n return (\r\n <>\r\n {isMobile || isMobileScreen ? (\r\n \r\n ) : (\r\n \r\n
\r\n
{countrySelectList.Header}
\r\n
\r\n
\r\n
{countrySelectList.Introduction}
\r\n {countrySelectList && countrySelectList.I18n && (\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 CountrySelector;\r\n","import React from 'react';\r\nimport { MegaMenuColumnMobile } from './components/mobile/MegaMenuColumnMobile';\r\nimport { LanguageSelectorMobile } from './components/common/LanguageSelector';\r\nimport { isWebCrawler } from '@helpers/isWebCrawler';\r\nimport './MainNavigationMobileNew.scss';\r\nimport { MobileNavigationList } from './components/mobile/MobileNavigationList';\r\nimport { SignInLinkInformation, TopMenu } from '@layouts/Header/Header.types';\r\nimport { MegaMenuNavigationItem, MegaMenuSegment } from './MegaMenu.types';\r\nimport { SignInDropdown } from '@components/SignInDropdown';\r\nimport { CountrySelector } from '@layouts/CountrySelector';\r\nimport { productShopUrl } from '@helpers/consts';\r\n\r\ninterface MainNavigationMobileNewProps {\r\n topMenu: TopMenu;\r\n navigation: MegaMenuNavigationItem[];\r\n contact: {\r\n Text: string;\r\n Href: string;\r\n };\r\n showing: boolean;\r\n columns: {\r\n [key: string]: MegaMenuSegment;\r\n };\r\n i18n: Record;\r\n signInInformation?: string;\r\n showHideSignIn?: boolean;\r\n links?: SignInLinkInformation[];\r\n}\r\n\r\nconst MainNavigationMobileNew = ({\r\n topMenu,\r\n navigation,\r\n contact,\r\n showing,\r\n columns,\r\n i18n,\r\n showHideSignIn,\r\n signInInformation,\r\n links,\r\n}: MainNavigationMobileNewProps) => {\r\n const pageIsCrawled = isWebCrawler();\r\n\r\n return pageIsCrawled || showing ? (\r\n \r\n \r\n {navigation?.map(\r\n (nav, index) =>\r\n !nav.NoSubCategory && (\r\n \r\n )\r\n )}\r\n
\r\n ) : null;\r\n};\r\n\r\nexport default MainNavigationMobileNew;\r\n","import isbot from 'isbot';\r\n\r\nexport const isWebCrawler = (): boolean => {\r\n return isbot(navigator.userAgent);\r\n};\r\n","import { useEffect, useState } from 'react';\r\nimport { throttle } from '@helpers/waitFunctions';\r\n\r\nconst getStickyCss = () => {\r\n return `l-header-sticky offset-top ${window.scrollY >= 54 ? 'hide-top-bar' : ''}`;\r\n};\r\n\r\nexport const useStickyHeader = (hasBreadcrumb: boolean, lite: boolean) => {\r\n const cls = lite ? 'l-header-lite-sticky offset-top hide-top-bar' : 'l-header-sticky offset-top';\r\n const [stickyCss, setStickyCss] = useState(cls);\r\n\r\n const handleStickyInPageNavigation = () => {\r\n const header = document.querySelector('.l-header');\r\n const navElement: HTMLDivElement = document.querySelector('.c-in-page-nav');\r\n const navList = navElement && navElement.querySelector('.c-in-page-nav-list');\r\n const { height: headerHeight } = header.getBoundingClientRect();\r\n const hasNavElement = !!(navList && navList.childElementCount > 0);\r\n const moveInPageNav = window.pageType !== 'SearchPage';\r\n\r\n // Logic to control inPageNavigation visibility\r\n if (headerHeight && hasNavElement && navElement.style.visibility !== 'visible') {\r\n if (moveInPageNav) {\r\n header.appendChild(navElement);\r\n }\r\n navElement.classList.add('visible');\r\n }\r\n };\r\n\r\n function setHeaderHeightForScroll() {\r\n const root = document.documentElement;\r\n const headerHeight = (document.querySelector('.l-header') as HTMLElement).offsetHeight;\r\n root.style.setProperty('--header-height-for-scroll', headerHeight + 'px');\r\n }\r\n\r\n const handleScroll = () => {\r\n const newStickyCss = getStickyCss();\r\n if (stickyCss !== newStickyCss) {\r\n setStickyCss(newStickyCss);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n handleScroll();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!lite) {\r\n handleStickyInPageNavigation();\r\n }\r\n\r\n const barElement = document.getElementById('l-header-sticky-wrapper');\r\n\r\n if (barElement) {\r\n if (hasBreadcrumb) {\r\n barElement.classList.add('l-header-conditional-sticky-wrapper');\r\n } else {\r\n barElement.classList.remove('l-header-conditional-sticky-wrapper');\r\n }\r\n }\r\n }, [hasBreadcrumb]);\r\n\r\n useEffect(() => {\r\n setHeaderHeightForScroll();\r\n\r\n const throttledScroll = throttle(handleScroll, 300);\r\n const throttledHandleInPageNav = throttle(handleStickyInPageNavigation, 300);\r\n const throttledSetHeaderHeightForScroll = throttle(setHeaderHeightForScroll, 1000);\r\n\r\n window.addEventListener('resize', throttledSetHeaderHeightForScroll);\r\n window.addEventListener('scroll', throttledScroll);\r\n if (!lite) {\r\n window.addEventListener('resize', throttledHandleInPageNav);\r\n }\r\n\r\n return () => {\r\n window.removeEventListener('resize', throttledSetHeaderHeightForScroll);\r\n window.removeEventListener('scroll', throttledScroll);\r\n if (!lite) {\r\n window.removeEventListener('resize', throttledHandleInPageNav);\r\n }\r\n };\r\n }, []);\r\n\r\n return { stickyCss, handleScroll };\r\n};\r\n","import { useEffect, useRef } from 'react';\r\n\r\nexport const useBreadcrumbsSizeChange = (breadcrumbRef) => {\r\n const resizeObserver = useRef(null);\r\n\r\n const fixScrollingHeight = (headerHeight: number) => {\r\n // when transitioning from normal header to sticky header - scrolling will be incorrect if we dont set up header height\r\n const headerEl: HTMLDivElement = document.querySelector('.l-header');\r\n const inPageNav = document.querySelector('.c-in-page-nav');\r\n const navList = inPageNav && inPageNav.querySelector('.c-in-page-nav-list');\r\n const hasNavElement = !!(navList && navList.childElementCount > 0);\r\n const inPageNavHeight = hasNavElement ? 48 : 0;\r\n\r\n headerEl.style.height = `${headerHeight + inPageNavHeight}px`;\r\n };\r\n\r\n const fitBreadcrumbs = () => {\r\n // on every breadcrumbs size change - setting header height set by CLS fix to actual height\r\n const headerWrapperEl: HTMLDivElement = document.querySelector('.l-header-sticky-wrapper');\r\n const headerMainEl = headerWrapperEl.querySelector('.l-header-sticky');\r\n const newHeight = headerMainEl.clientHeight;\r\n\r\n headerWrapperEl.style.height = `${newHeight}px`;\r\n fixScrollingHeight(newHeight);\r\n };\r\n\r\n useEffect(() => {\r\n resizeObserver.current = new ResizeObserver(() => {\r\n fitBreadcrumbs();\r\n });\r\n\r\n resizeObserver.current.observe(breadcrumbRef.current);\r\n\r\n return () => {\r\n if (resizeObserver.current) {\r\n resizeObserver.current.disconnect();\r\n }\r\n };\r\n }, []);\r\n};\r\n","import React from 'react';\r\nimport { SocialMediaShare } from '@components/SocialMediaShare';\r\nimport { quoteClickHelper } from '@helpers/quoteClickHelper';\r\nimport { Button } from '@components/Button';\r\n\r\ninterface SocialBarProps {\r\n hideRequestQuote: boolean;\r\n contactUsForm: { I18: Record };\r\n shareTitle?: string;\r\n}\r\n\r\nexport const SocialBar = ({\r\n shareTitle = '',\r\n hideRequestQuote = true,\r\n contactUsForm,\r\n}: SocialBarProps) => {\r\n const requestForQuoteText = contactUsForm?.I18.RequestForQuote;\r\n\r\n return (\r\n \r\n \r\n {!hideRequestQuote && requestForQuoteText && (\r\n quoteClickHelper(contactUsForm)}\r\n />\r\n )}\r\n
\r\n );\r\n};\r\n","import React, { useRef, useEffect, MouseEvent } from 'react';\r\nimport { connect, ConnectedProps } from 'react-redux';\r\nimport { useBreadcrumbsSizeChange } from './Breadcrumb.hooks';\r\nimport { SocialBar } from './components/SocialBar';\r\nimport { BreadcrumbItem, Breadcrumb as BreadcrumbType } from '../../HeaderBar.types';\r\nimport './Breadcrumb.scss';\r\nimport { useFetchContactUsFormQuery } from '@pages/ContactUs/ContactUs.service';\r\n\r\ninterface BreadcrumbProps {\r\n breadcrumb: BreadcrumbType;\r\n}\r\n\r\nexport const Breadcrumb = ({ breadcrumb }: BreadcrumbProps) => {\r\n const breadcrumbRef = useRef(null);\r\n const { data: contactUsForm } = useFetchContactUsFormQuery();\r\n useBreadcrumbsSizeChange(breadcrumbRef);\r\n\r\n return (\r\n \r\n
\r\n {breadcrumb &&\r\n breadcrumb.Breadcrumbs.map(\r\n (item, index) => {\r\n const lastBreadcrumbItem = index === breadcrumb.Breadcrumbs.length - 1;\r\n\r\n return (\r\n item.Href && (\r\n
0 ? 'c-breadcrumb-links c-breadcrumb-separator' : 'c-breadcrumb-links'\r\n }\r\n >\r\n \r\n \r\n )\r\n );\r\n })}\r\n
\r\n {breadcrumb && contactUsForm ? (\r\n
\r\n ) : (\r\n // used to render loading indicator\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default Breadcrumb;\r\n","import { SubNavigation } from '@layouts/Header/Header.types';\r\nimport React from 'react';\r\n\r\ninterface SubMenuProps {\r\n submenuLinks: SubNavigation['content'];\r\n}\r\n\r\nexport const SubMenu = ({ submenuLinks }: SubMenuProps) => {\r\n const subMenuLinks = submenuLinks.map((item, index) => {\r\n const activeStyle = parseInt(window.pageId) === parseInt(item.PageId) ? 'is-active' : '';\r\n return (\r\n \r\n \r\n {item.Text}\r\n \r\n \r\n );\r\n });\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import React, { useState, useRef, MouseEvent } from 'react';\r\nimport { useOutsideClick } from '@hooks/useOutsideClick';\r\nimport './SubMenuMobile.scss';\r\nimport { SubNavigation } from '@layouts/Header/Header.types';\r\n\r\ninterface SubMenuMobileProps {\r\n submenuLinks: SubNavigation['content'];\r\n title: string;\r\n}\r\n\r\nexport const SubMenuMobile = ({ submenuLinks, title }: SubMenuMobileProps) => {\r\n const [active, setActive] = useState(false);\r\n\r\n const subMenuRef = useRef(null);\r\n const handleClickOutside = () => {\r\n setActive(false);\r\n };\r\n useOutsideClick(subMenuRef, handleClickOutside);\r\n\r\n const onClick = (e: MouseEvent) => {\r\n e.preventDefault();\r\n setActive(!active);\r\n };\r\n\r\n let currentLink = submenuLinks.filter(\r\n (item) => parseInt(item.PageId) === parseInt(window.pageId)\r\n )[0];\r\n let list = [];\r\n if (!currentLink && submenuLinks.length) {\r\n currentLink = submenuLinks[0];\r\n list = submenuLinks.filter((item) => parseInt(item.PageId) !== parseInt(currentLink.PageId));\r\n } else {\r\n list = submenuLinks.filter((item) => parseInt(item.PageId) !== parseInt(window.pageId));\r\n }\r\n\r\n const subMenuLinks = list.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.Text}\r\n \r\n \r\n );\r\n });\r\n\r\n return (\r\n \r\n
\r\n {active &&
}\r\n
\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Breadcrumb } from '@layouts/HeaderBar/components/Breadcrumb';\r\nimport { SubMenu, SubMenuMobile } from './components/SubMenu';\r\nimport { useFetchBreadcrumbQuery } from './HeaderBar.service';\r\nimport classNames from 'classnames';\r\nimport { SubNavigation } from '@layouts/Header/Header.types';\r\n\r\ninterface HeaderBarProps {\r\n subNavigation: SubNavigation;\r\n}\r\n\r\nconst HeaderBar = ({ subNavigation }: HeaderBarProps) => {\r\n const { data: breadcrumb, isLoading } = useFetchBreadcrumbQuery();\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default HeaderBar;\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { TopMenu } from '@layouts/Header/components/TopMenu';\r\nimport { enableScroll, disableScroll } from '@helpers/noScroll';\r\nimport { setScrollbarWidthForCSS } from '@contexts/ScrollContext';\r\nimport { Brand } from './components/Brand';\r\nimport { MenuSection } from './components/MenuSection';\r\nimport { CloseButton } from '@components/CloseButton';\r\nimport { MegaMenuMain, MainNavigationMobileNew } from '@layouts/MegaMenu';\r\nimport { useOutsideClick } from '@hooks/useOutsideClick';\r\nimport { useStickyHeader } from './Header.hooks';\r\nimport { SearchBar } from '@components/SearchBar';\r\nimport { SignInDropdown } from '@components/SignInDropdown';\r\nimport './Header.scss';\r\nimport { HeaderBar } from '@layouts/HeaderBar';\r\nimport { CountrySelector } from '@layouts/CountrySelector';\r\nimport {\r\n useFetchMegaMenuNavigationQuery,\r\n useFetchSubNavigationQuery,\r\n useFetchTopMenuQuery,\r\n} from './Header.service';\r\nimport { activeClass } from './Header.utils';\r\nimport { useWinSize } from '@contexts/WinSizeContext';\r\nimport classNames from 'classnames';\r\n\r\ninterface HeaderProps {\r\n lite?: boolean;\r\n}\r\n\r\nconst Header = ({ lite = false }: HeaderProps) => {\r\n const cls = lite ? 'l-header-lite' : 'l-header';\r\n const headerRef = useRef(null);\r\n const [selected, setSelected] = useState(null);\r\n const [selectedCategory, setSelectedCategory] = useState(null);\r\n\r\n const { data: megaMenuNavigation, isLoading: isLoadingMegaMenuNavigation } =\r\n useFetchMegaMenuNavigationQuery();\r\n const { data: subNavigation } = useFetchSubNavigationQuery();\r\n const { data: topMenu } = useFetchTopMenuQuery();\r\n\r\n const showDropDown = !!selectedCategory;\r\n const showMegaMenu = selectedCategory === 'MegaMenu';\r\n const showSearchArea = selectedCategory === 'SearchArea';\r\n const showSignInArea = selectedCategory === 'SignInArea';\r\n const showMarketArea = selectedCategory === 'MarketArea';\r\n const { isDesktopForHeader: isDesktop } = useWinSize();\r\n const { isMobileForHeader: isMobileScreen } = useWinSize();\r\n\r\n const hasBreadcrumb = subNavigation?.SubNavType === 'Breadcrumb';\r\n const showHeaderBar = !lite && (hasBreadcrumb || subNavigation?.SubNavType === 'SubMenu');\r\n const { stickyCss, handleScroll } = useStickyHeader(hasBreadcrumb, lite);\r\n\r\n const handleClickOutside = () => {\r\n handleCloseDropdown();\r\n };\r\n useOutsideClick(headerRef, handleClickOutside);\r\n\r\n const handleCloseDropdown = () => {\r\n setSelectedCategory(null);\r\n setSelected(null);\r\n };\r\n\r\n useEffect(() => {\r\n if (selectedCategory) {\r\n disableScroll();\r\n showOverlay(true);\r\n } else {\r\n enableScroll();\r\n showOverlay(false);\r\n }\r\n }, [selectedCategory]);\r\n\r\n // set a CSS variable with the scrollbar width\r\n setScrollbarWidthForCSS();\r\n\r\n const openMegaMenu = () => {\r\n setSelectedCategory('MegaMenu');\r\n };\r\n\r\n const toggleMegaMenu = (index) => {\r\n if (selected === index) {\r\n handleCloseDropdown();\r\n } else {\r\n setSelected(index);\r\n openMegaMenu();\r\n }\r\n };\r\n\r\n const toggleMegaMenuMobile = () => {\r\n if (showMegaMenu) {\r\n setSelectedCategory(null);\r\n handleCloseDropdown();\r\n } else {\r\n openMegaMenu();\r\n }\r\n };\r\n\r\n const toggleSearchArea = () => {\r\n showSearchArea ? enableScroll() : disableScroll();\r\n handleCloseDropdown();\r\n\r\n if (selectedCategory !== 'SearchArea') {\r\n setSelectedCategory('SearchArea');\r\n }\r\n };\r\n\r\n const toggleSignInArea = () => {\r\n handleCloseDropdown();\r\n\r\n if (selectedCategory !== 'SignInArea') {\r\n setSelectedCategory('SignInArea');\r\n }\r\n };\r\n\r\n const toggleMarketArea = () => {\r\n handleCloseDropdown();\r\n\r\n if (selectedCategory !== 'MarketArea') {\r\n setSelectedCategory('MarketArea');\r\n }\r\n };\r\n\r\n const showOverlay = (value: boolean) => {\r\n if (value) {\r\n document.querySelector('.overlay').classList.add('show');\r\n document.querySelector('.l-header-sticky')?.classList.add('adjust-width');\r\n } else {\r\n document.querySelector('.overlay').classList.remove('show');\r\n document.querySelector('.l-header-sticky')?.classList.remove('adjust-width');\r\n }\r\n };\r\n\r\n // UserStory : 324368 Removed Geo-banner from production\r\n // const closeGeolocation = () => {\r\n // handleScroll();\r\n // };\r\n\r\n return (\r\n \r\n
\r\n {/* UserStory : 324368 Removed Geo-banner from production */}\r\n {/*
*/}\r\n {!lite &&
}\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n {megaMenuNavigation && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n {isDesktop && !isMobileScreen && (\r\n
\r\n )}\r\n\r\n {showSearchArea && (\r\n
\r\n
\r\n
\r\n
\r\n {\r\n const searchUrl = megaMenuNavigation.Search.SearchUrl;\r\n const searchParams = new URLSearchParams({\r\n query: value,\r\n category: 'All',\r\n orderBy: 'relevance',\r\n });\r\n window.location.href = `${searchUrl}?${searchParams.toString()}`;\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )}\r\n\r\n {!(megaMenuNavigation?.SignIn.HideSignIn) && selectedCategory === 'SignInArea' && (\r\n
\r\n )}\r\n\r\n {showMarketArea && (\r\n
\r\n \r\n
\r\n )}\r\n\r\n {(!isDesktop || isMobileScreen) && megaMenuNavigation && (\r\n
\r\n )}\r\n
\r\n
\r\n {showHeaderBar &&
}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Header;\r\n","import Header from './Header';\r\nexport default Header;\r\n","import { apiSlice } from '@services/apiSlice';\r\nimport { ContactUs as endpoints } from '@services/endpoints';\r\nimport { FindContactData, ContactUsForm } from './ContactUs.types';\r\n\r\ninterface FindOfficeQueryParams {\r\n countryId?: number;\r\n officeTypeId?: number;\r\n}\r\n\r\ninterface ContactUsFormQueryParams {\r\n countryId?: number;\r\n type?: string;\r\n}\r\n\r\nconst contactUsApi = apiSlice.injectEndpoints({\r\n endpoints: (build) => ({\r\n fetchFindOfficeData: build.query({\r\n query: ({ countryId, officeTypeId }) => ({\r\n url: endpoints.fetchFindOfficeData,\r\n params: {\r\n lang: window.lang,\r\n countryId: countryId || 2000,\r\n officeTypeId: officeTypeId || 0,\r\n },\r\n }),\r\n }),\r\n fetchContactUsForm: build.query({\r\n query: (params) => ({\r\n url: endpoints.fetchContactUsForm,\r\n params: {\r\n lang: window.lang,\r\n pageId: window.pageId,\r\n type: params ? params.type : 'RequestAQuote',\r\n countryId: params && params.countryId ? params.countryId : 0,\r\n },\r\n }),\r\n }),\r\n }),\r\n overrideExisting: false,\r\n});\r\n\r\nexport const { useFetchContactUsFormQuery, useLazyFetchFindOfficeDataQuery } = contactUsApi;\r\n"],"names":["hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","includes","key","call","join","module","exports","default","define","window","Profile","xmlns","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","cx","cy","r","d","IconContainer","icon","className","Facebook","Twitter","x","y","ExternalLink","id","Arrow","rotate","style","transformBox","transformOrigin","transform","Cross","Delete","EmailSvg","PhoneSvg","fillRule","clipRule","Button","text","onClick","href","size","disabled","color","border","children","type","props","tag","createElement","target","CloseButton","SocialMediaShare","title","handleClick","e","name","preventDefault","open","currentTarget","innerHeight","innerWidth","shareUrl","location","disableScroll","document","body","classList","add","enableScroll","remove","quoteClickHelper","contactUsForm","redirect","localStorage","setItem","I18","CategoryID","pageId","contact_type","RequestForQuote","EnquiryTypeLink","useOutsideClick","ref","handler","useEffect","current","contains","addEventListener","removeEventListener","breadcrumbApi","endpoints","build","fetchBreadcrumb","query","url","params","language","lang","overrideExisting","useFetchBreadcrumbQuery","selectFunction","list","arrow","isShowing","setIsShowing","useState","selectRef","useRef","listItems","useMemo","map","item","onSelect","TopMenuLanguageSelector","languages","defaultLanguage","languageTitle","filter","LanguageCode","Name","currentLanguageTitle","Href","select","topMenu","SectionLinks","index","Text","Target","referrerPolicy","Languages","DefaultLanguage","Brand","pathLink","getElementsByTagName","getAttribute","src","alt","ContactButton","forwardRef","highlight","selected","contactlink","pageType","cookie","MainNavigation","model","itemClass","NoSubCategory","setValue","val","ContainerLink","getItem","UrlSegment","SearchButton","SignInButton","MarketButton","active","MenuSection","toggleMegaMenu","toggleSearchArea","toggleSignInArea","toggleMarketArea","showHideSignIn","megaMenuNavigation","contactLink","contactBtnText","searchBtnText","signInBtnText","signInDescription","showSearchArea","showSignInArea","showMarketArea","signInBtnLinks","cls","contactClick","setContactClick","contactBtnRef","isDesktopForHeader","Fragment","handlehighlight","origin","toUpperCase","MegaMenuState","createContext","MegaMenuStateProvider","selectedSection","megaMenuData","activeItems","setActiveItems","initialData","data","setData","resetActiveItems","Provider","value","addActiveItem","changedLevel","newActiveItems","keys","forEach","level","parseInt","removeActiveItem","resetData","newData","useMegaMenuState","useContext","MegaMenuItem","items","hasChildren","isActive","isMobileDevice","navigator","maxTouchPoints","isHovered","onMouseEnter","onMouseLeave","onHover","setIsHovered","hoverTimer","clearTimeout","setTimeout","useMegaMenuItemHover","showChildren","nextLevel","undefined","createPortal","MegaMenuColumn","querySelector","columnData","columnChildren","ColumnAndSection","Children","Sections","columnHasChildren","HeaderPage","Title","MegaMenuNavigation","levels","_","prevLevel","columns","Columns","show","megaMenuColumns","closeMegaMenu","selectedColumn","MobileListItemWithChildren","count","container","backID","urlSegment","event","el","getElementById","startsWith","child","backChild","setAttribute","innerHTML","MobileListItemGoBackBtn","menuList","getElementsByClassName","menu","slice","mobileMenu","element","targetEl","MobileMenuListWrapper","backBtnText","MegaMenuListMobile","columnList","i18n","renderMenuItem","hasSubCategory","link","replace","Back","filterColumnList","column","renderOtherColumn","MegaMenuColumnMobile","nav","levelRender","level2","level3","level4","LanguageSelectorMobile","_classPrivateFieldGet","receiver","privateMap","descriptor","get","_classApplyDescriptorGet","_classExtractFieldDescriptor","_classPrivateFieldSet","set","writable","TypeError","_classApplyDescriptorSet","action","has","_classPrivateMethodGet","privateSet","fn","_checkPrivateRedeclaration","obj","privateCollection","_classPrivateFieldInitSpec","_classPrivateMethodInitSpec","RegExp","test","error","_ref","search","lastIndexOf","splice","amend","_list","WeakMap","_pattern","_update","WeakSet","_index","Isbot","constructor","patterns","this","_update2","defineProperties","ua","entries","getOwnPropertyDescriptors","reduce","accumulator","prop","assign","bind","pattern","Boolean","find","match","matches","entry","clear","exclude","extend","filters","rule","_index2","toLowerCase","spawn","indexOf","isbot","MobileNavigationList","navigation","contact","getPathLink","hasNavigationList","onNavItemClick","addToMegaMenu","SignInDropdown","signInInformation","links","dangerouslySetInnerHTML","__html","handleDatalayerPush","linkText","linkUrl","Url","dataLayer","link_text","link_url","CountrySelectorFooter","footerLink","footerText","footerLinkHref","RedirectedIntro","RemoveSettingsText","site","isCommertialSiteHomePage","removeItem","MobileList","countries","countrySelectList","isCountrySelector","setIsCountrySelector","selectCountryMobile","ContactUsPageLink","I18n","ContactUsPageText","DesktopList","selectCountry","URL","attributes","getNamedItem","array","temparray","newArray","temparraylength","columnsLength","Math","ceil","generateDesktopList","countrySelectorApi","apiSlice","fetchCountrySelectList","useFetchCountrySelectListQuery","handleCloseDropdown","isDesktop","isMobileForHeader","isMobileScreen","isMobile","Countries","Header","Introduction","showing","userAgent","useStickyHeader","hasBreadcrumb","lite","stickyCss","setStickyCss","handleStickyInPageNavigation","header","navElement","navList","headerHeight","getBoundingClientRect","hasNavElement","childElementCount","moveInPageNav","visibility","appendChild","setHeaderHeightForScroll","root","documentElement","offsetHeight","setProperty","handleScroll","newStickyCss","scrollY","barElement","throttledScroll","throttledHandleInPageNav","throttledSetHeaderHeightForScroll","useBreadcrumbsSizeChange","breadcrumbRef","resizeObserver","fitBreadcrumbs","headerWrapperEl","newHeight","clientHeight","headerEl","inPageNav","inPageNavHeight","fixScrollingHeight","ResizeObserver","observe","disconnect","SocialBar","shareTitle","hideRequestQuote","requestForQuoteText","breadcrumb","Breadcrumbs","lastBreadcrumbItem","Share","SubMenu","submenuLinks","subMenuLinks","activeStyle","PageId","SubMenuMobile","setActive","subMenuRef","currentLink","subNavigation","isLoading","loading","SubNavType","content","headerRef","setSelected","selectedCategory","setSelectedCategory","isLoadingMegaMenuNavigation","showDropDown","showMegaMenu","showHeaderBar","showOverlay","openMegaMenu","MainMenuLinks","Search","SignIn","Heading","Links","Description","HideSignIn","Contact","MegaMenuColumns","SearchBar","placeholder","Placeholder","showSearchIcon","onSubmit","searchUrl","SearchUrl","searchParams","URLSearchParams","category","orderBy","contactUsApi","fetchFindOfficeData","countryId","officeTypeId","fetchContactUsForm","useFetchContactUsFormQuery","useLazyFetchFindOfficeDataQuery"],"sourceRoot":""}