{"version":3,"file":"static/js/OfficeListingPage.8c2b40db.js","mappings":"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","sources":["components/Filter/FilterLoader.tsx","components/GoogleMap/GoogleMapLoader.tsx","components/Office/OfficeLoader.tsx","pages/OfficeListingPage/OfficeListingPage.styled.ts","pages/OfficeListingPage/OfficeListingPage.tsx","utils/getMapsCoordinates.ts"],"sourcesContent":["import loadable, { DefaultComponent } from \"@loadable/component\";\nimport React, { ReactElement } from \"react\";\n\nimport FilterProps from \"./FilterProps\";\n\nconst Filter = loadable(\n (): Promise> =>\n import(/* webpackChunkName: \"Filter\" */ \"./Filter\"),\n);\nconst FilterLoader = (props: FilterProps): ReactElement => (\n \n);\nexport default FilterLoader;\n","import loadable, { DefaultComponent } from \"@loadable/component\";\nimport React, { ReactElement } from \"react\";\n\nimport GoogleMapProps from \"./GoogleMapProps\";\n\nconst GoogleMap = loadable(\n (): Promise> =>\n import(/* webpackChunkName: \"GoogleMap\" */ \"./GoogleMap\"),\n);\nconst GoogleMapLoader = (props: GoogleMapProps): ReactElement => (\n \n);\nexport default GoogleMapLoader;\n","import loadable, { DefaultComponent } from \"@loadable/component\";\nimport React, { ReactElement } from \"react\";\n\nimport OfficeProps from \"./OfficeProps\";\n\nconst Office = loadable(\n (): Promise> =>\n import(/* webpackChunkName: \"Office\" */ \"./Office\"),\n);\nconst OfficeLoader = (props: OfficeProps): ReactElement => (\n \n);\nexport default OfficeLoader;\n","/* stylelint-disable declaration-block-no-redundant-longhand-properties */\nimport { styled, css } from \"styled-components\";\nimport theme from \"styled-theming\";\n\nimport Button from \"components/Button\";\nimport GoogleMap from \"components/GoogleMap\";\nimport { styledLink } from \"components/Link/Link.styled\";\nimport TextField from \"components/TextField\";\nimport { Container as GridContainer } from \"style/components/Page\";\nimport {\n styleBodyS,\n styleBodyM,\n styleBodyL,\n styleHeadingXL,\n styleHeadingXXL,\n} from \"style/components/Typography\";\nimport { columnGap } from \"style/grid\";\nimport { MQ } from \"style/mediaQueries\";\n\nconst buttonColorDisabled = theme(\"theme\", {\n lightgray: \"--text-on-neutral-disabled\",\n blue: \"--text-on-blue-disabled\",\n cyan: \"--text-on-cyan-disabled\",\n});\n\nconst buttonColor = theme(\"theme\", {\n lightgray: \"--text-on-neutral-primary\",\n blue: \"--text-on-blue-primary\",\n cyan: \"--text-on-cyan-primary\",\n});\n\nconst errorColor = theme(\"theme\", {\n lightgray: \"--label-on-neutral-error\",\n blue: \"--label-on-blue-error\",\n cyan: \"--label-on-cyan-error\",\n});\n\nexport const Container = styled(GridContainer)`\n ${columnGap};\n align-items: stretch;\n display: grid;\n grid-template-columns: repeat(4, [col-start] 1fr) [col-end];\n padding-bottom: 0;\n padding-top: 7.875rem;\n\n ${MQ.FROM_M} {\n grid-template-columns: repeat(12, [col-start] 1fr) [col-end];\n min-height: 100vh;\n padding-top: 10.5rem;\n }\n\n ${MQ.FROM_XL} {\n padding-top: 14.4375rem;\n }\n`;\n\nexport const ContentWrapper = styled.div`\n ${columnGap};\n align-self: flex-start;\n display: grid;\n grid-column: col-start 1 / span 4;\n grid-template-columns: repeat(4, [col-start] 1fr) [col-end];\n grid-template-rows: auto auto 1fr;\n\n ${MQ.FROM_M} {\n grid-column: col-start 1 / span 12;\n grid-template-columns: repeat(12, [col-start] 1fr) [col-end];\n }\n\n ${MQ.FROM_L} {\n grid-column: col-start 1 / span 5;\n grid-template-columns: repeat(5, [col-start] 1fr) [col-end];\n min-height: calc(100vh - 10.5rem);\n }\n\n ${MQ.FROM_XL} {\n min-height: calc(100vh - 14.4375rem);\n }\n`;\n\nexport const Header = styled.h1.attrs<{\n $headingSize: string;\n}>(() => ({}))`\n ${(props) =>\n props.$headingSize === \"XXL\"\n ? css`\n ${styleHeadingXXL}\n `\n : css`\n ${styleHeadingXL}\n `};\n grid-column: col-start / col-end;\n margin: 0;\n margin-bottom: 0.875rem;\n`;\n\nexport const FilterButtons = styled.div`\n display: flex;\n flex-flow: row wrap;\n gap: 0.875rem;\n grid-column: col-start / col-end;\n justify-content: flex-start;\n\n ${MQ.FROM_M} {\n margin-bottom: 0.875rem;\n }\n\n ${MQ.FROM_XL} {\n margin-bottom: 1.75rem;\n }\n`;\n\nexport const StyledForm = styled.form`\n ${columnGap};\n grid-column: col-start / col-end;\n margin-bottom: 2.1875rem;\n margin-top: 2.1875rem;\n position: relative;\n\n ${MQ.FROM_M} {\n margin-bottom: 1.75rem;\n margin-top: 1.75rem;\n }\n`;\n\nexport const SearchButton = styled(Button)`\n color: var(${buttonColor});\n\n &:hover {\n color: var(${buttonColor});\n }\n\n &.disabled {\n color: var(${buttonColorDisabled});\n }\n`;\n\nexport const SearchField = styled(TextField)`\n margin-bottom: 1.3125rem;\n\n ${MQ.FROM_L} {\n margin-bottom: 1.75rem;\n }\n`;\n\nexport const GpsWrapper = styled.div`\n grid-column: col-start / col-end;\n ${styleBodyM};\n`;\n\nexport const GpsButton = styled.button.attrs<{\n $hoverSpan?: boolean;\n}>(() => ({}))`\n all: unset;\n ${styledLink};\n grid-column: col-start / col-end;\n justify-self: flex-start;\n\n svg {\n margin-right: 0.875rem;\n }\n`;\n\nexport const GpsError = styled.div`\n ${styleBodyS}\n color: var(${errorColor});\n grid-column: col-start 1 / span 3;\n margin: 0;\n margin-bottom: 0;\n margin-top: 0.875rem;\n\n ${MQ.FROM_M} {\n grid-column: col-start 1 / span 4;\n }\n\n ${MQ.FROM_L} {\n grid-column: col-start 1 / span 3;\n }\n\n ${MQ.FROM_XL} {\n grid-column: col-start 1 / span 2;\n }\n`;\n\nexport const Description = styled.div`\n ${styleBodyS}\n align-self: flex-end;\n display: none;\n font-style: italic;\n margin: 0;\n\n ${MQ.FROM_L} {\n display: block;\n grid-column: col-start 1 / span 3;\n margin-bottom: 2.1875rem;\n }\n\n ${MQ.FROM_XL} {\n grid-column: col-start 1 / span 3;\n margin-bottom: 3.0625rem;\n }\n`;\n\nexport const ResultWrapper = styled.div`\n grid-column: col-start / col-end;\n\n ${MQ.FROM_L} {\n ${columnGap};\n display: grid;\n grid-column: col-start 6 / col-end;\n grid-template-columns: repeat(6, [col-start] 1fr) [col-end];\n grid-template-rows: auto 1fr;\n }\n`;\n\nexport const ResultButtons = styled.div`\n align-self: flex-start;\n display: flex;\n flex-direction: row;\n gap: 0.875rem;\n grid-column: col-start / col-end;\n justify-content: flex-end;\n margin-bottom: 1.75rem;\n\n ${MQ.FROM_XL} {\n margin-bottom: 4.375rem;\n }\n`;\n\nexport const ResultList = styled.div`\n display: flex;\n flex-flow: column;\n grid-column: 2 / col-end;\n padding-bottom: 4.375rem;\n row-gap: 2.625rem;\n\n ${MQ.FROM_M} {\n padding-bottom: 6.125rem;\n }\n\n ${MQ.FROM_XL} {\n padding-bottom: 8.75rem;\n }\n`;\n\nexport const ResultMap = styled(GoogleMap)`\n grid-column: col-start / col-end;\n min-height: calc(80vh);\n\n ${MQ.FROM_L} {\n min-height: auto;\n }\n`;\n\nexport const NoResults = styled.div`\n ${styleBodyL};\n font-style: italic;\n`;\n","import { useGTMDispatch } from \"@elgorditosalsero/react-gtm-hook\";\nimport { InputAdornment } from \"@mui/material\";\nimport React, { ReactElement, useEffect, useState } from \"react\";\nimport isEqual from \"react-fast-compare\";\nimport { FieldValues, SubmitHandler, useForm } from \"react-hook-form\";\nimport { useHistory, useLocation } from \"react-router\";\nimport { ThemeProvider } from \"styled-components\";\n\nimport Filter from \"components/Filter\";\nimport Icon from \"components/Icon\";\nimport Office from \"components/Office\";\nimport Section from \"components/Section\";\nimport TextBlock from \"components/TextBlock\";\nimport {\n useBreakpoint,\n useDebounce,\n useIsomorphicLayoutEffect,\n useGoogleMapsKey,\n} from \"hooks\";\nimport { Wrapper } from \"style/components/Page\";\nimport { LocationChangeState } from \"types/state/LocationChangeState\";\nimport { addEditAttributes } from \"utils/episerver\";\nimport { getMapCoordinates } from \"utils/getMapsCoordinates\";\n\nimport {\n Container,\n Header,\n SearchField,\n GpsButton,\n StyledForm,\n Description,\n SearchButton,\n GpsError,\n GpsWrapper,\n NoResults,\n ContentWrapper,\n ResultList,\n ResultMap,\n ResultWrapper,\n ResultButtons,\n FilterButtons,\n} from \"./OfficeListingPage.styled\";\nimport OfficeListingPageProps from \"./OfficeListingPageProps\";\n\nconst OfficeListingPage = ({\n hero,\n heading,\n result: { filters, items },\n headingSize = \"XL\",\n theme = \"blue\",\n contentTheme = \"blue\",\n actionTheme,\n searchHelp,\n l18n: {\n findUs,\n listButton,\n mapButton,\n noResults,\n searchLabel,\n searchPlaceholder,\n searchByLocationButton,\n searchByLocationErrorMessage,\n },\n}: OfficeListingPageProps): ReactElement => {\n const { control, handleSubmit, reset } = useForm();\n const [canGetLocation, setCanGetLocation] = useState(true);\n const [view, setView] = useState<\"map\" | \"list\">(\"list\");\n const [searchTerm, setSearchTerm] = useState();\n const debouncedSearchTerm = useDebounce(\n searchTerm,\n 500,\n );\n const googleMapsKey = useGoogleMapsKey();\n const [markers, setMarkers] = useState([]);\n const history = useHistory();\n const location = useLocation();\n const sendDataToGTM = useGTMDispatch();\n const hasOffices = items && items.length > 0;\n\n heading = heading || hero?.heading;\n\n const handleOnSubmit: SubmitHandler = (data) => {\n history.push({ search: `?oq=${data.oq}` });\n };\n\n const triggerSubmit = () => {\n handleOnSubmit({ oq: searchTerm });\n };\n\n useIsomorphicLayoutEffect(() => {\n if (debouncedSearchTerm !== undefined) triggerSubmit;\n }, [triggerSubmit, debouncedSearchTerm]);\n\n const handleGeoSearchClick = async () => {\n if (!navigator.geolocation) {\n setCanGetLocation(false);\n return;\n }\n const geoloc = await navigator.permissions.query({\n name: \"geolocation\",\n });\n\n if (geoloc.state !== \"granted\") {\n setCanGetLocation(false);\n }\n navigator.geolocation.getCurrentPosition((pos: GeolocationPosition) => {\n reset();\n if (pos.coords.latitude && pos.coords.longitude) {\n setCanGetLocation(true);\n }\n history.push({\n search: `?lat=${pos.coords.latitude}&lng=${pos.coords.longitude}`,\n });\n });\n };\n\n useEffect(() => {\n const query = new URLSearchParams(location.search);\n const queryTerm = query.get(\"oq\");\n const isGeoSearch = query.has(\"lat\") && query.has(\"lng\");\n\n if (queryTerm) setSearchTerm(queryTerm);\n if (queryTerm || isGeoSearch) {\n sendDataToGTM({\n event: \"office_search\",\n search_text: queryTerm || \"(geo)\",\n });\n }\n }, [location, sendDataToGTM]);\n\n let searchIcon: string;\n\n useEffect(() => {\n const fetchMarkers = async () => {\n if (!items) return;\n\n const markerOptionsPromises = items.map(async (item) => {\n let lat = item.latitude;\n let lng = item.longitude;\n\n if (!lat || !lng) {\n try {\n const coordinates = await getMapCoordinates(\n item.addressRow1 || \"\",\n item.city || \"\",\n item.postalCode || \"\",\n googleMapsKey,\n );\n lat = coordinates.lat;\n lng = coordinates.lng;\n } catch (error) {\n process.env.NODE_ENV === \"development\" &&\n console.error(\"Error fetching coordinates:\", error);\n }\n }\n\n return {\n title: item.officeName || \"\",\n position: { lat: lat || 0, lng: lng || 0 },\n ...item,\n } as google.maps.MarkerOptions;\n });\n\n const markerOptions = await Promise.all(markerOptionsPromises);\n\n const validMarkers = markerOptions.filter((marker) => {\n if (\n marker.position &&\n marker.position.lat !== undefined &&\n marker.position.lng !== undefined\n ) {\n return (\n marker.position.lat !== 0 && marker.position.lng !== 0\n );\n }\n return false;\n });\n\n setMarkers(validMarkers);\n };\n\n fetchMarkers();\n }, [items, googleMapsKey]);\n\n const hasMarkers = markers.length > 0;\n\n const map =\n hasOffices && hasMarkers\n ? {\n l18n: { findUs: findUs },\n useCluster: true,\n markers: markers,\n options: {\n zoom: 18,\n zoomControl: true,\n disableDefaultUI: false,\n mapTypeControl: false,\n center: {\n lat: 59.326613552284655,\n lng: 18.065554634562183,\n },\n },\n }\n : undefined;\n\n switch (useBreakpoint([\"XL\"])) {\n case \"XL\":\n searchIcon = \"enter56\";\n break;\n default:\n searchIcon = \"enter42\";\n }\n\n return (\n \n \n
\n \n \n {heading && (\n \n {heading}\n \n )}\n {filters && filters.length > 1 && (\n \n {filters.map((filter, index) => (\n \n {filter.linkText}\n \n ))}\n \n )}\n \n \n setSearchTerm(e.target.value || \"\")\n }\n endAdornment={\n \n \n {searchLabel}\n \n \n }\n />\n \n \n \n {searchByLocationButton}\n \n {!canGetLocation && (\n \n {searchByLocationErrorMessage}\n \n )}\n \n \n\n \n {searchHelp && (\n \n )}\n \n \n \n \n setView(\"list\")}\n >\n \n {listButton || \"List\"}\n \n setView(\"map\")}\n disabled={!hasMarkers}\n >\n \n {mapButton || \"Map\"}\n \n \n {hasOffices && hasMarkers && view === \"map\" ? (\n \n ) : (\n \n {hasOffices ? (\n items?.map((item, index) => (\n \n ))\n ) : (\n {noResults}\n )}\n \n )}\n \n \n
\n \n
\n );\n};\n\nexport default React.memo(OfficeListingPage, isEqual);\n","export async function getMapCoordinates(\n address: string,\n city: string,\n postalCode: string,\n googleMapsKey: string,\n) {\n const fullAddress = `${address}, ${postalCode}, ${city}`;\n const response = await fetch(\n `https://maps.googleapis.com/maps/api/geocode/json?address=${encodeURIComponent(\n fullAddress,\n )}&key=${googleMapsKey}`,\n );\n const data = await response.json();\n\n if (data.status === \"OK\" && data.results.length > 0) {\n const location = data.results[0].geometry.location;\n return {\n lat: location.lat,\n lng: location.lng,\n };\n } else {\n throw new Error(\"Unable to retrieve coordinates from address\");\n }\n}\n"],"names":["Filter","loadable","resolved","chunkName","isReady","props","key","resolve","__webpack_modules__","importAsync","requireAsync","then","requireSync","id","__webpack_require__","FilterLoader","_jsx","GoogleMap","GoogleMapLoader","Office","OfficeLoader","buttonColorDisabled","theme","lightgray","blue","cyan","buttonColor","errorColor","Container","styled","GridContainer","withConfig","componentId","columnGap","MQ","FROM_M","FROM_XL","ContentWrapper","div","FROM_L","Header","h1","attrs","$headingSize","css","styleHeadingXXL","styleHeadingXL","FilterButtons","StyledForm","form","SearchButton","Button","SearchField","TextField","GpsWrapper","styleBodyM","GpsButton","button","styledLink","GpsError","styleBodyS","Description","ResultWrapper","ResultButtons","ResultList","ResultMap","NoResults","styleBodyL","OfficeListingPage","hero","heading","result","filters","items","headingSize","contentTheme","actionTheme","searchHelp","l18n","findUs","listButton","mapButton","noResults","searchLabel","searchPlaceholder","searchByLocationButton","searchByLocationErrorMessage","control","handleSubmit","reset","useForm","canGetLocation","setCanGetLocation","useState","view","setView","searchTerm","setSearchTerm","debouncedSearchTerm","useDebounce","googleMapsKey","useGoogleMapsKey","markers","setMarkers","history","useHistory","location","useLocation","sendDataToGTM","useGTMDispatch","hasOffices","length","handleOnSubmit","data","push","search","oq","triggerSubmit","useIsomorphicLayoutEffect","searchIcon","useEffect","query","URLSearchParams","queryTerm","get","isGeoSearch","has","event","search_text","async","markerOptionsPromises","map","lat","item","latitude","lng","longitude","coordinates","getMapCoordinates","addressRow1","city","postalCode","error","title","officeName","position","validMarkers","Promise","all","filter","marker","undefined","fetchMarkers","hasMarkers","useCluster","options","zoom","zoomControl","disableDefaultUI","mapTypeControl","center","useBreakpoint","Wrapper","children","ThemeProvider","Section","alignItems","_jsxs","addEditAttributes","index","selected","disabled","count","url","linkText","onSubmit","method","elementName","label","placeHolder","predefinedValue","onChange","e","target","value","endAdornment","InputAdornment","icon","a11y","iconOnly","type","onClick","navigator","geolocation","permissions","name","state","getCurrentPosition","pos","coords","$hoverSpan","Icon","TextBlock","content","React","isEqual","address","fullAddress","response","fetch","encodeURIComponent","json","status","results","geometry","Error"],"sourceRoot":""}