{"version":3,"file":"static/chunks/1971.620199dcf802a7e9.js","mappings":"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","sources":["webpack://_N_E/./components/BackgroundImage/BackgroundImage.js","webpack://_N_E/./components/BackgroundImage/index.js","webpack://_N_E/./components/CookieOverlay/CookieOverlay.js","webpack://_N_E/./components/CookieOverlay/index.js","webpack://_N_E/./components/MapInfoWindow/MapInfoWindow.js","webpack://_N_E/./components/MapInfoWindow/index.js","webpack://_N_E/./components/StreamField/StreamField.js","webpack://_N_E/./components/StreamField/index.js","webpack://_N_E/./components/MapFilterCategories/MapFilterCategories.js","webpack://_N_E/./components/MapFilterCategories/index.js","webpack://_N_E/./utils/mapFilters.js","webpack://_N_E/./components/MapFilter/MapFilter.js","webpack://_N_E/./components/MapFilter/index.js","webpack://_N_E/./components/MapResults/MapResults.js","webpack://_N_E/./components/MapResults/index.js","webpack://_N_E/./containers/MapPage/MapPage.js","webpack://_N_E/./containers/MapPage/index.js","webpack://_N_E/./utils/SerializeImage.js","webpack://_N_E/./components/BackgroundImage/BackgroundImage.module.scss","webpack://_N_E/./components/CookieOverlay/CookieOverlay.module.scss","webpack://_N_E/./components/MapFilter/MapFilter.module.scss","webpack://_N_E/./components/MapFilterCategories/MapFilterCategories.module.scss","webpack://_N_E/./components/MapInfoWindow/MapInfoWindow.module.scss","webpack://_N_E/./components/MapResults/MapResults.module.scss","webpack://_N_E/./components/StreamField/StreamField.module.scss","webpack://_N_E/./containers/MapPage/MapPage.module.scss"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Image from 'next/image';\nimport styles from './BackgroundImage.module.scss';\n\nconst BackgroundImage = ({\n alt = '',\n src = '',\n sizes = null,\n credits = null,\n quality = 75,\n width = null,\n height = null,\n focal = null,\n loadedCallback = () => {},\n shouldLazyLoad = true,\n fill = true,\n hasLogo,\n}) => {\n const [isLoaded, setIsLoaded] = useState(false);\n const [objectFitSupported, setObjectFitSupported] = useState(true);\n\n useEffect(() => {\n if ('objectFit' in document.documentElement.style === false) {\n setObjectFitSupported(false);\n setIsLoaded(true);\n }\n }, []);\n\n useEffect(() => {\n if (isLoaded) {\n loadedCallback();\n }\n }, [isLoaded, loadedCallback]);\n\n const style = { backgroundImage: `url(${src})` };\n const loading = shouldLazyLoad ? 'lazy' : undefined;\n const isPriority = !shouldLazyLoad;\n\n const classes = classNames(\n styles['BackgroundImage'],\n { [styles['BackgroundImage--Loaded']]: isLoaded || isPriority },\n { [styles['BackgroundImage--Fallback']]: !objectFitSupported },\n { [styles['BackgroundImage--HasLogo']]: hasLogo }\n );\n\n let imageProps = {};\n\n if (!fill) {\n imageProps.width = width;\n imageProps.height = height;\n }\n\n return (\n <figure className={classes}>\n {objectFitSupported && src ? (\n <Image\n alt={alt}\n className={styles['BackgroundImage__Image']}\n onLoad={() => setIsLoaded(true)}\n src={src}\n sizes={sizes}\n loading={loading}\n priority={isPriority}\n quality={quality}\n fill={fill}\n style={{\n objectPosition: focal\n ? `${focal.x} ${focal.y}`\n : '50% 50%',\n }}\n {...imageProps}\n />\n ) : (\n <div\n className={styles['BackgroundImage__Image']}\n style={style}\n title={credits}\n />\n )}\n </figure>\n );\n};\n\nBackgroundImage.propTypes = {\n alt: PropTypes.string,\n src: PropTypes.string,\n sizes: PropTypes.string,\n credits: PropTypes.string,\n width: PropTypes.number,\n focal: PropTypes.object,\n height: PropTypes.number,\n quality: PropTypes.number,\n shouldLazyLoad: PropTypes.bool,\n loadedCallback: PropTypes.func,\n fill: PropTypes.bool,\n};\n\nexport default BackgroundImage;\n","import BackgroundImage from './BackgroundImage';\n\nexport default BackgroundImage;\n","import PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport styles from './CookieOverlay.module.scss';\nimport Button from '../Button';\n\nconst CookieOverlay = ({\n text,\n buttonText,\n modifiers = [],\n handleClick,\n icon,\n}) => {\n const classes = classNames(\n styles['CookieOverlay'],\n modifiers.map((modifier) => styles[`CookieOverlay--${modifier}`])\n );\n\n return (\n <div className={classes}>\n <p\n className={styles['CookieOverlay__Text']}\n dangerouslySetInnerHTML={{ __html: text }}\n />\n <Button\n type=\"Primary\"\n onClick={handleClick}\n text={buttonText}\n icon={icon}\n />\n </div>\n );\n};\n\nCookieOverlay.propTypes = {\n text: PropTypes.string,\n buttonText: PropTypes.string,\n modifiers: PropTypes.arrayOf(PropTypes.string),\n handleClick: PropTypes.func,\n icon: PropTypes.string,\n};\n\nCookieOverlay.defaultProps = {};\n\nexport default CookieOverlay;\n","import CookieOverlay from './CookieOverlay';\n\nexport default CookieOverlay;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'next-i18next';\nimport classNames from 'classnames';\nimport { serializeImage } from '../../utils/SerializeImage';\nimport BackgroundImage from '../BackgroundImage';\nimport styles from './MapInfoWindow.module.scss';\n\nconst MapInfoWindow = ({\n href = '',\n readMore,\n title = '',\n image = {},\n newTab = false,\n}) => {\n const { t } = useTranslation('common');\n\n const isExternalLink = href && !href.includes('.visitsweden.');\n const isGoogleMapsLink = href && href.includes('maps.google.com');\n const url = href && !isExternalLink ? `${href}?from_map=1` : href;\n\n // These translations doesn't seem to work, maybe loaded too late, so make sure text is passed to this component\n const defaultReadMore = isGoogleMapsLink\n ? t('mapInfoWindow.goToMap')\n : t('mapInfoWindow.readMore');\n const readMoreText = readMore || defaultReadMore;\n\n const serializedImage = serializeImage(image);\n const sizes = '95px';\n const hasImage = image && image?.src;\n\n const classes = classNames(\n styles['MapInfoWindow'],\n { [styles['MapInfoWindow--HasImage']]: hasImage },\n { [styles['MapInfoWindow--External']]: isExternalLink }\n );\n\n return (\n <div className={classes}>\n <a\n className={styles['MapInfoWindow__Link']}\n href={url}\n target={newTab || isExternalLink ? '_blank' : '_self'}\n rel=\"noreferrer\"\n aria-label={`${title}: ${readMoreText}`}\n />\n <div className={styles['MapInfoWindow__Container']}>\n {hasImage && (\n <div className={styles['MapInfoWindow__Image']}>\n <BackgroundImage\n {...serializedImage}\n sizes={sizes}\n quality={60}\n shouldLazyLoad={false}\n hideAlt={true}\n />\n </div>\n )}\n <div className={styles['MapInfoWindow__Content']}>\n <div className={styles['MapInfoWindow__Text']}>{title}</div>\n <div className={styles['MapInfoWindow__ReadMore']}>\n {readMoreText}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nMapInfoWindow.propTypes = {\n href: PropTypes.string,\n title: PropTypes.string,\n image: PropTypes.object,\n newTab: PropTypes.bool,\n};\n\nMapInfoWindow.defaultProps = {\n href: '',\n title: '',\n image: {},\n newTab: false,\n};\n\nexport default MapInfoWindow;\n","import MapInfoWindow from './MapInfoWindow';\n\nexport default MapInfoWindow;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport dynamic from 'next/dynamic';\nimport { snakeToPascal } from '../../utils/caseconverters';\nimport styles from './StreamField.module.scss';\n\nconst ImageGallery = dynamic(() => import('../ImageGallery'));\nconst Faq = dynamic(() => import('../Faq'));\nconst RawHtml = dynamic(() => import('../RawHtml'));\nconst ArticleList = dynamic(() => import('../ArticleList'));\nconst Cards = dynamic(() => import('../Cards'));\nconst Quote = dynamic(() => import('../Quote'));\nconst PlaceSection = dynamic(() => import('../PlaceSection'));\nconst PostSegment = dynamic(() => import('../PostSegment'));\nconst ShortFacts = dynamic(() => import('../ShortFacts'));\nconst CardFact = dynamic(() => import('../CardFact'));\nconst VideoSegment = dynamic(() => import('../VideoSegment'));\nconst Map = dynamic(() => import('../Map'));\nconst CTA = dynamic(() => import('../CTA'));\nconst CampaignPreamble = dynamic(() => import('../CampaignPreamble'));\nconst CampaignText = dynamic(() => import('../CampaignText'));\nconst CampaignPostSegment = dynamic(() => import('../CampaignPostSegment'));\nconst CampaignCards = dynamic(() => import('../CampaignCards'));\nconst CampaignVideoSegment = dynamic(() => import('../CampaignVideoSegment'));\nconst CampaignImageGallery = dynamic(() => import('../CampaignImageGallery'));\nconst CampaignCTA = dynamic(() => import('../CampaignCTA'));\nconst CampaignEmbedded = dynamic(() => import('../CampaignEmbedded'));\nconst CampaignFaq = dynamic(() => import('../CampaignFaq'));\nconst CampaignModal = dynamic(() => import('../CampaignModal'));\nconst CampaignGrid = dynamic(() => import('../CampaignGrid'));\nconst CampaignDupes = dynamic(() => import('../CampaignDupes'));\n\nconst Components = {\n ImageGallery: ImageGallery,\n FaqBlock: Faq,\n RichText: RawHtml,\n ArticleList: ArticleList,\n Cards: Cards,\n Quote: Quote,\n PlaceSection: PlaceSection,\n PostSegment: PostSegment,\n ShortFacts: ShortFacts,\n FactBox: CardFact,\n VideoSegment: VideoSegment,\n Map: Map,\n Cta: CTA,\n CampaignPreamble: CampaignPreamble,\n CampaignText: CampaignText,\n CampaignPostSegment: CampaignPostSegment,\n CampaignCards: CampaignCards,\n CampaignVideoSegment: CampaignVideoSegment,\n CampaignImageGallery: CampaignImageGallery,\n CampaignCta: CampaignCTA,\n CampaignEmbedded: CampaignEmbedded,\n CampaignFaq: CampaignFaq,\n CampaignModal: CampaignModal,\n CampaignGrid: CampaignGrid,\n CampaignDupes: CampaignDupes,\n};\n\nclass StreamField extends React.PureComponent {\n render() {\n const { items, pageType } = this.props;\n\n if (!items.length) {\n return null;\n }\n\n const dynamicComponents = items.map((item, index) => {\n item.component = snakeToPascal(item.type);\n const Component = Components[item.component];\n\n if (!Component) {\n return null;\n }\n\n const colors = item?.value?.colors || null;\n\n const classes = classNames(\n styles['StreamField__Component'],\n styles[`StreamField__Component--${item.component}`],\n {\n [styles['StreamField__Component--FirstItem']]: index === 0,\n [styles[`StreamField__Component--${colors}`]]: colors,\n }\n );\n\n return (\n <div key={index} id={item.id} className={classes}>\n <Component\n id={item.id}\n pageType={pageType}\n {...item.value}\n />\n </div>\n );\n });\n\n return <div className={styles['StreamField']}>{dynamicComponents}</div>;\n }\n}\n\nStreamField.propTypes = {\n items: PropTypes.array,\n pageType: PropTypes.string,\n};\n\nStreamField.defaultProps = {\n items: [],\n};\n\nexport default StreamField;\n","import StreamField from './StreamField';\n\nexport default StreamField;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'next-i18next';\nimport styles from './MapFilterCategories.module.scss';\nimport isEmpty from '../../utils/isEmpty';\nimport classNames from 'classnames';\nimport useMediaQuery from '../../utils/useMediaQuery';\nimport { breakpoints } from '../../constants';\nimport { useContextState } from '../StateProvider';\n\nconst MapFilterCategories = ({ regions, categories, counts }) => {\n const { t } = useTranslation('common');\n const [{ activeRegions, activeCategories, isCategoriesOpen }, dispatch] =\n useContextState();\n\n const isMobile = useMediaQuery({\n query: `(max-width: ${breakpoints.m}px)`,\n });\n\n const classes = classNames(styles['MapFilterCategories'], {\n [styles['MapFilterCategories--Open']]: isCategoriesOpen,\n [styles['MapFilterCategories--Mobile']]: isMobile,\n });\n\n const hasFilters = activeCategories.length + activeRegions.length > 0;\n\n return (\n <div className={classes}>\n <div className={styles['MapFilterCategories__Header']}>\n <span>{t('mapFilterCategories.filterHeader')}</span>\n {hasFilters && (\n <button\n onClick={() => dispatch({ type: 'reset_filter' })}\n className={styles['MapFilterCategories__Clear']}>\n {t('mapFilterCategories.clearAll')}\n </button>\n )}\n </div>\n <Drawer\n isRegion={true}\n activeFilters={activeRegions}\n counts={counts.regionCount}\n buttonCallback={(path) => {\n dispatch({\n type: 'toggle_active_region',\n payload: path,\n });\n }}\n {...regions}\n />\n {categories.map((item) => {\n return (\n <Drawer\n activeFilters={activeCategories}\n counts={counts.categoryCount}\n buttonCallback={(path) => {\n dispatch({\n type: 'toggle_active_category',\n payload: path,\n });\n }}\n key={item.id}\n {...item}\n />\n );\n })}\n </div>\n );\n};\n\nconst Drawer = ({\n title,\n path,\n isRegion,\n children,\n counts,\n depth,\n activeFilters,\n buttonCallback,\n}) => {\n const [{ fromLink }] = useContextState();\n const [isOpen, setIsOpen] = useState(false);\n const [hasActiveChildren, setHasActiveChildren] = useState(false);\n\n useEffect(() => {\n if (fromLink && hasActiveChildren) {\n setIsOpen(true);\n }\n }, [fromLink, hasActiveChildren]);\n\n useMemo(() => {\n const flattenChildren = (f, acc) => {\n for (let x = 0; x < f.length; x++) {\n acc.push(f[x].path);\n if (f[x].children.length > 0) {\n acc = flattenChildren(f[x].children, acc);\n }\n }\n return acc;\n };\n const intersects = (a, b) => {\n return [...new Set(a)].filter((x) => new Set(b).has(x)).length > 0;\n };\n\n if (intersects(flattenChildren(children, []), activeFilters)) {\n setHasActiveChildren(true);\n } else {\n setHasActiveChildren(false);\n }\n }, [activeFilters, children]);\n\n const buttonToggleClasses = classNames(\n styles['MapFilterCategories__Toggle'],\n styles['MapFilterCategories__Toggle--Grey300'],\n {\n [styles['MapFilterCategories__Toggle--Plus']]: !isOpen,\n },\n {\n [styles['MapFilterCategories__Toggle--Minus']]: isOpen,\n }\n );\n\n const checkBoxClass = classNames(styles['MapFilterCategories__Checkbox'], {\n [styles['MapFilterCategories__Checkbox--Active']]:\n activeFilters.indexOf(path) > -1,\n [styles['MapFilterCategories__Checkbox--ActiveChildren']]:\n activeFilters.indexOf(path) === -1 && hasActiveChildren,\n });\n\n const drawerClass = classNames(styles['MapFilterCategories__Drawer'], {\n [styles[`MapFilterCategories__Drawer--Depth${depth}`]]: true,\n [styles['MapFilterCategories__Drawer--IsRegion']]: isRegion,\n [styles['MapFilterCategories__Drawer--IsRegionWithActive']]:\n isRegion && activeFilters.indexOf(path) === -1 && hasActiveChildren,\n [styles['MapFilterCategories__Drawer--IsActive']]:\n activeFilters.indexOf(path) > -1,\n });\n\n let count = 0;\n\n if (!isRegion && counts) {\n /*\n * This basically gets the count for current filter\n * then gets count for its children and sub children\n */\n count = counts[path];\n if (children.length > 0) {\n let children_counts = children.reduce((p, c) => {\n let cnt = p + counts[c.path];\n if (c.children.length > 0) {\n cnt += c.children.reduce((pp, cc) => {\n return pp + counts[cc.path];\n }, 0);\n }\n return cnt;\n }, 0);\n count += children_counts;\n }\n }\n\n if (isRegion && counts) {\n /*\n * This basically gets the count for current filter\n * then gets count for its children and sub children\n */\n count = counts[path];\n }\n\n if (\n (count === 0 && children.length === 0) ||\n (depth === 1 && count === 0)\n ) {\n return null;\n }\n\n return (\n <>\n <div id={`p${path}`} className={drawerClass}>\n <button\n onClick={() => {\n isRegion ? setIsOpen((p) => !p) : buttonCallback(path);\n }}\n className=\"MapFilteerCategories__ToggleCategory\">\n <span\n className={checkBoxClass}\n data-choice={true}\n aria-hidden={true}\n />\n\n <span className={styles['MapFilterCategories__Title']}>\n {title}\n {/*\n <span className={styles[\"MapFilterCategories__Count\"]}>\n {count}\n </span>\n */}\n </span>\n </button>\n\n {!isEmpty(children) && count > 0 && (\n <button\n className={buttonToggleClasses}\n aria-controls={`p${path}`}\n aria-expanded={isOpen}\n onClick={() => setIsOpen((p) => !p)}>\n <span className=\"sr-only\">Open</span>\n </button>\n )}\n </div>\n {isOpen &&\n children.map((item) => {\n return (\n <Drawer\n activeFilters={activeFilters}\n buttonCallback={buttonCallback}\n counts={counts}\n key={item.id}\n {...item}\n />\n );\n })}\n </>\n );\n};\n\nDrawer.propTypes = {\n title: PropTypes.string,\n children: PropTypes.array,\n depth: PropTypes.number,\n path: PropTypes.string,\n isRegion: PropTypes.bool,\n activeFilters: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n buttonCallback: PropTypes.func,\n counts: PropTypes.object,\n};\n\nDrawer.defaultProps = { counts: {}, title: '', children: [], depth: 0 };\n\nMapFilterCategories.propTypes = {\n regions: PropTypes.object,\n categories: PropTypes.array,\n counts: PropTypes.object,\n};\n\nMapFilterCategories.defaultProps = { counts: {}, categories: [], regions: {} };\n\nexport default MapFilterCategories;\n","import MapFilterCategories from './MapFilterCategories';\n\nexport default MapFilterCategories;\n","const baseFilter = (filter, items, pathName) => {\n return items.filter((item) => {\n if (!item[pathName]) {\n return false;\n }\n\n const matches = filter.filter((f) => item[pathName].indexOf(f) === 0);\n return matches.length > 0;\n });\n};\n\nconst categoryFilter = (filter, items) => {\n return baseFilter(filter, items, 'categoryPath');\n};\n\nconst regionFilter = (filter, items) => {\n return baseFilter(filter, items, 'path');\n};\n\nconst getCountAbstract = (filters, pois, pathName) => {\n const flattenFilters = (f, acc) => {\n for (let x = 0; x < f.length; x++) {\n acc.push(f[x].path);\n if (f[x].children.length > 0) {\n acc = flattenFilters(f[x].children, acc);\n }\n }\n return acc;\n };\n\n let categoryCounter = {};\n let flattened = flattenFilters(filters, []);\n let matches = 0;\n for (let i = 0; i < flattened.length; i++) {\n if (pathName === 'categoryPath') {\n matches = pois.filter(\n (poi) => poi[pathName] === flattened[i]\n ).length;\n } else {\n // for (var p = 0; p < pois.length; p++) {\n matches = pois.filter(\n (p) => p[pathName].indexOf(flattened[i]) === 0\n ).length;\n // }\n // matches = pois.filter((poi) => poi[pathName] === flattened[i])\n // .length;\n }\n\n categoryCounter[flattened[i]] = matches;\n }\n\n return categoryCounter;\n};\n\nconst getCategoryCount = (filters, pois) => {\n return getCountAbstract(filters, pois, 'categoryPath');\n};\n\nconst getRegionCount = (filters, pois) => {\n filters = filters.filter((x) => x);\n return getCountAbstract(filters, pois, 'path');\n};\n\nexport { categoryFilter, regionFilter, getCategoryCount, getRegionCount };\n","import React, { useEffect, useState, useRef, useContext } from 'react';\nimport { renderToString } from 'react-dom/server';\nimport PropTypes from 'prop-types';\nimport styles from './MapFilter.module.scss';\nimport supercluster from 'points-cluster';\nimport { setCookie, getCookie } from '../../utils/cookies';\nimport useMediaQuery from '../../utils/useMediaQuery';\nimport { breakpoints } from '../../constants';\nimport GoogleMapReact from 'google-map-react';\nimport CookieOverlay from '../CookieOverlay';\nimport MapFilterCategories from '../MapFilterCategories';\nimport MapInfoWindow from '../MapInfoWindow';\nimport { useContextState } from '../StateProvider';\nimport { CookieStateContext } from '../../containers/BasePage/state';\nimport classNames from 'classnames';\nimport { useTranslation } from 'next-i18next';\nimport BaseContext from '../../containers/BasePage/BaseContext';\nimport {\n getCategoryCount,\n getRegionCount,\n categoryFilter,\n regionFilter,\n} from '../../utils/mapFilters';\nimport BackgroundImage from '../BackgroundImage';\nimport { serializeImage } from '../../utils/SerializeImage';\n\nconst createMapOptions = () => {\n return {\n clickableIcons: false,\n clickableLabels: false,\n fullscreenControl: false,\n maxZoom: 17,\n };\n};\n\nconst MapFilter = ({\n categoryFilters,\n regionFilters,\n title,\n mapText,\n apiKey,\n image,\n cookieConsent,\n}) => {\n const { googleMapsApiKey } = useContext(BaseContext);\n const mapApiKey = apiKey || googleMapsApiKey;\n\n const { t } = useTranslation('common');\n const [\n {\n pointsOfInterest,\n activeCategories,\n activeRegions,\n filteredPois,\n isCategoriesOpen,\n clusters,\n },\n dispatch,\n ] = useContextState();\n const [map, setMap] = useState(null);\n const [maps, setMaps] = useState(null);\n const [showInfo, setShowInfo] = useState(true);\n const [mapProps, setMapProps] = useState({});\n const [infoWindow, setInfoWindow] = useState(null);\n const [counts, setCounts] = useState({\n regionCount: {},\n categoryCount: {},\n });\n const firstRender = useRef(true);\n\n const [showMapWithoutCookieConsent, setShowMapWithoutCookieConsent] =\n useState(false);\n\n const sizes = '(max-width: 768px) 100vw, 1024px';\n\n useEffect(() => {\n setShowInfo(getCookie('map_cookie') !== '1');\n }, []);\n\n useEffect(() => {\n const categoryCount = getCategoryCount(\n categoryFilters,\n pointsOfInterest\n );\n const regionCount = getRegionCount(\n [regionFilters, ...(regionFilters?.children || [])],\n pointsOfInterest\n );\n setCounts({\n categoryCount,\n regionCount,\n });\n }, [categoryFilters, pointsOfInterest, regionFilters]);\n\n useEffect(() => {\n let items = [];\n\n // Filter out routes, these are not supported yet\n const filteredItems = (pointsOfInterest || [])\n .map((point) => {\n return {\n ...point,\n geoPoints: point.geoPoints.filter(\n (geoPoint) => geoPoint.type !== 'route'\n ),\n };\n })\n .filter((point) => {\n return point.geoPoints.length > 0;\n });\n\n // Handles multiple POIs by creating duplicate entries in the items\n // list for entities that have more than one POI.\n filteredItems.forEach((point) => {\n if (point.geoPoints && point.geoPoints.length) {\n point.geoPoints.forEach((geoPoint) => {\n items.push({\n ...point,\n lat: parseFloat(geoPoint.lat),\n lng: parseFloat(geoPoint.lng),\n });\n });\n }\n });\n\n if (activeCategories.length > 0) {\n items = categoryFilter(activeCategories, items);\n }\n\n if (activeRegions.length > 0) {\n items = regionFilter(activeRegions, items);\n }\n\n dispatch({ type: 'set_filtered_pois', payload: items });\n dispatch({ type: 'set_meta_count', payload: items.length });\n\n if (maps && map && items.length > 0) {\n /* Recenter + zoom map around filtered pois */\n let bounds = new maps.LatLngBounds();\n for (let i = 0; i < items.length; i++) {\n bounds.extend({\n lat: parseFloat(items[i].lat),\n lng: parseFloat(items[i].lng),\n });\n }\n map.fitBounds(bounds);\n }\n }, [\n pointsOfInterest,\n activeCategories,\n activeRegions,\n dispatch,\n maps,\n map,\n ]);\n\n useEffect(() => {\n /* This effect will cluster points that are too close to eachother */\n if (!mapProps || !mapProps.bounds) {\n return;\n }\n\n const c = supercluster(filteredPois, { radius: 25 });\n\n const r = c({\n bounds: {\n nw: {\n lat: parseFloat(mapProps.bounds.nw.lat),\n lng: parseFloat(mapProps.bounds.nw.lng),\n },\n se: {\n lat: parseFloat(mapProps.bounds.se.lat),\n lng: parseFloat(mapProps.bounds.se.lng),\n },\n },\n zoom: mapProps.zoom,\n });\n\n const flattenCluster = (cluster) => {\n return cluster.reduce((pv, cv) => {\n return [...pv, ...cv.points];\n }, []);\n };\n\n const filteredClusters = flattenCluster(r);\n\n dispatch({ type: 'set_clusters', payload: r });\n dispatch({ type: 'set_filtered_clusters', payload: filteredClusters });\n dispatch({ type: 'set_meta_count', payload: filteredClusters.length });\n }, [dispatch, mapProps, filteredPois]);\n\n const isDesktop = useMediaQuery({\n query: `(min-width: ${breakpoints.l}px)`,\n });\n\n const zoomToCluster = (points) => {\n let bounds = new maps.LatLngBounds();\n for (let i = 0; i < points.length; i++) {\n bounds.extend({\n lat: points[i].lat,\n lng: points[i].lng,\n });\n }\n map.fitBounds(bounds);\n dispatch({ type: 'set_has_interacted' });\n };\n\n const center = {\n lat: parseFloat(60.95),\n lng: parseFloat(20.33),\n };\n\n const onMapChangeHandler = (props) => {\n setMapProps(props);\n };\n\n const handleInteractions = () => {\n if (!firstRender.current) {\n dispatch({ type: 'set_has_interacted' });\n }\n firstRender.current = false;\n };\n\n const readMoreText = t('mapFilter.readMore');\n const triggerInfoWindow = ({ lat, lng, readMore, ...restItem }) => {\n infoWindow.setPosition({ lat: parseFloat(lat), lng: parseFloat(lng) });\n infoWindow.setContent(\n renderToString(\n <MapInfoWindow\n {...restItem}\n readMore={readMore || readMoreText}\n />\n )\n );\n infoWindow.open(map);\n };\n\n const isMobile = useMediaQuery({\n query: `(max-width: ${breakpoints.m}px)`,\n });\n\n const filterCount = activeRegions.length + activeCategories.length;\n const filterLabel =\n filterCount === 0 ? 'mapFilter.filter' : 'mapFilter.filterPlural';\n\n const shouldUseApi =\n typeof window === 'undefined' ||\n filterCount > 0 ||\n getCookie('map_cookie') ||\n !showInfo;\n\n const results = clusters\n .map((i) => i.numPoints || 0)\n .reduce((pv, cv) => {\n return pv + cv;\n }, 0);\n\n const serializedImage = serializeImage(image);\n const noMapClasses = classNames(styles['MapFilter__NoMap']);\n\n return (\n <div className={styles['MapFilter'] + ' MapFilter'}>\n <div className={styles['MapFilter__List']}>\n {isDesktop && shouldUseApi && (\n <div className={styles['MapFilter__Results']}>\n {t('mapFilter.resultsOnMap', {\n count: results,\n })}\n </div>\n )}\n <MapFilterCategories\n regions={regionFilters}\n categories={categoryFilters}\n counts={counts}\n />\n <div className={styles['MapFilter__Map']}>\n {showInfo &&\n (cookieConsent || showMapWithoutCookieConsent) && (\n <div className={noMapClasses}>\n <BackgroundImage\n {...serializedImage}\n shouldLazyLoad={false}\n sizes={sizes}\n hideAlt={true}\n />\n <div className={styles['MapFilter__Confirm']}>\n <h1\n className={\n styles['MapFilter__ConfirmHeading']\n }>\n {title}\n </h1>\n <p\n className={\n styles['MapFilter__HelpText']\n }>\n {mapText}\n </p>\n <button\n onClick={() => {\n setShowInfo(false);\n setCookie('map_cookie', 1);\n }}\n className={\n styles['MapFilter__ConfirmButton']\n }>\n {t('mapFilter.confirmButton')}\n </button>\n </div>\n </div>\n )}\n {!showInfo &&\n (cookieConsent || showMapWithoutCookieConsent) && (\n <GoogleMapReact\n onChange={onMapChangeHandler}\n onClick={handleInteractions}\n onZoomAnimationEnd={handleInteractions}\n defaultCenter={center}\n options={createMapOptions}\n bootstrapURLKeys={\n shouldUseApi ? { key: mapApiKey } : null\n }\n yesIWantToUseGoogleMapApiInternals\n tabIndex={-1}\n onGoogleApiLoaded={({ map, maps }) => {\n setMap(map);\n setMaps(maps);\n setInfoWindow(new maps.InfoWindow());\n }}\n defaultZoom={5}>\n {clusters.map((item, i) => {\n return item.numPoints > 1 ? (\n <Cluster\n points={item.points}\n key={i}\n lat={item.wy}\n lng={item.wx}\n onClickCallback={zoomToCluster}>\n {item.numPoints}\n </Cluster>\n ) : (\n <Pin\n key={i}\n {...item.points[0]}\n onClick={() => {\n triggerInfoWindow(\n item.points[0]\n );\n }}\n />\n );\n })}\n </GoogleMapReact>\n )}\n {!(cookieConsent || showMapWithoutCookieConsent) && (\n <div className={noMapClasses}>\n <CookieOverlay\n text={t('mapFilter.cookieText')}\n buttonText={t('mapFilter.cookieButton')}\n modifiers={['Map']}\n handleClick={() => {\n setShowMapWithoutCookieConsent(true);\n }}\n />\n </div>\n )}\n </div>\n </div>\n {isMobile && (\n <div className={styles['MapFilter__ButtonWrapper']}>\n <button\n onClick={() =>\n dispatch({\n type: 'set_filter_open',\n payload: !isCategoriesOpen,\n })\n }\n className={styles['MapFilter__Button']}>\n {isCategoriesOpen\n ? t('mapFilter.showResults', {\n count: filteredPois.length,\n })\n : t(filterLabel, {\n count: filterCount,\n })}\n </button>\n </div>\n )}\n </div>\n );\n};\n\nconst Pin = ({ lng, lat, onClick }) => {\n return (\n <button\n onClick={onClick}\n lat={parseFloat(lat)}\n lng={parseFloat(lng)}\n className={styles['MapFilter__Poi']}></button>\n );\n};\n\nconst Cluster = ({ lng, lat, children, points, onClickCallback }) => {\n return (\n <button\n onClick={() => onClickCallback(points)}\n lat={parseFloat(lng)}\n lng={parseFloat(lat)}\n className={styles['MapFilter__Cluster']}>\n <div className={styles['MapFilter__ClusterInner']}>{children}</div>\n </button>\n );\n};\n\nCluster.propTypes = {\n lng: PropTypes.number,\n lat: PropTypes.number,\n points: PropTypes.array,\n onClickCallback: PropTypes.func,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]),\n};\n\nPin.propTypes = {\n lng: PropTypes.number,\n lat: PropTypes.number,\n item: PropTypes.object,\n infoWindow: PropTypes.object,\n map: PropTypes.object,\n};\n\nMapFilter.propTypes = {\n categoryFilters: PropTypes.array,\n regionFilters: PropTypes.object,\n title: PropTypes.string,\n mapText: PropTypes.string,\n apiKey: PropTypes.string,\n image: PropTypes.object,\n};\n\nMapFilter.defaultProps = { categoryFilters: [] };\n\nexport default MapFilter;\n","import MapFilter from './MapFilter';\n\nexport default MapFilter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useContextState } from '../StateProvider';\nimport SearchResults from '../SearchResults';\nimport styles from './MapResults.module.scss';\n\nconst MapResults = ({ children }) => {\n const [{ filteredClusters, sorting, hasInteracted }] = useContextState();\n\n // An article might have multiple POIs, but we only want to show articles\n // once in the list, so we need to remove duplicates here.\n const removeDuplicates = (article) =>\n article.filter(function (a, i, self) {\n return self.findIndex((b) => a.id === b.id) === i;\n });\n\n const sorted = (article) => {\n return article.sort((a, b) => {\n if (sorting == 'title') {\n return a.title.localeCompare(b.title);\n } else if (sorting == 'published') {\n return a.publishedAt.localeCompare(b.publishedAt);\n }\n });\n };\n\n return (\n <div className={styles['MapResults']}>\n {hasInteracted && (\n <SearchResults\n items={sorted(removeDuplicates(filteredClusters))}\n />\n )}\n {!hasInteracted && children}\n </div>\n );\n};\n\nMapResults.propTypes = {\n children: PropTypes.node,\n};\n\nMapResults.defaultProps = {};\n\nexport default MapResults;\n","import MapResults from './MapResults';\n\nexport default MapResults;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { basePageWrap } from '../BasePage';\nimport { objToQueryString, searchToMapObj } from '../../utils/url';\nimport MapFilter from '../../components/MapFilter';\nimport MapResults from '../../components/MapResults';\nimport StreamField from '../../components/StreamField';\nimport StateProvider from '../../components/StateProvider';\nimport { CookieStateContext } from '../BasePage/state';\nimport styles from './MapPage.module.scss';\n\nconst baseState = {\n activeCategories: [],\n activeRegions: [],\n sorting: 'title',\n filteredPois: [],\n view: 'grid',\n hasInteracted: false,\n clusters: [],\n};\n\nconst toggleItem = (items, item) =>\n items.includes(item) ? items.filter((i) => i !== item) : [...items, item];\n\nconst reducer = (state, action) => {\n let newState;\n switch (action.type) {\n case 'set_clusters':\n return { ...state, clusters: action.payload };\n case 'set_filtered_clusters':\n return { ...state, filteredClusters: action.payload };\n case 'set_has_interacted':\n return { ...state, hasInteracted: true };\n case 'reset_filter':\n return { ...state, activeRegions: [], activeCategories: [] };\n case 'set_filter_open':\n return { ...state, isCategoriesOpen: action.payload };\n case 'set_meta_count':\n return { ...state, meta: { totalHits: action.payload } };\n case 'set_filtered_pois':\n return { ...state, filteredPois: action.payload };\n case 'set_categories':\n return { ...state, categories: action.payload };\n case 'set_sorting':\n newState = { ...state, sorting: action.payload };\n handleHistoryState(newState);\n return newState;\n case 'set_view':\n newState = { ...state, view: action.payload };\n handleHistoryState(newState);\n return newState;\n case 'toggle_active_region':\n newState = {\n ...state,\n activeRegions: toggleItem(state.activeRegions, action.payload),\n };\n handleHistoryState(newState);\n return newState;\n case 'toggle_active_category':\n newState = {\n ...state,\n activeCategories: toggleItem(\n state.activeCategories,\n action.payload\n ),\n };\n handleHistoryState(newState);\n return newState;\n default:\n return state;\n }\n};\n\nconst handleHistoryState = (state) => {\n if (typeof window === 'undefined') {\n return;\n }\n\n const params = {\n categories: state.activeCategories.join(','),\n regions: state.activeRegions.join(','),\n view: state.view,\n };\n\n window.history.replaceState(\n params,\n 'search',\n '?' + objToQueryString(params)\n );\n};\n\nconst MapPage = ({ mapData, contentBlocks, title, mapText, hero }) => {\n let mapParams = {};\n if (typeof window !== 'undefined') {\n mapParams = searchToMapObj(window.location.search);\n }\n\n const initialState = {\n ...baseState,\n pointsOfInterest: mapData.pois,\n ...mapParams,\n fromLink: typeof window !== 'undefined' && !!window.location.search,\n meta: {},\n sortChoices: [\n { title: 'Title', path: 'title' },\n { title: 'Published', path: 'published' },\n ],\n isCategoriesOpen: false,\n fromMap: true,\n isMap: true,\n };\n\n const cookieContext = useContext(CookieStateContext);\n const cookieConsent =\n cookieContext?.state?.categories &&\n cookieContext.state.categories.includes('targeting');\n\n return (\n <div className={styles['MapPage']}>\n <div className={styles['MapPage__Wrap']}>\n <div id=\"main-content\" />\n <StateProvider reducer={reducer} initialState={initialState}>\n <MapFilter\n {...mapData.filters}\n apiKey={mapData.apiKey}\n title={title}\n mapText={mapText}\n image={hero.image ? hero.image : {}}\n cookieConsent={cookieConsent}\n />\n <MapResults>\n {Array.isArray(contentBlocks) && (\n <StreamField items={contentBlocks} />\n )}\n </MapResults>\n </StateProvider>\n </div>\n </div>\n );\n};\n\nMapPage.propTypes = {\n title: PropTypes.string,\n mapText: PropTypes.string,\n mapData: PropTypes.object,\n hero: PropTypes.object,\n contentBlocks: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n};\nMapPage.defaultProps = {\n mapText: '',\n title: '',\n filters: {},\n initialPois: {},\n hero: {},\n mapData: {},\n};\n\nexport default basePageWrap(MapPage);\n","import MapPage from './MapPage';\n\nexport default MapPage;\n","export function serializeImage(obj, shouldNotHaveAlt) {\n if (!obj) {\n return null;\n }\n\n if (!obj?.file) {\n const defaultImageLoc =\n '/wt/static/pipit/assets/img/default-list-image.jpg';\n\n return {\n src: defaultImageLoc,\n alt: '',\n width: 900,\n height: 1200,\n srcSet: `${defaultImageLoc} 480w, ${defaultImageLoc} 768w, ${defaultImageLoc} 1024w`,\n };\n }\n\n const alt = obj.altText || obj.title || undefined;\n const credits = obj.credits || undefined;\n const caption = obj.caption || undefined;\n const width = obj.width || undefined;\n const height = obj.height || undefined;\n const title = obj.title || undefined;\n const focal = obj.focal || undefined;\n\n return {\n src: obj.url || obj.src,\n alt: shouldNotHaveAlt ? alt : '',\n credits: credits,\n width: width,\n height: height,\n title: title,\n focal: focal,\n caption: caption,\n };\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"BackgroundImage\":\"BackgroundImage_BackgroundImage__OL9yi\",\"BackgroundImage--HasLogo\":\"BackgroundImage_BackgroundImage--HasLogo__ssimT\",\"BackgroundImage__Image\":\"BackgroundImage_BackgroundImage__Image__j0V_P\",\"BackgroundImage--Loaded\":\"BackgroundImage_BackgroundImage--Loaded__JgdIE\",\"BackgroundImage--Fallback\":\"BackgroundImage_BackgroundImage--Fallback___KV0J\",\"BackgroundImage__Credits\":\"BackgroundImage_BackgroundImage__Credits__u8ZwA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"CookieOverlay\":\"CookieOverlay_CookieOverlay__IOd5K\",\"CookieOverlay--Map\":\"CookieOverlay_CookieOverlay--Map__eDiam\",\"CookieOverlay--VideoSegment\":\"CookieOverlay_CookieOverlay--VideoSegment__j_A7v\",\"CookieOverlay__Text\":\"CookieOverlay_CookieOverlay__Text__b0dqw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"MapFilter__ConfirmHeading\":\"MapFilter_MapFilter__ConfirmHeading__Q1KgO\",\"MapFilter__HelpText\":\"MapFilter_MapFilter__HelpText__nmgCz\",\"MapFilter__Results\":\"MapFilter_MapFilter__Results__Fc7SF\",\"MapFilter__Button\":\"MapFilter_MapFilter__Button__zcaOC\",\"MapFilter__ConfirmButton\":\"MapFilter_MapFilter__ConfirmButton__kC_ri\",\"MapFilter__NoMap\":\"MapFilter_MapFilter__NoMap__YGLJn\",\"MapFilter__Confirm\":\"MapFilter_MapFilter__Confirm__usIcX\",\"MapFilter__List\":\"MapFilter_MapFilter__List__KZDNf\",\"MapFilter__ButtonWrapper\":\"MapFilter_MapFilter__ButtonWrapper__6OxHV\",\"MapFilter__Map\":\"MapFilter_MapFilter__Map__DlJcS\",\"MapFilter__Cluster\":\"MapFilter_MapFilter__Cluster__9H_HP\",\"MapFilter__ClusterInner\":\"MapFilter_MapFilter__ClusterInner__KtZOk\",\"MapFilter__Poi\":\"MapFilter_MapFilter__Poi__XSwkX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"MapFilterCategories__Title\":\"MapFilterCategories_MapFilterCategories__Title__eNh_9\",\"MapFilterCategories__Header\":\"MapFilterCategories_MapFilterCategories__Header__8CkfT\",\"MapFilterCategories\":\"MapFilterCategories_MapFilterCategories__ggxyg\",\"MapFilterCategories--Open\":\"MapFilterCategories_MapFilterCategories--Open__vYDa5\",\"MapFilterCategories__Clear\":\"MapFilterCategories_MapFilterCategories__Clear__b58R4\",\"MapFilterCategories__Drawer\":\"MapFilterCategories_MapFilterCategories__Drawer__TZ4cr\",\"MapFilterCategories__Drawer--IsRegionWithActive\":\"MapFilterCategories_MapFilterCategories__Drawer--IsRegionWithActive__xYqAP\",\"MapFilterCategories__Drawer--IsActive\":\"MapFilterCategories_MapFilterCategories__Drawer--IsActive__GvJw_\",\"MapFilterCategories__Drawer--IsRegion\":\"MapFilterCategories_MapFilterCategories__Drawer--IsRegion__skARl\",\"MapFilterCategories__Drawer--Depth2\":\"MapFilterCategories_MapFilterCategories__Drawer--Depth2__i5g9G\",\"MapFilterCategories__Drawer--Depth3\":\"MapFilterCategories_MapFilterCategories__Drawer--Depth3__YQkBh\",\"MapFilterCategories__Drawer--Depth4\":\"MapFilterCategories_MapFilterCategories__Drawer--Depth4__u_PwO\",\"MapFilterCategories__Checkbox\":\"MapFilterCategories_MapFilterCategories__Checkbox__OIidl\",\"MapFilterCategories__Checkbox--Active\":\"MapFilterCategories_MapFilterCategories__Checkbox--Active__O6NI_\",\"MapFilterCategories__Checkbox--ActiveChildren\":\"MapFilterCategories_MapFilterCategories__Checkbox--ActiveChildren__CgR1E\",\"MapFilterCategories__Toggle\":\"MapFilterCategories_MapFilterCategories__Toggle__U8EVH\",\"MapFilterCategories__Toggle--Grey300\":\"MapFilterCategories_MapFilterCategories__Toggle--Grey300__pMjWN\",\"MapFilterCategories__Toggle--Plus\":\"MapFilterCategories_MapFilterCategories__Toggle--Plus__kjeHp\",\"MapFilterCategories__Toggle--Minus\":\"MapFilterCategories_MapFilterCategories__Toggle--Minus__07Czp\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"MapInfoWindow__Text\":\"MapInfoWindow_MapInfoWindow__Text__WFD72\",\"MapInfoWindow\":\"MapInfoWindow_MapInfoWindow__1wlBM\",\"MapInfoWindow__Link\":\"MapInfoWindow_MapInfoWindow__Link__aA8Et\",\"MapInfoWindow__Container\":\"MapInfoWindow_MapInfoWindow__Container__gR1VW\",\"MapInfoWindow__Content\":\"MapInfoWindow_MapInfoWindow__Content__7OWmt\",\"MapInfoWindow__Image\":\"MapInfoWindow_MapInfoWindow__Image__K60Ai\",\"MapInfoWindow__ReadMore\":\"MapInfoWindow_MapInfoWindow__ReadMore__swvYi\",\"MapInfoWindow--External\":\"MapInfoWindow_MapInfoWindow--External__B8XLs\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"MapResults\":\"MapResults_MapResults__IPrso\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"StreamField\":\"StreamField_StreamField__27oiz\",\"Map\":\"StreamField_Map___G0_q\",\"StreamField__Component--Cards\":\"StreamField_StreamField__Component--Cards__5SWLQ\",\"StreamField__Component--PlaceSection\":\"StreamField_StreamField__Component--PlaceSection__rxSeC\",\"StreamField--Component--PostSegment--FullWidth\":\"StreamField_StreamField--Component--PostSegment--FullWidth__JSDcc\",\"StreamField__Component--BlackOnYellow\":\"StreamField_StreamField__Component--BlackOnYellow__YvJeA\",\"StreamField__Component--WhiteOnBlue\":\"StreamField_StreamField__Component--WhiteOnBlue__SEBM3\",\"StreamField__Component--BlackOnWhite\":\"StreamField_StreamField__Component--BlackOnWhite___vEjT\",\"StreamField__Component--CampaignPreamble\":\"StreamField_StreamField__Component--CampaignPreamble__wK_Ab\",\"StreamField__Component--CampaignCta\":\"StreamField_StreamField__Component--CampaignCta__ga4vC\",\"StreamField__Component--CampaignPostSegment\":\"StreamField_StreamField__Component--CampaignPostSegment__Y_EQ3\"};","// extracted by mini-css-extract-plugin"],"names":["BackgroundImage","alt","src","sizes","credits","quality","width","height","focal","loadedCallback","shouldLazyLoad","fill","hasLogo","param","isLoaded","setIsLoaded","useState","objectFitSupported","setObjectFitSupported","useEffect","document","documentElement","style","isPriority","classes","classNames","styles","imageProps","jsx_runtime","jsx","figure","className","Image","onLoad","loading","undefined","priority","objectPosition","x","concat","y","div","backgroundImage","title","propTypes","PropTypes","components_BackgroundImage","CookieOverlay","text","buttonText","modifiers","handleClick","icon","map","modifier","jsxs","p","dangerouslySetInnerHTML","__html","Button","type","onClick","defaultProps","components_CookieOverlay","MapInfoWindow","href","readMore","image","newTab","t","useTranslation","isExternalLink","includes","isGoogleMapsLink","url","defaultReadMore","readMoreText","serializedImage","serializeImage","hasImage","a","target","rel","aria-label","hideAlt","components_MapInfoWindow","ImageGallery","dynamic","Promise","all","__webpack_require__","e","then","bind","Faq","RawHtml","ArticleList","Cards","Quote","PlaceSection","PostSegment","ShortFacts","CardFact","VideoSegment","Map","CTA","CampaignPreamble","CampaignText","CampaignPostSegment","CampaignCards","CampaignVideoSegment","CampaignImageGallery","CampaignCTA","CampaignEmbedded","CampaignFaq","Components","FaqBlock","RichText","FactBox","Cta","CampaignCta","CampaignModal","CampaignGrid","CampaignDupes","StreamField","React","render","items","pageType","props","length","dynamicComponents","item","index","component","snakeToPascal","Component","colors","value","id","components_StreamField","MapFilterCategories","regions","categories","counts","activeRegions","activeCategories","isCategoriesOpen","dispatch","useContextState","isMobile","useMediaQuery","query","breakpoints","m","hasFilters","span","button","Drawer","isRegion","activeFilters","regionCount","buttonCallback","payload","path","categoryCount","children","depth","fromLink","isOpen","setIsOpen","hasActiveChildren","setHasActiveChildren","useMemo","flattenChildren","f","acc","push","Set","filter","has","buttonToggleClasses","checkBoxClass","indexOf","drawerClass","count","reduce","c","cnt","pp","cc","children_counts","Fragment","data-choice","aria-hidden","isEmpty","aria-controls","aria-expanded","baseFilter","pathName","matches","categoryFilter","regionFilter","getCountAbstract","filters","pois","flattenFilters","categoryCounter","flattened","i","poi","getCategoryCount","getRegionCount","createMapOptions","clickableIcons","clickableLabels","fullscreenControl","maxZoom","MapFilter","categoryFilters","regionFilters","mapText","apiKey","cookieConsent","googleMapsApiKey","useContext","BaseContext","pointsOfInterest","filteredPois","clusters","setMap","maps","setMaps","showInfo","setShowInfo","mapProps","setMapProps","infoWindow","setInfoWindow","setCounts","firstRender","useRef","showMapWithoutCookieConsent","setShowMapWithoutCookieConsent","getCookie","filteredItems","_object_spread_props","_","_object_spread","point","geoPoints","geoPoint","forEach","lat","parseFloat","lng","bounds","LatLngBounds","extend","fitBounds","r","supercluster","radius","nw","se","zoom","filteredClusters","cluster","pv","cv","points","isDesktop","l","zoomToCluster","center","handleInteractions","current","triggerInfoWindow","_param","restItem","setPosition","setContent","renderToString","open","filterCount","shouldUseApi","results","numPoints","noMapClasses","h1","setCookie","GoogleMapReact","onChange","onZoomAnimationEnd","defaultCenter","options","bootstrapURLKeys","key","yesIWantToUseGoogleMapApiInternals","tabIndex","onGoogleApiLoaded","InfoWindow","defaultZoom","Cluster","wy","wx","onClickCallback","Pin","MapResults","sorting","hasInteracted","SearchResults","article","self","findIndex","b","sort","localeCompare","publishedAt","baseState","view","toggleItem","reducer","state","action","newState","meta","totalHits","handleHistoryState","params","join","window","history","replaceState","objToQueryString","MapPage","cookieContext","mapData","contentBlocks","hero","mapParams","searchToMapObj","location","search","initialState","sortChoices","fromMap","isMap","CookieStateContext","StateProvider","Array","isArray","initialPois","containers_MapPage","basePageWrap","obj","shouldNotHaveAlt","file","defaultImageLoc","srcSet","altText","caption","module","exports"],"sourceRoot":""}