{"version":3,"file":"static/js/670.chunk.js","mappings":"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","sources":["Components/Explore/explore-utils.ts","Components/Search/SearchBar/SearchComponents/Location/LocationDropdownDisplay.tsx","Components/Search/SearchBar/SearchBarDesktop.tsx","Components/Search/SearchBar/SearchComponents/Location/typeAhead.ts","Components/Search/SearchBar/SearchPopup/SearchPopup.tsx","Components/Search/SearchBar/SearchBarMobile.tsx","Components/Search/SearchBar/SearchBar.tsx","Components/HeaderMain/NavigationMenu/NavigationMenu.tsx","Helpers/location.ts","Components/HeaderMain/HeaderMainLogo.tsx","Components/HeaderMain/HeaderMain.tsx","Helpers/PATH.resource.ts","Helpers/pageVariants.ts","redux/explore-content/explore-content-selectors.ts","../node_modules/framer-motion/dist/es/utils/use-is-mounted.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs","../node_modules/framer-motion/dist/es/utils/use-force-update.mjs"],"sourcesContent":["import { IPerformSearchRequest } from '../../redux/explore-content/explore-content-interfaces'\r\nimport { ILocation } from '../../interfaces/interfaces'\r\nimport { DEFAULT_LOCATION } from '../../Helpers/constants'\r\nimport Cookies from 'js-cookie'\r\nimport { IGlobalContext } from '../../Context/GlobalContext'\r\n\r\nexport function isUKPlacesLocation(global: IGlobalContext): boolean {\r\n return !!global.latitude && !!global.longitude\r\n}\r\n\r\nexport function getUKPlacesSearchParams(\r\n global: IGlobalContext,\r\n baseParams: IPerformSearchRequest\r\n): IPerformSearchRequest {\r\n return {\r\n ...baseParams,\r\n location: {\r\n latitude: parseFloat(global.latitude),\r\n longitude: parseFloat(global.longitude),\r\n maxDistance:\r\n global.maxDistance !== undefined\r\n ? parseFloat(global.maxDistance)\r\n : undefined,\r\n },\r\n }\r\n}\r\n\r\nexport function isAffiliate(): boolean {\r\n return !!Cookies.get('wa')\r\n}\r\n\r\nexport function getAffiliateSearchParams(\r\n baseParams: IPerformSearchRequest\r\n): IPerformSearchRequest {\r\n const location = Cookies.get('ul')\r\n return {\r\n ...baseParams,\r\n location: location\r\n ? (JSON.parse(location) as ILocation)\r\n : DEFAULT_LOCATION,\r\n }\r\n}\r\n\r\nexport function getStoredSearchParams(): IPerformSearchRequest | undefined {\r\n const storedSearch = sessionStorage.getItem('storedSearch')\r\n return storedSearch === null\r\n ? undefined\r\n : (JSON.parse(storedSearch) as IPerformSearchRequest)\r\n}\r\n\r\nexport function resetCurrentPage(searchParams: IPerformSearchRequest) {\r\n searchParams.currentPage = 1\r\n return searchParams\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport './LocationDropdownDisplay.css'\r\nimport { motion } from 'framer-motion'\r\nimport { IBingResource } from '../../../../../interfaces/interfacesBingMap'\r\n\r\nconst pageVariants = {\r\n initial: {\r\n x: 60,\r\n scale: 0,\r\n opacity: 0,\r\n },\r\n in: {\r\n x: 0,\r\n opacity: 1,\r\n scale: 1,\r\n },\r\n out: {\r\n x: 0,\r\n opacity: 0,\r\n },\r\n}\r\n\r\nconst placeVariants = {\r\n initial: {\r\n scaleY: 0,\r\n opacity: 0,\r\n },\r\n in: {\r\n opacity: 1,\r\n scaleY: 1,\r\n },\r\n out: {\r\n scaleY: 0,\r\n opacity: 0,\r\n },\r\n}\r\n\r\ninterface ILocationDetails {\r\n name: string\r\n entityType: string\r\n adminDistrictTwo?: string\r\n adminDistrict?: string\r\n}\r\n\r\ninterface ILocationDropdownDisplay {\r\n loc: IBingResource\r\n}\r\n\r\nconst LocationDropdownDisplay: React.FC = ({\r\n loc,\r\n}: ILocationDropdownDisplay): JSX.Element => {\r\n const [locationDetails, setLocationDetails] = useState(\r\n {} as ILocationDetails\r\n )\r\n\r\n useEffect(() => {\r\n if (loc.address.countryRegion !== 'United Kingdom') {\r\n return\r\n }\r\n\r\n switch (loc.entityType) {\r\n case 'RailwayStation':\r\n setLocationDetails({\r\n name: loc.name.split(', ')[0],\r\n entityType: 'Railway Station',\r\n adminDistrictTwo: loc.address.adminDistrict2,\r\n adminDistrict: loc.address.adminDistrict,\r\n })\r\n break\r\n case 'Neighborhood':\r\n setLocationDetails({\r\n name: loc.name.split(', ')[0],\r\n entityType: 'Neighborhood',\r\n adminDistrictTwo: loc.address.adminDistrict2,\r\n adminDistrict: loc.address.adminDistrict,\r\n })\r\n break\r\n case 'PopulatedPlace':\r\n setLocationDetails({\r\n name: loc.name.split(', ')[0],\r\n entityType: 'Town/city',\r\n adminDistrictTwo: loc.address.adminDistrict2,\r\n adminDistrict: loc.address.adminDistrict,\r\n })\r\n break\r\n case 'HigherEducationFacility':\r\n setLocationDetails({\r\n name: loc.name.split(', ')[0],\r\n entityType: 'College/university',\r\n adminDistrictTwo: loc.address.adminDistrict2,\r\n adminDistrict: loc.address.adminDistrict,\r\n })\r\n break\r\n case 'AdminDivision2':\r\n setLocationDetails({\r\n name: loc.name.split(', ')[0],\r\n entityType: 'County',\r\n adminDistrictTwo: loc.address.adminDistrict2,\r\n adminDistrict: loc.address.adminDistrict,\r\n })\r\n break\r\n case 'AdminDivision1':\r\n setLocationDetails({\r\n name: loc.address.adminDistrict,\r\n entityType: 'Country',\r\n adminDistrictTwo: '',\r\n adminDistrict: loc.address.adminDistrict,\r\n })\r\n break\r\n case 'Lake':\r\n setLocationDetails({\r\n name: loc.name.split(', ')[0],\r\n entityType: 'Lake',\r\n adminDistrictTwo: loc.address.adminDistrict2,\r\n adminDistrict: loc.address.adminDistrict,\r\n })\r\n break\r\n case 'River':\r\n setLocationDetails({\r\n name: loc.name.split(', ')[0],\r\n entityType: 'River',\r\n adminDistrictTwo: loc.address.adminDistrict2,\r\n adminDistrict: loc.address.adminDistrict,\r\n })\r\n break\r\n default:\r\n setLocationDetails({\r\n name: loc.name.split(', ')[0],\r\n entityType: '',\r\n adminDistrictTwo: loc.address?.adminDistrict2 ?? '',\r\n adminDistrict: loc.address.adminDistrict,\r\n })\r\n break\r\n }\r\n\r\n if (loc.entityType?.substring(0, 8) === 'Postcode') {\r\n setLocationDetails({\r\n name:\r\n loc.address.postalCode + ', ' + loc.address.adminDistrict2,\r\n entityType: 'Postcode',\r\n })\r\n }\r\n }, [loc])\r\n\r\n return (\r\n
\r\n {locationDetails.name && (\r\n \r\n \r\n {locationDetails.name}\r\n\r\n {locationDetails.adminDistrictTwo && (\r\n <>\r\n {locationDetails.adminDistrictTwo !==\r\n locationDetails.name ? (\r\n <>\r\n {', '}\r\n {locationDetails.adminDistrictTwo}\r\n \r\n ) : (\r\n <>\r\n {', '}\r\n {locationDetails.adminDistrict}\r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n {locationDetails.entityType}\r\n \r\n \r\n )}\r\n {/*loc.address.locality && <>{loc.address.locality}, }\r\n {loc.address.adminDistrict2 !== loc.address.locality && (\r\n <>{loc.address.adminDistrict2}\r\n )}\r\n , {loc.address.adminDistrict}\r\n {loc.entityType === \"RailwayStation\" && (\r\n station\r\n )*/}\r\n
\r\n )\r\n}\r\n\r\nexport default LocationDropdownDisplay\r\n","import React, { useContext } from 'react'\r\nimport './SearchBarDesktop.css'\r\nimport LocationDropdownDisplay from './SearchComponents/Location/LocationDropdownDisplay'\r\n\r\nimport { IBingResource } from '../../../interfaces/interfacesBingMap'\r\n\r\nimport IconSvg, { ICON_TYPE } from '../../Shared/SVG/iconSvg'\r\nimport { ISearchDropdownDefaults } from '../../../interfaces/interfaces'\r\nimport { useAppDispatch, useAppSelector } from '../../../redux/store'\r\nimport {\r\n exploreContentKeywords,\r\n exploreContentLocationText,\r\n} from '../../../redux/explore-content/explore-content-selectors'\r\nimport { getExploreContentByKeywords } from '../../../redux/explore-content/explore-content-thunks'\r\nimport { GlobalContext } from '../../../Context/GlobalContext'\r\n\r\ninterface ISearchBarDescktopProps {\r\n handleKeywordChange: (keyword: string) => void\r\n handleTypeahead: (location: string) => void\r\n chooseLocation: (loc: IBingResource) => void\r\n clearSearchData: (e: React.MouseEvent, key?: string) => void\r\n locationSearchDropdown: boolean\r\n handleOpenSearchBarSegments: (\r\n searchDefaults: ISearchDropdownDefaults\r\n ) => void\r\n openSearchbarSegments: ISearchDropdownDefaults\r\n locationTypeaheadArray: IBingResource[]\r\n onKeyUpHandler: (e: React.KeyboardEvent) => void\r\n partnerLogo?: string\r\n}\r\n\r\nconst SearchBarDesktop: React.FC = ({\r\n handleKeywordChange,\r\n handleTypeahead,\r\n chooseLocation,\r\n clearSearchData,\r\n locationSearchDropdown,\r\n handleOpenSearchBarSegments,\r\n openSearchbarSegments,\r\n locationTypeaheadArray,\r\n onKeyUpHandler,\r\n}: ISearchBarDescktopProps): JSX.Element => {\r\n const dispatch = useAppDispatch()\r\n const global = useContext(GlobalContext)\r\n const displayLocation = useAppSelector(\r\n (state) => state.wizardStore.userDisplayLocation\r\n )\r\n\r\n const locationText = useAppSelector(exploreContentLocationText)\r\n const keywords = useAppSelector(exploreContentKeywords)\r\n\r\n const onLocationChange = (e: React.ChangeEvent): void => {\r\n const locationVal = e.target.value\r\n handleTypeahead(locationVal)\r\n }\r\n\r\n const onKeywordChange = (e: React.ChangeEvent): void => {\r\n const keywordVal = e.target.value\r\n handleKeywordChange(keywordVal)\r\n }\r\n\r\n const navigateToPage = () => {\r\n switch (global.pageId) {\r\n case 'page--home':\r\n case 'page--category-landing':\r\n break\r\n default:\r\n window.location.href = window.location.origin\r\n }\r\n }\r\n\r\n const handleOnClick = async () => {\r\n if (keywords) {\r\n await dispatch(getExploreContentByKeywords(keywords))\r\n window.scrollTo({ top: 0 })\r\n }\r\n navigateToPage()\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n {keywords === '' ? (\r\n
\r\n \r\n
\r\n ) : (\r\n clearSearchData(e, 'textSearch')}\r\n className=\"searchSVGContain\"\r\n >\r\n \r\n
\r\n )}\r\n\r\n \r\n handleOpenSearchBarSegments({\r\n ...openSearchbarSegments,\r\n keywordSearch: true,\r\n dateSearch: false,\r\n audienceSearch: false,\r\n locationSearchText: false,\r\n })\r\n }\r\n onKeyUp={onKeyUpHandler}\r\n value={keywords}\r\n onChange={onKeywordChange}\r\n placeholder=\"Attractions, Events..\"\r\n />\r\n
\r\n {\r\n handleOpenSearchBarSegments({\r\n ...openSearchbarSegments,\r\n keywordSearch: false,\r\n dateSearch: false,\r\n audienceSearch: false,\r\n locationSearchText: true,\r\n })\r\n }}\r\n className=\"header__locationDesktop\"\r\n >\r\n {locationText ? (\r\n {\r\n e.stopPropagation()\r\n clearSearchData(e, 'locationText')\r\n }}\r\n className=\"searchSVGContain\"\r\n >\r\n \r\n \r\n ) : (\r\n
\r\n \r\n
\r\n )}\r\n\r\n \r\n\r\n {locationSearchDropdown && (\r\n <>\r\n {locationTypeaheadArray &&\r\n locationTypeaheadArray[0] &&\r\n locationTypeaheadArray[0].address.adminDistrict &&\r\n locationTypeaheadArray[0].address.countryRegion ===\r\n 'United Kingdom' && (\r\n
\r\n
\r\n
\r\n \r\n Suggested locations\r\n \r\n\r\n
\r\n {locationTypeaheadArray.map(\r\n (loc, i) => {\r\n if (\r\n !loc.address\r\n .adminDistrict\r\n ) {\r\n return\r\n }\r\n\r\n return (\r\n {\r\n chooseLocation(\r\n loc\r\n )\r\n }}\r\n key={i}\r\n className=\"header__locationOptionItems\"\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 void handleOnClick()}\r\n className=\"btn primary-btn searchBar__button-desktop\"\r\n >\r\n Search\r\n \r\n \r\n )\r\n}\r\n\r\nexport default SearchBarDesktop\r\n","import axios from 'axios'\r\nimport {\r\n IBingData,\r\n IBingResource,\r\n} from '../../../../../interfaces/interfacesBingMap'\r\n\r\nconst typeAhead = async (input: string, apiKey: string): Promise => {\r\n return axios({\r\n method: 'GET',\r\n url: `https://dev.virtualearth.net/REST/v1/Locations/UK/${encodeURIComponent(input.trim())}?maxResults=8&key=${apiKey}`,\r\n })\r\n}\r\n\r\nexport const typeaheadUniqueValues = (data: IBingData): IBingResource[] => {\r\n const tempResources = data.resourceSets[0].resources\r\n const found = tempResources.filter((r) => r.address.locality)\r\n const tempTypeaheadArray = [] as IBingResource[]\r\n\r\n for (let i = 0; i < tempResources.length; i++) {\r\n const obj = tempTypeaheadArray.find(\r\n (o) => o.name === tempResources[i].name\r\n )\r\n\r\n if (!obj) {\r\n if (tempResources[i].entityType !== 'AdminDivision2') {\r\n tempTypeaheadArray.push(tempResources[i])\r\n }\r\n\r\n if (\r\n tempResources[i].entityType === 'AdminDivision2' &&\r\n found.length === 0\r\n ) {\r\n tempTypeaheadArray.push(tempResources[i])\r\n }\r\n }\r\n }\r\n\r\n return tempTypeaheadArray\r\n}\r\n\r\nexport default typeAhead\r\n","import './SearchPopup.css'\r\nimport React from 'react'\r\nimport { useAppDispatch, useAppSelector } from '../../../../redux/store'\r\nimport { AnimatePresence } from 'framer-motion'\r\nimport LocationDropdownDisplay from '../SearchComponents/Location/LocationDropdownDisplay'\r\nimport { IBingResource } from '../../../../interfaces/interfacesBingMap'\r\nimport IconSvg, { ICON_TYPE } from '../../../Shared/SVG/iconSvg'\r\nimport { ISearchDropdownDefaults } from '../../../../interfaces/interfaces'\r\n\r\nimport {\r\n exploreContentKeywords,\r\n exploreContentLocationText,\r\n} from '../../../../redux/explore-content/explore-content-selectors'\r\nimport { getExploreContentByKeywords } from '../../../../redux/explore-content/explore-content-thunks'\r\n\r\ninterface ISearchPopupProps {\r\n handleKeywordChange: (keyword: string) => void\r\n handleTypeahead: (location: string) => void\r\n clearSearchData: (e: React.MouseEvent, key?: string) => void\r\n locationSearchDropdown: boolean\r\n locationTypeaheadArray: IBingResource[]\r\n chooseLocation: (loc: IBingResource) => void\r\n handleOpenSearchBarSegments: (\r\n searchDefaults: ISearchDropdownDefaults\r\n ) => void\r\n openSearchbarSegments: ISearchDropdownDefaults\r\n onKeyUpHandler: (e: React.KeyboardEvent) => void\r\n}\r\n\r\nconst SearchPopup: React.FC = ({\r\n handleKeywordChange,\r\n handleTypeahead,\r\n clearSearchData,\r\n locationSearchDropdown,\r\n locationTypeaheadArray,\r\n chooseLocation,\r\n handleOpenSearchBarSegments,\r\n openSearchbarSegments,\r\n onKeyUpHandler,\r\n}: ISearchPopupProps): JSX.Element => {\r\n const dispatch = useAppDispatch()\r\n const locationText = useAppSelector(exploreContentLocationText)\r\n const keywords = useAppSelector(exploreContentKeywords)\r\n\r\n const handleSearch = (e: React.MouseEvent) => {\r\n e.preventDefault()\r\n\r\n handleOpenSearchBarSegments({\r\n ...openSearchbarSegments,\r\n audienceSearch: false,\r\n mobileSearch: false,\r\n dateSearch: false,\r\n })\r\n\r\n if (keywords) {\r\n void dispatch(getExploreContentByKeywords(keywords))\r\n }\r\n }\r\n\r\n const onLocationChange = (e: React.ChangeEvent): void => {\r\n const locationVal = e.target.value\r\n handleTypeahead(locationVal)\r\n }\r\n\r\n const onKeywordChange = (e: React.ChangeEvent): void => {\r\n const keywordVal = e.target.value\r\n handleKeywordChange(keywordVal)\r\n }\r\n\r\n return (\r\n
\r\n {\r\n handleOpenSearchBarSegments({\r\n ...openSearchbarSegments,\r\n mobileSearch: false,\r\n })\r\n }}\r\n >\r\n \r\n
\r\n
\r\n {!locationText ? (\r\n
\r\n \r\n
\r\n ) : (\r\n clearSearchData(e, 'locationText')}\r\n className=\"searchSVGContain\"\r\n >\r\n \r\n
\r\n )}\r\n \r\n All Locations...\r\n \r\n \r\n \r\n {locationSearchDropdown &&\r\n locationTypeaheadArray &&\r\n locationTypeaheadArray[0] &&\r\n locationTypeaheadArray[0].address.adminDistrict &&\r\n locationTypeaheadArray[0].address.countryRegion ===\r\n 'United Kingdom' && (\r\n
\r\n
\r\n \r\n {locationTypeaheadArray.map((loc, i) => {\r\n if (!loc.address.adminDistrict) {\r\n return\r\n }\r\n\r\n return (\r\n {\r\n chooseLocation(loc)\r\n }}\r\n key={i}\r\n className=\"header__locationOptionItems\"\r\n >\r\n \r\n \r\n )\r\n })}\r\n \r\n
\r\n
\r\n )}\r\n
\r\n {keywords === '' ? (\r\n
\r\n \r\n
\r\n ) : (\r\n clearSearchData(e, 'textSearch')}\r\n className=\"searchSVGContain\"\r\n >\r\n \r\n
\r\n )}\r\n \r\n All Attractions, Events...\r\n \r\n \r\n \r\n \r\n Search\r\n \r\n \r\n )\r\n}\r\n\r\nexport default SearchPopup\r\n","import { useEffect, useRef, useMemo, useContext } from 'react'\r\nimport SearchPopup from './SearchPopup/SearchPopup'\r\nimport { AnimatePresence, motion } from 'framer-motion'\r\nimport Variants from '../../../Helpers/pageVariants'\r\n\r\nimport { IBingResource } from '../../../interfaces/interfacesBingMap'\r\nimport IconSvg, { ICON_TYPE } from '../../Shared/SVG/iconSvg'\r\n\r\nimport { ISearchDropdownDefaults } from '../../../interfaces/interfaces'\r\nimport { GlobalContext } from '../../../Context/GlobalContext'\r\nimport { useAppSelector } from '../../../redux/store'\r\nimport {\r\n exploreContentKeywords,\r\n exploreContentLocationText,\r\n} from '../../../redux/explore-content/explore-content-selectors'\r\n\r\ninterface ISearchBarMobileProps {\r\n handleKeywordChange: (keyword: string) => void\r\n handleTypeahead: (location: string) => void\r\n chooseLocation: (loc: IBingResource) => void\r\n clearSearchData: (e: React.MouseEvent, key?: string) => void\r\n locationSearchDropdown: boolean\r\n handleOpenSearchBarSegments: (\r\n searchDefaults: ISearchDropdownDefaults\r\n ) => void\r\n openSearchbarSegments: ISearchDropdownDefaults\r\n locationTypeaheadArray: IBingResource[]\r\n onKeyUpHandler: (e: React.KeyboardEvent) => void\r\n isUserLocation: boolean\r\n handleMapMyLocation: (type?: string, performSearch?: boolean) => void\r\n partnerLogo?: string\r\n}\r\n\r\nconst SearchBarMobile: React.FC = ({\r\n handleOpenSearchBarSegments,\r\n openSearchbarSegments,\r\n handleKeywordChange,\r\n isUserLocation,\r\n clearSearchData,\r\n locationTypeaheadArray,\r\n handleTypeahead,\r\n locationSearchDropdown,\r\n chooseLocation,\r\n onKeyUpHandler,\r\n handleMapMyLocation,\r\n}: ISearchBarMobileProps): React.JSX.Element => {\r\n const global = useContext(GlobalContext)\r\n const locationText = useAppSelector(exploreContentLocationText)\r\n const keywords = useAppSelector(exploreContentKeywords)\r\n\r\n const headerRef = useRef(null)\r\n\r\n useEffect(() => {\r\n if (global.pageId === 'page--home') {\r\n headerRef.current = document.querySelector('.header-main')\r\n window.addEventListener('scroll', handleScroll, { passive: true })\r\n }\r\n\r\n return function () {\r\n if (global.pageId === 'page--home') {\r\n window.removeEventListener('scroll', handleScroll)\r\n }\r\n }\r\n }, [])\r\n\r\n const isMyLocation = useMemo(() => {\r\n return locationText === ''\r\n }, [locationText])\r\n\r\n const locationButtonText = useMemo(() => {\r\n return isMyLocation ? 'Search' : 'Near Me'\r\n }, [isMyLocation])\r\n\r\n const handleScroll = (): void => {\r\n if (window.scrollY <= 10) {\r\n headerRef.current?.classList.remove('header-main--scroll')\r\n } else {\r\n headerRef.current?.classList.add('header-main--scroll')\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {openSearchbarSegments.mobileSearch ? (\r\n \r\n ) : (\r\n <>\r\n
\r\n \r\n {\r\n handleOpenSearchBarSegments({\r\n ...openSearchbarSegments,\r\n mobileSearch: true,\r\n })\r\n }}\r\n >\r\n {!keywords && !locationText ? (\r\n <>\r\n
\r\n \r\n
\r\n
\r\n
\r\n Search\r\n
\r\n
\r\n \r\n ) : (\r\n <>\r\n clearSearchData(e)}\r\n >\r\n \r\n
\r\n
\r\n \r\n {locationText ? (\r\n <>{locationText}\r\n ) : (\r\n \r\n All locations\r\n \r\n )}\r\n \r\n {keywords.length === 0 ? (\r\n
\r\n All Attractions, Events...\r\n
\r\n ) : (\r\n \r\n {keywords}\r\n \r\n )}\r\n
\r\n \r\n )}\r\n \r\n \r\n {\r\n {\r\n if (isMyLocation) {\r\n handleOpenSearchBarSegments({\r\n ...openSearchbarSegments,\r\n mobileSearch: true,\r\n })\r\n } else {\r\n handleMapMyLocation()\r\n }\r\n }}\r\n >\r\n \r\n \r\n {locationButtonText}\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 SearchBarMobile\r\n","import { useContext, useEffect, useState } from 'react'\r\nimport './SearchBar.css'\r\nimport SearchBarDesktop from './SearchBarDesktop'\r\nimport {\r\n isUserLocation,\r\n mapsKey,\r\n setIsUserLocation,\r\n} from '../../../redux/wizardSlice'\r\nimport typeAhead, {\r\n typeaheadUniqueValues,\r\n} from './SearchComponents/Location/typeAhead'\r\nimport SearchBarMobile from './SearchBarMobile'\r\nimport { PATH_VALUES } from '../../../Helpers/PATH.resource'\r\nimport store, { useAppDispatch, useAppSelector } from '../../../redux/store'\r\nimport { ISearchDropdownDefaults } from '../../../interfaces/interfaces'\r\nimport { IBingResource } from '../../../interfaces/interfacesBingMap'\r\nimport { SEARCH_DROPDOWN_DEFAULTS } from '../../../Helpers/constants'\r\nimport useScreenSize from '../../../customHooks/useScreenSize'\r\nimport { gtag } from '../../../Helpers/ga'\r\nimport { GlobalContext } from '../../../Context/GlobalContext'\r\nimport {\r\n getExploreContentByKeywords,\r\n getExploreContentByLocation,\r\n getExploreContentByMyLocation,\r\n} from '../../../redux/explore-content/explore-content-thunks'\r\nimport { exploreContentKeywords } from '../../../redux/explore-content/explore-content-selectors'\r\nimport {\r\n updateLocationText,\r\n updateRequestPayload,\r\n updateRequestPayloadKeywords,\r\n} from '../../../redux/explore-content/explore-content-slice'\r\nimport {\r\n getStoredSearchParams,\r\n resetCurrentPage,\r\n} from '../../Explore/explore-utils'\r\n\r\nconst SearchBar: React.FC = (): React.JSX.Element => {\r\n const dispatch = useAppDispatch()\r\n const global = useContext(GlobalContext)\r\n const screenSize = useScreenSize(1024)\r\n\r\n const { key } = useAppSelector(mapsKey)\r\n const IsUserLocation = useAppSelector(isUserLocation)\r\n const keywords = useAppSelector(exploreContentKeywords)\r\n\r\n const [locationTypeaheadArray, setLocationTypeaheadArray] = useState<\r\n IBingResource[]\r\n >([])\r\n const [locationSearchDropdown, setLocationSearchDropdown] =\r\n useState(false)\r\n const [openSearchbarSegments, setOpenSearchbarSegments] =\r\n useState(SEARCH_DROPDOWN_DEFAULTS)\r\n\r\n useEffect(() => {\r\n const searchParams = getStoredSearchParams()\r\n if (searchParams) {\r\n dispatch(updateRequestPayload(resetCurrentPage(searchParams)))\r\n }\r\n dispatch(updateLocationText(sessionStorage.getItem('locationText')))\r\n }, [dispatch])\r\n\r\n const handleOpenSearchBarSegments = (\r\n searchDefaults: ISearchDropdownDefaults\r\n ): void => {\r\n setOpenSearchbarSegments(searchDefaults)\r\n }\r\n\r\n const search = (): void => {\r\n void store.dispatch(getExploreContentByKeywords(keywords))\r\n\r\n if (global.pageId === 'page--category-landing') {\r\n location.reload()\r\n } else if (global.pageId !== 'page--home') {\r\n window.location.href = PATH_VALUES.baseUrl\r\n }\r\n }\r\n\r\n const setToUserLocation = (): void => {\r\n void dispatch(getExploreContentByMyLocation()).then(() => {\r\n if (global.pageId === 'page--category-landing') {\r\n location.reload()\r\n }\r\n })\r\n }\r\n\r\n const onKeyUpHandler = (e: React.KeyboardEvent): void => {\r\n if (e.key === 'Enter') {\r\n search()\r\n }\r\n }\r\n\r\n const handleKeywordChange = (keyword: string): void => {\r\n dispatch(updateRequestPayloadKeywords(keyword))\r\n }\r\n\r\n const chooseLocation = (loc?: IBingResource): void => {\r\n setLocationSearchDropdown(false)\r\n const location = loc\r\n ? loc\r\n : locationTypeaheadArray.find((l) => l.selected)\r\n\r\n if (!location) {\r\n return\r\n }\r\n\r\n dispatch(setIsUserLocation(false))\r\n\r\n setOpenSearchbarSegments({\r\n ...openSearchbarSegments,\r\n mobileSearch: false,\r\n locationSearchText: false, //used to be: locationSearch\r\n })\r\n\r\n const locationName =\r\n location.address.locality ||\r\n location.address.adminDistrict2 ||\r\n location.address.adminDistrict\r\n\r\n void dispatch(\r\n getExploreContentByLocation({\r\n location: {\r\n latitude: location.geocodePoints[0].coordinates[0],\r\n longitude: location.geocodePoints[0].coordinates[1],\r\n },\r\n locationName,\r\n })\r\n )\r\n window.scrollTo({ top: 0 })\r\n\r\n if (global.pageId === 'page--category-landing') {\r\n window.location.reload()\r\n }\r\n\r\n void gtag({\r\n event: 'search',\r\n eventProps: {\r\n category: 'click',\r\n action: 'Start triggered',\r\n label: 'Search',\r\n value: {\r\n keywords: keywords,\r\n location: locationName,\r\n locationText: loc?.address.adminDistrict2,\r\n },\r\n },\r\n })\r\n }\r\n\r\n const handleTypeahead = (location: string): void => {\r\n dispatch(updateLocationText(location))\r\n setLocationSearchDropdown(location.length > 2)\r\n\r\n if (location.length > 2) {\r\n void typeAhead(location, key).then(({ data }) => {\r\n data.resourceSets[0].resources[0].selected = true\r\n setLocationTypeaheadArray(typeaheadUniqueValues(data))\r\n })\r\n }\r\n }\r\n\r\n const clearSearchData = (\r\n e: React.MouseEvent,\r\n key?: string\r\n ): void => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n\r\n switch (key) {\r\n case 'textSearch':\r\n void dispatch(getExploreContentByKeywords(''))\r\n dispatch(setIsUserLocation(false))\r\n break\r\n case 'locationText':\r\n void store.dispatch(getExploreContentByMyLocation())\r\n break\r\n default:\r\n break\r\n }\r\n window.scrollTo({ top: 0 })\r\n }\r\n\r\n return (\r\n <>\r\n {screenSize ? (\r\n \r\n ) : global.pageId === 'page--home' ||\r\n global.pageId === 'page--category-landing' ? (\r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default SearchBar\r\n","import './navigation-menu.css'\r\nimport React, { lazy, Suspense, useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { featureFlags } from '../../../redux/feature-flags/feature-flags-selectors'\r\n\r\n// UTILS\r\nimport { navigateTo, subdirectoryMatch } from '../../../Helpers/location'\r\n\r\n// COMPONENTS\r\nimport IconSvg, { ICON_TYPE } from '../../Shared/SVG/iconSvg'\r\nimport Loader from '../../Shared/Loader/Loader'\r\n\r\nconst NavigationMenuPopupMenu = lazy(() => import('./NavigationMenuPopupMenu'))\r\nconst CustomerNameApi = lazy(() => import('../../CustomerName/CustomerNameApi'))\r\nconst CustomerName = lazy(() => import('../../CustomerName/CustomerName'))\r\n\r\nconst NavigationMenu = () => {\r\n const ff = useSelector(featureFlags)\r\n const [openMenu, setOpenMenu] = useState(false)\r\n\r\n const isActive = (subdirectory = ''): string =>\r\n subdirectoryMatch(subdirectory) ? 'active' : ''\r\n\r\n const redirectTo = (subdirectory: string): void => {\r\n navigateTo(subdirectory)\r\n }\r\n\r\n return (\r\n \r\n )\r\n}\r\nexport default NavigationMenu\r\n","export function subdirectoryMatch(subdirectory: string) {\r\n return window.location.pathname.endsWith(subdirectory)\r\n}\r\n\r\nexport function navigateTo(url: string): void {\r\n window.location.assign(url)\r\n}\r\n","import { useContext } from 'react'\r\n\r\n// COMPONENTS\r\nimport { LogoSVGComponent } from '../Shared/SVG/logoSVG'\r\n\r\n// CONTEXT\r\nimport { GlobalContext } from '../../Context/GlobalContext'\r\n\r\nconst HeaderMainLogo = () => {\r\n const global = useContext(GlobalContext)\r\n\r\n return global.partnerId && global.partnerLogoUrl ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )\r\n}\r\nexport default HeaderMainLogo\r\n","import './header-main.css'\r\nimport React, { useContext } from 'react'\r\nimport { GlobalContext } from '../../Context/GlobalContext'\r\n\r\n// COMPONENTS\r\nimport SearchBar from '../Search/SearchBar/SearchBar'\r\nimport NavigationMenu from './NavigationMenu/NavigationMenu'\r\nimport HeaderMainLogo from './HeaderMainLogo'\r\n\r\nconst HeaderMain = () => {\r\n const global = useContext(GlobalContext)\r\n\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n

{global.headerTitle}

\r\n
\r\n \r\n )\r\n}\r\nexport default HeaderMain\r\n","const regexp = new RegExp('#([^\\\\s]*)', 'g')\r\n\r\nconst getOS = (): string => {\r\n const userAgent = window.navigator.userAgent,\r\n platform = window.navigator.platform,\r\n macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'],\r\n windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'],\r\n iosPlatforms = ['iPhone', 'iPad', 'iPod']\r\n\r\n let os = ''\r\n\r\n if (macosPlatforms.indexOf(platform) !== -1) {\r\n os = 'Mac OS'\r\n } else if (iosPlatforms.indexOf(platform) !== -1) {\r\n os = 'iOS'\r\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\r\n os = 'Windows'\r\n } else if (/Android/.test(userAgent)) {\r\n os = 'Android'\r\n } else if (!os && /Linux/.test(platform)) {\r\n os = 'Linux'\r\n }\r\n\r\n return os\r\n}\r\n\r\nconst removeTrailingSlash = (urlBefore: string): string => {\r\n let url = urlBefore.replace(regexp, '')\r\n\r\n if (url.includes('?')) {\r\n url = url.split('?')[0]\r\n }\r\n\r\n return url[url.length - 1] === '/' ? url.substr(0, url.length - 1) : url\r\n}\r\n\r\nexport const MEDIA_BASE_PATH = document\r\n .querySelector('[data-media-base-path]')\r\n ?.getAttribute('data-media-base-path') as string\r\n\r\nconst trimMediaUrl = (url: string): string => {\r\n if (MEDIA_BASE_PATH && url.startsWith(MEDIA_BASE_PATH)) {\r\n return url.replace(MEDIA_BASE_PATH, '')\r\n }\r\n\r\n return url\r\n}\r\n\r\nexport const PATH_VALUES = {\r\n isHome: () =>\r\n removeTrailingSlash(window.location.href) ===\r\n removeTrailingSlash(window.location.origin),\r\n\r\n pathName: window.location.pathname.substring(\r\n window.location.pathname.lastIndexOf('/') + 1\r\n ),\r\n trimMediaUrl: trimMediaUrl,\r\n params: window.location.search,\r\n baseUrl: window.location.origin,\r\n hostName: window.location.hostname,\r\n fullUrl: window.location.href,\r\n referrer: document.referrer,\r\n navigationType:\r\n window.performance &&\r\n window.performance.getEntriesByType('navigation')?.[0]?.entryType,\r\n os: getOS(),\r\n zoomLevel: Math.round(window.devicePixelRatio * 100),\r\n}\r\n","const Variants = {\r\n defaultPageVariants: {\r\n initial: {\r\n y: 200,\r\n opacity: 0,\r\n },\r\n in: {\r\n y: 0,\r\n opacity: 1,\r\n },\r\n out: {\r\n y: 200,\r\n opacity: 0,\r\n },\r\n },\r\n searchPageVariants: {\r\n initial: {\r\n y: -60,\r\n opacity: 0,\r\n },\r\n in: {\r\n y: 0,\r\n opacity: 1,\r\n },\r\n out: {\r\n y: 0,\r\n opacity: 0,\r\n duration: 30,\r\n },\r\n },\r\n};\r\n\r\nexport default Variants;\r\n","import { createSelector } from '@reduxjs/toolkit'\r\nimport { RootState } from '../store'\r\nimport { IMapPin } from './explore-content-interfaces'\r\nimport placeHeart from '../../assets/images/love_black.png'\r\nimport homeHeart from '../../assets/images/love.png'\r\n\r\nconst exploreContent = (state: RootState) => state.exploreContent\r\n\r\nexport const exploreContentRequestPayload = createSelector(\r\n exploreContent,\r\n (state) => state.requestPayload\r\n)\r\n\r\nexport const exploreContentRequestPayloadLocation = createSelector(\r\n exploreContentRequestPayload,\r\n (state) => state.location\r\n)\r\n\r\nexport const exploreContentItemsPerPage = createSelector(\r\n exploreContentRequestPayload,\r\n (state) => state.itemsPerPage\r\n)\r\n\r\nexport const exploreContentKeywords = createSelector(\r\n exploreContentRequestPayload,\r\n (state) => state.keywords\r\n)\r\n\r\nexport const exploreContentItems = createSelector(\r\n exploreContent,\r\n (state) => state.items\r\n)\r\n\r\nexport const exploreContentLoading = createSelector(\r\n exploreContent,\r\n (state) => state.loading\r\n)\r\n\r\nexport const exploreContentItemTotal = createSelector(\r\n exploreContent,\r\n (state) => state.itemTotal\r\n)\r\n\r\nexport const exploreContentPageNumber = createSelector(\r\n exploreContent,\r\n (state) => state.pageNumber\r\n)\r\n\r\nexport const exploreContentLocationText = createSelector(\r\n exploreContent,\r\n (state) => state.locationText\r\n)\r\n\r\nexport const locationPin = createSelector(\r\n exploreContentRequestPayloadLocation,\r\n (location) => ({\r\n clusterEnabled: false,\r\n location: [location.latitude, location.longitude],\r\n option: {\r\n title: '',\r\n color: 'var(--pop)',\r\n icon: homeHeart,\r\n },\r\n })\r\n)\r\n\r\nexport const mapPins = createSelector(\r\n [exploreContentItems, locationPin],\r\n (items, pin) => {\r\n const pins: IMapPin[] = items\r\n .filter(({ contentType }) => contentType !== 'Article')\r\n .map((item) => ({\r\n clusterEnabled: true,\r\n location: [\r\n item.locations[0].latitude,\r\n item.locations[0].longitude,\r\n ],\r\n metadata: item,\r\n option: {\r\n title: item.title,\r\n color: 'var(--pop)',\r\n icon: placeHeart,\r\n },\r\n }))\r\n pins.push(pin)\r\n return pins\r\n }\r\n)\r\n","import { useRef } from 'react';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-effect.mjs';\n\nfunction useIsMounted() {\n const isMounted = useRef(false);\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return isMounted;\n}\n\nexport { useIsMounted };\n","import * as React from 'react';\nimport { useId, useRef, useInsertionEffect } from 'react';\n\n/**\n * Measurement functionality has to be within a separate component\n * to leverage snapshot lifecycle.\n */\nclass PopChildMeasure extends React.Component {\n getSnapshotBeforeUpdate(prevProps) {\n const element = this.props.childRef.current;\n if (element && prevProps.isPresent && !this.props.isPresent) {\n const size = this.props.sizeRef.current;\n size.height = element.offsetHeight || 0;\n size.width = element.offsetWidth || 0;\n size.top = element.offsetTop;\n size.left = element.offsetLeft;\n }\n return null;\n }\n /**\n * Required with getSnapshotBeforeUpdate to stop React complaining.\n */\n componentDidUpdate() { }\n render() {\n return this.props.children;\n }\n}\nfunction PopChild({ children, isPresent }) {\n const id = useId();\n const ref = useRef(null);\n const size = useRef({\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n });\n /**\n * We create and inject a style block so we can apply this explicit\n * sizing in a non-destructive manner by just deleting the style block.\n *\n * We can't apply size via render as the measurement happens\n * in getSnapshotBeforeUpdate (post-render), likewise if we apply the\n * styles directly on the DOM node, we might be overwriting\n * styles set via the style prop.\n */\n useInsertionEffect(() => {\n const { width, height, top, left } = size.current;\n if (isPresent || !ref.current || !width || !height)\n return;\n ref.current.dataset.motionPopId = id;\n const style = document.createElement(\"style\");\n document.head.appendChild(style);\n if (style.sheet) {\n style.sheet.insertRule(`\n [data-motion-pop-id=\"${id}\"] {\n position: absolute !important;\n width: ${width}px !important;\n height: ${height}px !important;\n top: ${top}px !important;\n left: ${left}px !important;\n }\n `);\n }\n return () => {\n document.head.removeChild(style);\n };\n }, [isPresent]);\n return (React.createElement(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size }, React.cloneElement(children, { ref })));\n}\n\nexport { PopChild };\n","import * as React from 'react';\nimport { useId, useMemo } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PopChild } from './PopChild.mjs';\n\nconst PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, }) => {\n const presenceChildren = useConstant(newChildrenMap);\n const id = useId();\n const context = useMemo(() => ({\n id,\n initial,\n isPresent,\n custom,\n onExitComplete: (childId) => {\n presenceChildren.set(childId, true);\n for (const isComplete of presenceChildren.values()) {\n if (!isComplete)\n return; // can stop searching when any is incomplete\n }\n onExitComplete && onExitComplete();\n },\n register: (childId) => {\n presenceChildren.set(childId, false);\n return () => presenceChildren.delete(childId);\n },\n }), \n /**\n * If the presence of a child affects the layout of the components around it,\n * we want to make a new context value to ensure they get re-rendered\n * so they can detect that layout change.\n */\n presenceAffectsLayout ? undefined : [isPresent]);\n useMemo(() => {\n presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n }, [isPresent]);\n /**\n * If there's no `motion` components to fire exit animations, we want to remove this\n * component immediately.\n */\n React.useEffect(() => {\n !isPresent &&\n !presenceChildren.size &&\n onExitComplete &&\n onExitComplete();\n }, [isPresent]);\n if (mode === \"popLayout\") {\n children = React.createElement(PopChild, { isPresent: isPresent }, children);\n }\n return (React.createElement(PresenceContext.Provider, { value: context }, children));\n};\nfunction newChildrenMap() {\n return new Map();\n}\n\nexport { PresenceChild };\n","import * as React from 'react';\nimport { useContext, useRef, cloneElement, Children, isValidElement } from 'react';\nimport { env } from '../../utils/process.mjs';\nimport { useForceUpdate } from '../../utils/use-force-update.mjs';\nimport { useIsMounted } from '../../utils/use-is-mounted.mjs';\nimport { PresenceChild } from './PresenceChild.mjs';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { useUnmountEffect } from '../../utils/use-unmount-effect.mjs';\nimport { warnOnce } from '../../utils/warn-once.mjs';\n\nconst getChildKey = (child) => child.key || \"\";\nfunction updateChildLookup(children, allChildren) {\n children.forEach((child) => {\n const key = getChildKey(child);\n allChildren.set(key, child);\n });\n}\nfunction onlyElements(children) {\n const filtered = [];\n // We use forEach here instead of map as map mutates the component key by preprending `.$`\n Children.forEach(children, (child) => {\n if (isValidElement(child))\n filtered.push(child);\n });\n return filtered;\n}\n/**\n * `AnimatePresence` enables the animation of components that have been removed from the tree.\n *\n * When adding/removing more than a single child, every child **must** be given a unique `key` prop.\n *\n * Any `motion` components that have an `exit` property defined will animate out when removed from\n * the tree.\n *\n * ```jsx\n * import { motion, AnimatePresence } from 'framer-motion'\n *\n * export const Items = ({ items }) => (\n * \n * {items.map(item => (\n * \n * ))}\n * \n * )\n * ```\n *\n * You can sequence exit animations throughout a tree using variants.\n *\n * If a child contains multiple `motion` components with `exit` props, it will only unmount the child\n * once all `motion` components have finished animating out. Likewise, any components using\n * `usePresence` all need to call `safeToRemove`.\n *\n * @public\n */\nconst AnimatePresence = ({ children, custom, initial = true, onExitComplete, exitBeforeEnter, presenceAffectsLayout = true, mode = \"sync\", }) => {\n // Support deprecated exitBeforeEnter prop\n if (exitBeforeEnter) {\n mode = \"wait\";\n warnOnce(false, \"Replace exitBeforeEnter with mode='wait'\");\n }\n // We want to force a re-render once all exiting animations have finished. We\n // either use a local forceRender function, or one from a parent context if it exists.\n let [forceRender] = useForceUpdate();\n const forceRenderLayoutGroup = useContext(LayoutGroupContext).forceRender;\n if (forceRenderLayoutGroup)\n forceRender = forceRenderLayoutGroup;\n const isMounted = useIsMounted();\n // Filter out any children that aren't ReactElements. We can only track ReactElements with a props.key\n const filteredChildren = onlyElements(children);\n let childrenToRender = filteredChildren;\n const exiting = new Set();\n // Keep a living record of the children we're actually rendering so we\n // can diff to figure out which are entering and exiting\n const presentChildren = useRef(childrenToRender);\n // A lookup table to quickly reference components by key\n const allChildren = useRef(new Map()).current;\n // If this is the initial component render, just deal with logic surrounding whether\n // we play onMount animations or not.\n const isInitialRender = useRef(true);\n useIsomorphicLayoutEffect(() => {\n isInitialRender.current = false;\n updateChildLookup(filteredChildren, allChildren);\n presentChildren.current = childrenToRender;\n });\n useUnmountEffect(() => {\n isInitialRender.current = true;\n allChildren.clear();\n exiting.clear();\n });\n if (isInitialRender.current) {\n return (React.createElement(React.Fragment, null, childrenToRender.map((child) => (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, initial: initial ? undefined : false, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child)))));\n }\n // If this is a subsequent render, deal with entering and exiting children\n childrenToRender = [...childrenToRender];\n // Diff the keys of the currently-present and target children to update our\n // exiting list.\n const presentKeys = presentChildren.current.map(getChildKey);\n const targetKeys = filteredChildren.map(getChildKey);\n // Diff the present children with our target children and mark those that are exiting\n const numPresent = presentKeys.length;\n for (let i = 0; i < numPresent; i++) {\n const key = presentKeys[i];\n if (targetKeys.indexOf(key) === -1) {\n exiting.add(key);\n }\n }\n // If we currently have exiting children, and we're deferring rendering incoming children\n // until after all current children have exiting, empty the childrenToRender array\n if (mode === \"wait\" && exiting.size) {\n childrenToRender = [];\n }\n // Loop through all currently exiting components and clone them to overwrite `animate`\n // with any `exit` prop they might have defined.\n exiting.forEach((key) => {\n // If this component is actually entering again, early return\n if (targetKeys.indexOf(key) !== -1)\n return;\n const child = allChildren.get(key);\n if (!child)\n return;\n const insertionIndex = presentKeys.indexOf(key);\n const onExit = () => {\n allChildren.delete(key);\n exiting.delete(key);\n // Remove this child from the present children\n const removeIndex = presentChildren.current.findIndex((presentChild) => presentChild.key === key);\n presentChildren.current.splice(removeIndex, 1);\n // Defer re-rendering until all exiting children have indeed left\n if (!exiting.size) {\n presentChildren.current = filteredChildren;\n if (isMounted.current === false)\n return;\n forceRender();\n onExitComplete && onExitComplete();\n }\n };\n childrenToRender.splice(insertionIndex, 0, React.createElement(PresenceChild, { key: getChildKey(child), isPresent: false, onExitComplete: onExit, custom: custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child));\n });\n // Add `MotionContext` even to children that don't need it to ensure we're rendering\n // the same tree between renders\n childrenToRender = childrenToRender.map((child) => {\n const key = child.key;\n return exiting.has(key) ? (child) : (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child));\n });\n if (env !== \"production\" &&\n mode === \"wait\" &&\n childrenToRender.length > 1) {\n console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n }\n return (React.createElement(React.Fragment, null, exiting.size\n ? childrenToRender\n : childrenToRender.map((child) => cloneElement(child))));\n};\n\nexport { AnimatePresence };\n","import { sync } from '../frameloop/index.mjs';\nimport { useState, useCallback } from 'react';\nimport { useIsMounted } from './use-is-mounted.mjs';\n\nfunction useForceUpdate() {\n const isMounted = useIsMounted();\n const [forcedRenderCount, setForcedRenderCount] = useState(0);\n const forceRender = useCallback(() => {\n isMounted.current && setForcedRenderCount(forcedRenderCount + 1);\n }, [forcedRenderCount]);\n /**\n * Defer this to the end of the next animation frame in case there are multiple\n * synchronous calls.\n */\n const deferredForceRender = useCallback(() => sync.postRender(forceRender), [forceRender]);\n return [deferredForceRender, forcedRenderCount];\n}\n\nexport { useForceUpdate };\n"],"names":["isUKPlacesLocation","global","latitude","longitude","getUKPlacesSearchParams","baseParams","_objectSpread","location","parseFloat","maxDistance","undefined","isAffiliate","Cookies","get","getAffiliateSearchParams","JSON","parse","DEFAULT_LOCATION","getStoredSearchParams","storedSearch","sessionStorage","getItem","resetCurrentPage","searchParams","currentPage","pageVariants","initial","x","scale","opacity","in","out","placeVariants","scaleY","_ref","loc","locationDetails","setLocationDetails","useState","useEffect","_loc$address$adminDis","_loc$address","_loc$entityType","address","countryRegion","entityType","name","split","adminDistrictTwo","adminDistrict2","adminDistrict","substring","postalCode","_jsx","className","children","_jsxs","motion","div","animate","exit","variants","_Fragment","span","handleKeywordChange","handleTypeahead","chooseLocation","clearSearchData","locationSearchDropdown","handleOpenSearchBarSegments","openSearchbarSegments","locationTypeaheadArray","onKeyUpHandler","dispatch","useAppDispatch","useContext","GlobalContext","displayLocation","useAppSelector","state","wizardStore","userDisplayLocation","locationText","exploreContentLocationText","keywords","exploreContentKeywords","handleOnClick","async","getExploreContentByKeywords","window","scrollTo","top","navigateToPage","pageId","href","origin","htmlFor","IconSvg","type","ICON_TYPE","Search","onClick","e","Close","id","keywordSearch","dateSearch","audienceSearch","locationSearchText","onKeyUp","value","onChange","keywordVal","target","placeholder","stopPropagation","Location","locationVal","autoFocus","district","map","i","style","backgroundColor","selected","LocationDropdownDisplay","input","apiKey","axios","method","url","concat","encodeURIComponent","trim","mobileSearch","hidden","AnimatePresence","preventDefault","isUserLocation","handleMapMyLocation","headerRef","useRef","current","document","querySelector","addEventListener","handleScroll","passive","removeEventListener","isMyLocation","useMemo","locationButtonText","_headerRef$current","_headerRef$current2","scrollY","classList","remove","add","SearchPopup","Variants","searchPageVariants","transition","delay","y","default","duration","length","button","SearchBar","screenSize","useScreenSize","key","mapsKey","IsUserLocation","setLocationTypeaheadArray","setLocationSearchDropdown","setOpenSearchbarSegments","SEARCH_DROPDOWN_DEFAULTS","updateRequestPayload","updateLocationText","searchDefaults","store","reload","PATH_VALUES","baseUrl","keyword","updateRequestPayloadKeywords","find","l","setIsUserLocation","locationName","locality","getExploreContentByLocation","geocodePoints","coordinates","gtag","event","eventProps","category","action","label","typeAhead","then","data","resourceSets","resources","tempResources","found","filter","r","tempTypeaheadArray","o","push","typeaheadUniqueValues","getExploreContentByMyLocation","SearchBarDesktop","partnerLogo","urlLogo","SearchBarMobile","setToUserLocation","NavigationMenuPopupMenu","lazy","CustomerNameApi","CustomerName","NavigationMenu","ff","useSelector","featureFlags","openMenu","setOpenMenu","isActive","subdirectory","pathname","endsWith","subdirectoryMatch","arguments","redirectTo","assign","title","Promotions","Account","Suspense","fallback","Loader","messages","Info","Menu","menuOpen","setIsOpen","HeaderMainLogo","partnerId","partnerLogoUrl","LogoSVGComponent","logoUrl","showStrapline","HeaderMain","headerTitle","regexp","RegExp","removeTrailingSlash","urlBefore","replace","includes","substr","MEDIA_BASE_PATH","_document$querySelect","getAttribute","isHome","pathName","lastIndexOf","trimMediaUrl","startsWith","params","search","hostName","hostname","fullUrl","referrer","navigationType","performance","_window$performance$g","getEntriesByType","_window$performance$g2","entryType","os","getOS","userAgent","navigator","platform","indexOf","test","zoomLevel","Math","round","devicePixelRatio","defaultPageVariants","exploreContent","exploreContentRequestPayload","createSelector","requestPayload","exploreContentRequestPayloadLocation","itemsPerPage","exploreContentItems","items","exploreContentLoading","loading","exploreContentItemTotal","itemTotal","exploreContentPageNumber","pageNumber","locationPin","clusterEnabled","option","color","icon","mapPins","pin","pins","contentType","item","locations","metadata","useIsMounted","isMounted","useIsomorphicLayoutEffect","PopChildMeasure","React","getSnapshotBeforeUpdate","prevProps","element","this","props","childRef","isPresent","size","sizeRef","height","offsetHeight","width","offsetWidth","offsetTop","left","offsetLeft","componentDidUpdate","render","PopChild","useId","ref","useInsertionEffect","dataset","motionPopId","createElement","head","appendChild","sheet","insertRule","removeChild","PresenceChild","onExitComplete","custom","presenceAffectsLayout","mode","presenceChildren","useConstant","newChildrenMap","context","childId","set","isComplete","values","register","delete","forEach","_","PresenceContext","Provider","Map","getChildKey","child","exitBeforeEnter","warnOnce","forceRender","forcedRenderCount","setForcedRenderCount","useCallback","sync","postRender","useForceUpdate","forceRenderLayoutGroup","LayoutGroupContext","filteredChildren","filtered","Children","isValidElement","onlyElements","childrenToRender","exiting","Set","presentChildren","allChildren","isInitialRender","updateChildLookup","useUnmountEffect","clear","presentKeys","targetKeys","numPresent","insertionIndex","splice","onExit","removeIndex","findIndex","presentChild","has","env","console","warn","cloneElement"],"sourceRoot":""}