{"version":3,"file":"Header-BGzW1pJv-chunk.js","sources":["../../../GSDClient/Scripts/Components/Header/CountrySelector.tsx","../../../GSDClient/Scripts/Components/Header/CountryAndContact.tsx","../../../GSDClient/Scripts/Components/Header/DisturbanceBanner.tsx","../../../GSDClient/Scripts/Components/Header/HamburgerButton.tsx","../../../GSDClient/Scripts/Components/Header/HideOnScrollWrapper.tsx","../../../GSDClient/Scripts/Components/Header/MegaMenuDropDown.tsx","../../../GSDClient/Scripts/Components/Header/MegaMenu.tsx","../../../GSDClient/Icons/bag.svg?react","../../../GSDClient/Scripts/Components/Header/MiniCartButton.tsx","../../../GSDClient/Scripts/Components/Header/MobileMenu.tsx","../../../GSDClient/Scripts/Hooks/useDebounce.tsx","../../../GSDClient/Scripts/Components/Header/QuickSearch.tsx","../../../GSDClient/Scripts/Components/Header/UspBanner.tsx","../../../GSDClient/Icons/profile.svg?react","../../../GSDClient/Scripts/Components/Header.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { IRootState } from 'Scripts/store';\n\nimport { useLazyGetCountriesQuery } from 'Services/countrySelectorApi';\nimport { dpr } from 'Utils/dpr';\nimport { BreakPointHooks } from 'Hooks/BreakPointHooks';\n\nimport { ICultureViewModel } from 'Types/Litium';\nimport CtaButton from 'Components/CtaButton';\nimport Divider from 'Components/Divider';\nimport Modal from 'Components/Modal';\n\nimport CaretDown from 'Icons/caretGsd.svg?react';\n\nconst { useGreater } = BreakPointHooks();\n\nconst CountrySelector = ({\n currentCulture,\n}: {\n currentCulture: ICultureViewModel;\n}) => {\n const isGreater = useGreater('lg');\n const [getCountries, { data, isSuccess, isFetching }] =\n useLazyGetCountriesQuery();\n const [isOpenModal, setIsOpenModal] = useState(false);\n const [shouldWarnBeforeChange, setShouldWarnBeforeChange] = useState(false);\n const [linkToMarket, setLinkToMarket] = useState();\n const [forceClose, setForceClose] = useState(false);\n const isCartEmpty = useSelector(\n (state: IRootState) => state?.cart?.miniCartModel.shoppingCart?.isEmpty\n );\n const handleClick = () => {\n getCountries();\n };\n const handleChangeCountry = (\n e: React.MouseEvent\n ) => {\n if (data.isLoggedIn || isCartEmpty === false) {\n e.preventDefault();\n setShouldWarnBeforeChange(true);\n setLinkToMarket(e.currentTarget.href);\n }\n };\n\n useEffect(() => {\n if (isFetching) {\n setForceClose(false);\n setIsOpenModal(false);\n setLinkToMarket(null);\n setShouldWarnBeforeChange(false);\n }\n if (isSuccess) {\n setIsOpenModal(true);\n }\n }, [isSuccess, isFetching]);\n\n useEffect(() => {\n setIsOpenModal(false);\n setLinkToMarket(null);\n setShouldWarnBeforeChange(false);\n setForceClose(true);\n }, [isGreater]);\n\n return (\n <>\n \n {currentCulture.flag?.src && (\n \n )}\n \n {currentCulture.languageCode}\n \n {currentCulture.languageName}\n \n \n {isSuccess && data.translations && (\n <>\n {\n setIsOpenModal(false);\n }}\n forceClose={forceClose}\n isOpened={isOpenModal}\n ariaCloseButtonTranslation={data.translations.close}\n backButtonTranslation={data.translations.close}\n absolutePositionedCross\n >\n

\n {data.translations.chooseCountry}\n

\n \n\n
    \n {data.cultures?.map((item, index) => (\n
  • \n handleChangeCountry(e)}\n href={item.currentURL}\n className=\"flex flex-nowrap items-center gap-2 font-roboto text-sm font-light hover:underline\"\n >\n {item.flag?.src ? (\n \n ) : (\n \n )}\n {item.displayName}\n \n
  • \n ))}\n
\n \n setShouldWarnBeforeChange(false)}\n ariaCloseButtonTranslation=\"#Close dialog window for terms and conditions\"\n backButtonTranslation=\"#Close dialog window for terms and conditions\"\n isOpened={shouldWarnBeforeChange}\n >\n

\n {data.translations.popupHeaderTitle}\n

\n
\n
\n

\n {data.isLoggedIn\n ? data.translations.userLogout\n : data.translations.emptyingShoppingCart}\n

\n
\n \n {data.translations.changeMarketLinkText}\n \n \n setShouldWarnBeforeChange(false)\n }\n >\n {\n data.translations\n .stayOnCurrentMarketLinkText\n }\n \n
\n
\n \n \n )}\n \n );\n};\n\nexport default CountrySelector;\n","import CountrySelector from 'Components/Header/CountrySelector';\nimport { ICultureViewModel, ILinkModel } from 'Types/Litium';\n\nconst CountryAndContact = ({\n currentCulture,\n linkList,\n}: {\n currentCulture: ICultureViewModel;\n linkList: ILinkModel[];\n}) => (\n
\n
    \n {linkList.map((item, index) => (\n
  • \n \n {item.text}\n \n
  • \n ))}\n
\n \n
\n);\n\nexport default CountryAndContact;\n","import { useState } from 'react';\n\nimport { IDisturbanceBannerViewModel } from 'Types/Litium';\nimport Markup from 'Components/Markup';\n\nimport CloseIcon from 'Icons/close.svg?react';\n\nconst DisturbanceBanner = ({\n text,\n backgroundColor,\n closeBannerText,\n textWidthMobile,\n}: IDisturbanceBannerViewModel) => {\n const [showDistrurbanceBanner, setShowDisturbanceBanner] = useState(true);\n\n const closeDisturbanceBanner = () => {\n document.cookie =\n 'disturbance-banner-dismiss=true; path=/; max-age=86400';\n setShowDisturbanceBanner(false);\n };\n\n return (\n \n
\n \n \n closeDisturbanceBanner()}\n >\n {closeBannerText}\n \n \n
\n \n \n );\n};\n\nexport default DisturbanceBanner;\n","import { IHeaderViewModelTranslations } from 'Types/Litium';\n\ninterface IHamburgerButton {\n isActive: boolean;\n onClickHandler: () => void;\n translations: IHeaderViewModelTranslations;\n}\n\nconst HamburgerButton = ({\n isActive = false,\n onClickHandler,\n translations,\n}: IHamburgerButton) => (\n \n \n \n \n \n \n \n);\n\nexport default HamburgerButton;\n","const HideOnscrollWrapper = ({\n children = null,\n desktopOnly = false,\n className = '',\n}: {\n children: React.ReactNode;\n desktopOnly?: boolean;\n className?: string;\n}) => {\n const classes =\n '-:grid -:visible -:origin-top -:duration-layout -:grid-rows-[1fr] -:opacity-1';\n const mobileClasses =\n '-:transition-[grid-template-rows,_opacity,_visibility] -:group-[.slimHeader]:grid-rows-[0fr] -:group-[.slimHeader]:opacity-0 -:group-[.slimHeader]:invisible';\n const desktopClasses =\n '-:lg:transition-[grid-template-rows,_opacity,_visibility] -:lg:group-[.slimHeader]:grid-rows-[0fr] -:lg:group-[.slimHeader]:opacity-0 -:lg:group-[.slimHeader]:invisible';\n return (\n \n
{children}
\n \n );\n};\n\nexport default HideOnscrollWrapper;\n","import React, { Fragment } from 'react';\n\nimport useTrapFocus from 'Hooks/useTrapFocus';\n\nimport { IContentLinkModel } from 'Types/Litium';\nimport Markup from 'Components/Markup';\n\ninterface MegaMenuDropDownProps {\n data: IContentLinkModel[];\n showMenu: boolean;\n menuId: string;\n setShowMenuIndex: React.Dispatch>;\n}\n\nconst MegaMenuDropDown = ({\n data,\n menuId,\n showMenu,\n setShowMenuIndex,\n}: MegaMenuDropDownProps) => {\n const closeTrap = () => {\n setShowMenuIndex(-1);\n };\n const trapRef = useTrapFocus(showMenu, closeTrap);\n return (\n \n
\n
    \n {data.map((subItem, subIndex) => (\n \n {(subItem.links?.[0]?.name?.length > 0 ||\n subItem.links.length > 0) && (\n
  • \n {!subItem.links?.[0]?.url &&\n subItem.links?.[0]?.name?.length > 0 ? (\n \n ) : (\n subItem.links.length > 0 && (\n <>\n

    \n {subItem.name}\n

    \n = 9\n ? 9\n : subItem\n .links\n .length,\n '--columns':\n Math.ceil(\n subItem\n .links\n .length /\n 9\n ),\n } as React.CSSProperties\n }\n className=\"grid grid-flow-col grid-cols-[repeat(var(--columns)_,_minmax(min-content,_auto))] grid-rows-[repeat(var(--rows),_minmax(0,_1fr))] gap-4\"\n >\n {subItem.links.map(\n (\n menuLink,\n menuLinkIndex\n ) => (\n \n \n \n {\n menuLink.name\n }\n \n \n
  • \n )\n )}\n
\n \n )\n )}\n \n )}\n \n ))}\n \n
\n \n );\n};\n\nexport default MegaMenuDropDown;\n","import { useRef, useState } from 'react';\n\nimport useInView from 'Scripts/Hooks/useInView';\n\nimport { getNewDimensionsWithAspectRatio } from 'Utils/getNewDimensionsWithAspectRatio';\n\nimport { IImageBaseViewModel, INavigationViewModel } from 'Types/Litium';\nimport MegaMenuDropDown from 'Components/Header/MegaMenuDropDown';\n\nimport ArrowDownIcon from 'Icons/caretGsd.svg?react';\n\ninterface IMegaMenuProps extends INavigationViewModel {\n logoMini: IImageBaseViewModel;\n startPageUrl: string;\n showMiniLogoBreakPoint: boolean;\n}\n\nconst MegaMenu = ({\n contentLinks,\n logoMini,\n startPageUrl,\n showMiniLogoBreakPoint,\n}: IMegaMenuProps) => {\n const [showMenuIndex, setShowMenuIndex] = useState(-1);\n\n const toggleMegaMenu = (index: number) => {\n setShowMenuIndex(showMenuIndex === index ? -1 : index);\n };\n\n const handleFocusTrapForMegaMenu = (\n event: React.KeyboardEvent\n ) => {\n if (event.key === 'Tab') {\n if (event.shiftKey) {\n setShowMenuIndex(-1);\n }\n }\n };\n\n const megamenuRef = useRef(null);\n const { boundingClientRect } = useInView(megamenuRef);\n\n return (\n