{"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":""}