{"version":3,"sources":["webpack:///./src/js/modules/legacy/interactiveMap/components/Filters.js","webpack:///./src/js/modules/legacy/interactiveMap/components/Map.js","webpack:///./src/js/modules/legacy/interactiveMap/components/SidebarFilter.js","webpack:///./src/js/modules/legacy/interactiveMap/components/Sidebar.js","webpack:///./src/js/modules/legacy/interactiveMap/index.js","webpack:///./node_modules/classnames/index.js","webpack:///./src/js/helpers/snazzymaps.js"],"names":["Filters","data","toggleFilter","toggleAllFilters","className","type","checked","every","filter","selected","onChange","map","key","filterId","htmlFor","name","id","src","flagImage","icon","alt","propTypes","PropTypes","array","isRequired","func","Map","mapId","apiKey","defaultLocation","filters","pins","selectedPin","onPinSelect","useJsApiLoader","googleMapsApiKey","isLoaded","mapContainerClassName","center","zoom","onClick","options","styles","maxZoom","streetViewControl","ignoredPins","pin","some","position","geo","alignBottom","maxWidth","onCloseClick","description","linkUrl","href","target","linkTarget","linkText","string","object","SidebarFilter","contentRef","useRef","useState","isOpen","setIsOpen","useEffect","current","open","element","close","classNames","viewBox","xlinkHref","ref","i","e","Sidebar","isDesktop","handlePinSelect","preventDefault","bool","InteractiveMap","title","endpoint","setIsDesktop","setDefaultLocation","hasAccordion","setHasAccordion","setFilters","setPins","setSelectedPin","Axios","method","url","params","find","console","log","fetchFeed","breakpoint","window","matchMedia","breakpoints","laptop","handleResize","matches","addListener","removeListener","filtersClone","selectAll","hasOwn","hasOwnProperty","classes","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","call","join","module","exports","default","featureType","elementType","stylers","color","visibility","weight"],"mappings":"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","file":"34.d559beb0cd0b3794e8a1.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Filters = ({ data, toggleFilter, toggleAllFilters }) => (\n <form className=\"interactive-map-module__filters\">\n <h3 className=\"interactive-map-module__filters-title\">Show</h3>\n <ul className=\"interactive-map-module__filters-list\">\n <li>\n <label className=\"interactive-map-module__filter\">\n <input\n type=\"checkbox\"\n checked={data.every(filter => filter.selected)}\n onChange={() =>\n toggleAllFilters(!data.every(filter => filter.selected))\n }\n />\n <span className=\"interactive-map-module__filter-checkmark\"></span>\n All\n </label>\n </li>\n {data.map(filter => (\n <li key={filter.filterId}>\n <label\n htmlFor={filter.filterId}\n className=\"interactive-map-module__filter\"\n >\n <input\n type=\"checkbox\"\n name={filter.filterId}\n id={filter.filterId}\n checked={filter.selected}\n onChange={() => toggleFilter(filter.filterId)}\n />\n <span className=\"interactive-map-module__filter-checkmark\"></span>\n {filter.name}\n <img src={filter.flagImage.icon} alt={filter.name} />\n </label>\n </li>\n ))}\n </ul>\n </form>\n);\n\nFilters.propTypes = {\n data: PropTypes.array.isRequired,\n toggleFilter: PropTypes.func.isRequired,\n toggleAllFilters: PropTypes.func.isRequired\n};\n\nexport default Filters;\n","import React, { useState, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n GoogleMap,\n Marker,\n InfoWindow,\n useJsApiLoader\n} from '@react-google-maps/api';\n\nimport styles from '../../../../helpers/snazzymaps';\n\nconst Map = ({\n mapId,\n apiKey,\n defaultLocation,\n filters,\n pins,\n selectedPin,\n onPinSelect\n}) => {\n const { isLoaded } = useJsApiLoader({\n id: mapId,\n googleMapsApiKey: apiKey\n });\n\n return isLoaded ? (\n <GoogleMap\n mapContainerClassName=\"interactive-map-module__map\"\n center={defaultLocation}\n zoom={12.5}\n onClick={() => onPinSelect(null)}\n options={{\n styles,\n maxZoom: 18,\n streetViewControl: false,\n ignoredPins: ['all']\n }}\n >\n {pins\n ?.filter(pin =>\n filters.some(\n filter => filter.filterId === pin.filterId && filter.selected\n )\n )\n .map(pin => (\n <Marker\n key={pin.filterId}\n position={pin.geo}\n icon={pin.icon}\n onClick={() => onPinSelect(pin)}\n />\n ))}\n {!!selectedPin && (\n <InfoWindow\n position={selectedPin.geo}\n options={{ alignBottom: true, maxWidth: 350 }}\n onCloseClick={() => onPinSelect(null)}\n >\n <div>\n <p className=\"interactive-map-module__location-name\">\n {selectedPin.name}\n </p>\n {!!selectedPin.description && (\n <p className=\"interactive-map-module__location-description\">\n {selectedPin.description}\n </p>\n )}\n {!!selectedPin.linkUrl && (\n <a\n href={selectedPin.linkUrl}\n target={selectedPin.linkTarget}\n className=\"btn btn--primary btn--small\"\n >\n {selectedPin.linkText}\n </a>\n )}\n </div>\n </InfoWindow>\n )}\n </GoogleMap>\n ) : (\n <></>\n );\n};\n\nMap.propTypes = {\n apiKey: PropTypes.string.isRequired,\n mapId: PropTypes.string.isRequired,\n defaultLocation: PropTypes.object.isRequired,\n filters: PropTypes.array,\n pins: PropTypes.array,\n selectedPin: PropTypes.object,\n onPinSelect: PropTypes.func.isRequired\n};\n\nexport default Map;\n","import React, { useRef, useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { open, close } from '../../../../helpers';\n\nconst SidebarFilter = ({ filter, pins, onPinSelect }) => {\n const contentRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n\n useEffect(() => {\n if (!contentRef.current) return;\n if (isOpen) {\n open({ element: contentRef.current });\n } else {\n close({ element: contentRef.current });\n }\n }, [isOpen]);\n\n return (\n <div\n key={filter.filterId}\n className={classNames('interactive-map-module__sidebar-filter', {\n 'interactive-map-module__sidebar-filter--open': isOpen\n })}\n >\n <button\n className=\"interactive-map-module__sidebar-filter-trigger\"\n onClick={() => setIsOpen(!isOpen)}\n >\n {filter.name}\n <svg viewBox={isOpen ? '0 0 10 2' : '0 0 10 10'}>\n <title>filter trigger</title>\n <use xlinkHref={isOpen ? '#minus' : '#plus'} />\n </svg>\n </button>\n <div\n className=\"interactive-map-module__sidebar-filter-content\"\n ref={contentRef}\n >\n <ul>\n {pins.map((pin, i) => (\n <li key={i}>\n <a\n href={pin.linkUrl}\n target={pin.linkTarget}\n onClick={e => onPinSelect(e, pin)}\n >\n {pin.name}\n </a>\n </li>\n ))}\n </ul>\n </div>\n </div>\n );\n};\n\nSidebarFilter.propTypes = {\n filter: PropTypes.object.isRequired,\n pins: PropTypes.array.isRequired,\n onPinSelect: PropTypes.func.isRequired\n};\n\nexport default SidebarFilter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport SidebarFilter from './SidebarFilter';\n\nconst Sidebar = ({ filters, pins, onPinSelect, isDesktop }) => {\n const handlePinSelect = (e, pin) => {\n if (!isDesktop) return;\n e.preventDefault();\n onPinSelect(pin);\n };\n\n return (\n <div className=\"interactive-map-module__sidebar-filters\">\n {filters.map(filter => (\n <SidebarFilter\n key={filter.filterId}\n filter={filter}\n pins={pins.filter(pin => pin.filterId === filter.filterId)}\n onPinSelect={handlePinSelect}\n />\n ))}\n </div>\n );\n};\n\nSidebar.propTypes = {\n filters: PropTypes.array.isRequired,\n pins: PropTypes.array.isRequired,\n onPinSelect: PropTypes.func.isRequired,\n isDesktop: PropTypes.bool.isRequired\n};\n\nexport default Sidebar;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Axios from 'axios';\n\nimport Filters from './components/Filters';\nimport Map from './components/Map';\nimport Sidebar from './components/Sidebar';\n\nimport { breakpoints } from '../../../helpers/constants';\n\nconst InteractiveMap = ({ title, endpoint, mapId, apiKey }) => {\n const [isDesktop, setIsDesktop] = useState(false);\n const [defaultLocation, setDefaultLocation] = useState(null);\n const [hasAccordion, setHasAccordion] = useState(false);\n const [filters, setFilters] = useState(null);\n const [pins, setPins] = useState(null);\n const [selectedPin, setSelectedPin] = useState(null);\n\n useEffect(() => {\n const fetchFeed = async () => {\n try {\n const {\n data: { defaultLocation, hasAccordion, filters, pins }\n } = await Axios({\n method: 'GET',\n url: endpoint,\n params: {\n mapId\n }\n });\n\n setDefaultLocation(defaultLocation);\n setHasAccordion(hasAccordion);\n setFilters(filters.map(filter => ({ ...filter, selected: true })));\n setPins(\n pins.map(pin => {\n const filter = filters.find(\n filter => filter.filterId === pin.filterId\n );\n return {\n ...pin,\n icon: filter.flagImage.icon\n };\n })\n );\n } catch (e) {\n console.log('Error fetching map data.');\n }\n };\n\n fetchFeed();\n }, [endpoint, mapId]);\n\n useEffect(() => {\n setSelectedPin(null);\n }, [filters]);\n\n useEffect(() => {\n const breakpoint = window.matchMedia(\n `(min-width: ${breakpoints.laptop}px)`\n );\n const handleResize = () => {\n setIsDesktop(breakpoint.matches);\n };\n\n breakpoint.addListener(handleResize);\n handleResize();\n\n return () => breakpoint.removeListener(handleResize);\n }, []);\n\n const handleToggleFilter = filterId => {\n const filtersClone = filters.map(filter =>\n filterId === filter.filterId\n ? { ...filter, selected: !filter.selected }\n : filter\n );\n setFilters(filtersClone);\n };\n\n const handleToggleAllFilters = selectAll => {\n const filtersClone = filters.map(filter => ({\n ...filter,\n selected: selectAll\n }));\n setFilters(filtersClone);\n };\n\n return defaultLocation ? (\n <>\n {!!title && <h2 className=\"interactive-map-module__title\">{title}</h2>}\n\n {!!filters && isDesktop && (\n <Filters\n data={filters}\n toggleFilter={handleToggleFilter}\n toggleAllFilters={handleToggleAllFilters}\n />\n )}\n <div className=\"interactive-map-module__map-container\">\n {!!filters && !!pins && (hasAccordion || !isDesktop) && (\n <Sidebar\n filters={filters}\n pins={pins}\n onPinSelect={setSelectedPin}\n isDesktop={isDesktop}\n />\n )}\n {isDesktop && (\n <Map\n apiKey={apiKey}\n mapId={mapId}\n defaultLocation={defaultLocation}\n filters={filters}\n pins={pins}\n selectedPin={selectedPin}\n onPinSelect={setSelectedPin}\n />\n )}\n </div>\n </>\n ) : null;\n};\n\nInteractiveMap.propTypes = {\n title: PropTypes.string,\n endpoint: PropTypes.string.isRequired,\n mapId: PropTypes.string.isRequired,\n apiKey: PropTypes.string.isRequired\n};\n\nexport default InteractiveMap;\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export default [\n {\n featureType: 'water',\n elementType: 'geometry.fill',\n stylers: [\n {\n color: '#d3d3d3'\n }\n ]\n },\n {\n featureType: 'transit',\n stylers: [\n {\n color: '#808080'\n },\n {\n visibility: 'off'\n }\n ]\n },\n {\n featureType: 'road.highway',\n elementType: 'geometry.stroke',\n stylers: [\n {\n visibility: 'on'\n },\n {\n color: '#b3b3b3'\n }\n ]\n },\n {\n featureType: 'road.highway',\n elementType: 'geometry.fill',\n stylers: [\n {\n color: '#ffffff'\n }\n ]\n },\n {\n featureType: 'road.local',\n elementType: 'geometry.fill',\n stylers: [\n {\n visibility: 'on'\n },\n {\n color: '#ffffff'\n },\n {\n weight: 1.8\n }\n ]\n },\n {\n featureType: 'road.local',\n elementType: 'geometry.stroke',\n stylers: [\n {\n color: '#d7d7d7'\n }\n ]\n },\n {\n featureType: 'poi',\n elementType: 'geometry.fill',\n stylers: [\n {\n visibility: 'on'\n },\n {\n color: '#ebebeb'\n }\n ]\n },\n {\n featureType: 'administrative',\n elementType: 'geometry',\n stylers: [\n {\n color: '#a7a7a7'\n }\n ]\n },\n {\n featureType: 'road.arterial',\n elementType: 'geometry.fill',\n stylers: [\n {\n color: '#ffffff'\n }\n ]\n },\n {\n featureType: 'road.arterial',\n elementType: 'geometry.fill',\n stylers: [\n {\n color: '#ffffff'\n }\n ]\n },\n {\n featureType: 'landscape',\n elementType: 'geometry.fill',\n stylers: [\n {\n visibility: 'on'\n },\n {\n color: '#efefef'\n }\n ]\n },\n {\n featureType: 'landscape',\n elementType: 'labels',\n stylers: [\n {\n visibility: 'off'\n }\n ]\n },\n {\n featureType: 'road',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#696969'\n }\n ]\n },\n {\n featureType: 'administrative',\n elementType: 'labels.text.fill',\n stylers: [\n {\n visibility: 'on'\n },\n {\n color: '#737373'\n }\n ]\n },\n {\n featureType: 'poi',\n elementType: 'labels.icon',\n stylers: [\n {\n visibility: 'off'\n }\n ]\n },\n {\n featureType: 'poi',\n elementType: 'labels',\n stylers: [\n {\n visibility: 'off'\n }\n ]\n },\n {\n featureType: 'road.arterial',\n elementType: 'geometry.stroke',\n stylers: [\n {\n color: '#d6d6d6'\n }\n ]\n },\n {\n featureType: 'road',\n elementType: 'labels.icon',\n stylers: [\n {\n visibility: 'off'\n }\n ]\n },\n {},\n {\n featureType: 'poi',\n elementType: 'geometry.fill',\n stylers: [\n {\n color: '#dadada'\n }\n ]\n }\n];\n"],"sourceRoot":""}