{"version":3,"file":"sections-parks.df88a011aab8d659f212.js","mappings":"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","sources":["webpack://silverstripe-base/./themes/app/src/scripts/react/common/icons.js","webpack://silverstripe-base/./themes/app/src/scripts/react/parks/Context.js","webpack://silverstripe-base/./themes/app/src/scripts/react/parks/LocationCard.js","webpack://silverstripe-base/./themes/app/src/scripts/react/parks/LocationList.js","webpack://silverstripe-base/./themes/app/src/scripts/react/parks/Sidebar.js","webpack://silverstripe-base/./themes/app/src/scripts/react/parks/MapInfoWindow.js","webpack://silverstripe-base/./themes/app/src/scripts/react/parks/MapMarker.js","webpack://silverstripe-base/./themes/app/src/scripts/react/parks/Map.js","webpack://silverstripe-base/./themes/app/src/scripts/react/parks/index.js","webpack://silverstripe-base/./themes/app/src/sections/parks.js"],"sourcesContent":["export function IconMapPin({ className }) {\n return (\n \n \n \n \n )\n}\n\nexport function IconArrowRight({ className }) {\n return (\n \n \n \n )\n}\n\nexport function IconArrowTopRight({ className }) {\n return (\n \n \n \n )\n}\n\nexport function IconMapMarker({ className }) {\n return (\n \n \n \n )\n}\n\nexport function IconFitlerGroupOpen({ className }) {\n return (\n \n \n \n \n )\n}\n\nexport function IconFitlerGroupClose({ className }) {\n return (\n \n \n \n \n )\n}\n","import React from 'react'\n\nconst AppStateContext = React.createContext()\nconst AppDispatchContext = React.createContext()\n\nfunction appReducer(state, action) {\n switch (action.type) {\n case 'setLocations': {\n return {\n ...state,\n locations: action.payload,\n }\n }\n case 'setSelectedLocation': {\n return {\n ...state,\n selectedLocation: action.payload,\n mapVisible: true,\n }\n }\n case 'setSidebarOpen': {\n return {\n ...state,\n sidebarOpen: action.payload,\n }\n }\n case 'setMapVisible': {\n return {\n ...state,\n mapVisible: action.payload,\n }\n }\n default: {\n throw new Error(`Unhandled action type: ${action.type}`)\n }\n }\n}\n\nfunction AppProvider({ children }) {\n const [state, dispatch] = React.useReducer(appReducer, {\n locations: [],\n selectedLocation: null,\n sidebarOpen: true,\n mapVisible: window.matchMedia('(min-width: 768px)').matches,\n })\n\n return (\n \n {children}\n \n )\n}\n\nfunction useAppState() {\n const context = React.useContext(AppStateContext)\n\n if (context === undefined) {\n throw new Error('useAppState must be used within a AppProvider')\n }\n\n return context\n}\n\nfunction useAppDispatch() {\n const context = React.useContext(AppDispatchContext)\n\n if (context === undefined) {\n throw new Error('useAppDispatch must be used within a AppProvider')\n }\n\n return context\n}\n\nexport { AppProvider, useAppState, useAppDispatch }\n","import { IconArrowRight, IconMapPin } from '@react/common/icons'\n\nfunction LocationCard({ location, onClick }) {\n return (\n
\n
\n {location.thumbnail && (\n {location.title}\n )}\n
\n\n
\n
\n

\n {location.title}\n

\n\n
\n \n\n
\n {location.address}\n
\n {location.city}, {location.state} {location.zip}\n
\n
\n
\n\n \n View {location.title}\n \n \n
\n
\n )\n}\n\nexport default LocationCard\n","import { useAppState, useAppDispatch } from './Context'\nimport LocationCard from './LocationCard'\n\nfunction LocationList() {\n const dispatch = useAppDispatch()\n const { locations } = useAppState()\n\n const handleClick = (location) => {\n dispatch({ type: 'setSelectedLocation', payload: location })\n }\n\n return (\n
\n {locations.map((location) => (\n handleClick(location)} />\n ))}\n
\n )\n}\n\nexport default LocationList\n","import LocationList from './LocationList'\nimport { useRef, useEffect } from 'react'\nimport { useAppState, useAppDispatch } from './Context'\n\nfunction Sidebar({ headline, content }) {\n const contentRef = useRef()\n const dispatch = useAppDispatch()\n const { sidebarOpen, mapVisible } = useAppState()\n\n const handleResize = () => {\n if (contentRef.current) {\n document.getElementById('app').style.setProperty('--map-top-offset', `${contentRef.current.offsetHeight}px`)\n }\n }\n\n useEffect(() => {\n window.addEventListener('resize', handleResize)\n\n handleResize()\n\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }, [])\n\n const handleSidebarToggle = () => {\n dispatch({ type: 'setSidebarOpen', payload: !sidebarOpen })\n }\n\n const handleMapToggle = () => {\n dispatch({ type: 'setMapVisible', payload: !mapVisible })\n }\n\n return (\n \n )\n}\n\nexport default Sidebar\n","import { IconMapPin } from '@react/common/icons'\n\nfunction MapInfoWindow({ location, handleClose }) {\n return (\n
\n \n \n \n \n \n\n
\n
\n {location.thumbnail && (\n {location.title}\n )}\n
\n\n
\n
\n

\n {location.title}\n

\n\n \n \n\n
\n {location.address}\n
\n {location.city}, {location.state} {location.zip}\n
\n \n\n {location.detailsUrl && (\n
\n \n View Details\n \n
\n )}\n
\n
\n
\n
\n )\n}\n\nexport default MapInfoWindow\n","import { useState, useEffect } from 'react'\nimport { useAppState, useAppDispatch } from './Context'\nimport MapInfoWindow from './MapInfoWindow'\nimport { IconMapMarker } from '@react/common/icons'\n\nfunction MapMarker({ location }) {\n const [isSelected, setIsSelected] = useState(false)\n const { selectedLocation } = useAppState()\n const dispatch = useAppDispatch()\n\n useEffect(() => {\n if (selectedLocation === location) {\n setIsSelected(true)\n } else {\n setIsSelected(false)\n }\n }, [selectedLocation])\n\n const handleClick = (location) => {\n if (selectedLocation === location) {\n dispatch({ type: 'setSelectedLocation', payload: null })\n } else {\n dispatch({ type: 'setSelectedLocation', payload: location })\n }\n }\n\n const handleClose = () => {\n dispatch({ type: 'setSelectedLocation', payload: null })\n }\n\n return (\n
\n {isSelected && }\n\n
handleClick(location)}>\n \n
\n
\n )\n}\n\nexport default MapMarker\n","import GoogleMapReact from 'google-map-react'\nimport { useAppState, useAppDispatch } from './Context'\nimport { useEffect, useRef, useState } from 'react'\nimport MapMarker from './MapMarker'\n\nconst defaultMapCenter = {\n lat: 43.0983671,\n lng: -75.2487004,\n}\n\nconst mapOptions = {\n maxZoom: 18,\n fullscreenControl: false,\n zoomControlOptions: {\n position: 9, // google.maps.ControlPosition.RIGHT_BOTTOM\n },\n}\n\nfunction Map({ apiKey }) {\n const mapRef = useRef()\n const dispatch = useAppDispatch()\n const [map, setMap] = useState()\n const [maps, setMaps] = useState()\n const { locations, mapVisible, selectedLocation } = useAppState()\n\n useEffect(() => {\n if (map && selectedLocation) {\n map.panTo(new maps.LatLng(selectedLocation.lat, selectedLocation.lng))\n\n if (window.matchMedia('(max-width: 767px)').matches) {\n map.panBy(0, -140)\n }\n }\n }, [map, selectedLocation])\n\n const handleOutsideClick = (e) => {\n if (!e.target.closest('.map-location')) {\n dispatch({ type: 'setSelectedLocation', payload: null })\n }\n }\n\n const apiIsLoaded = (map, maps) => {\n setMap(map)\n setMaps(maps)\n\n const bounds = new maps.LatLngBounds()\n\n locations.forEach((location) => {\n bounds.extend(new maps.LatLng(location.lat, location.lng))\n })\n\n map.setCenter(bounds.getCenter())\n map.fitBounds(bounds)\n\n maps.event.addListenerOnce(map, 'idle', () => {\n mapRef.current.classList.remove('is-loading')\n })\n }\n\n return (\n \n
\n apiIsLoaded(map, maps)}\n >\n {locations.map((location) => (\n \n ))}\n \n
\n \n )\n}\n\nexport default Map\n","import { useEffect } from 'react'\nimport { useAppDispatch } from './Context'\nimport Sidebar from './Sidebar'\nimport Map from './Map'\n\nfunction App({ data }) {\n const dispatch = useAppDispatch()\n\n useEffect(() => {\n dispatch({ type: 'setLocations', payload: data.locations })\n\n document.getElementById('app').classList.add('is-init')\n }, [])\n\n return (\n
\n
\n \n \n
\n
\n )\n}\n\nexport default App\n","import ReactDOM from 'react-dom'\nimport App from '@react/parks'\nimport { AppProvider } from '@react/parks/Context'\n\nconst el = document.getElementById('app')\nconst data = JSON.parse(el.dataset.json)\n\nReactDOM.render(\n \n \n ,\n el\n)\n"],"names":["IconMapPin","_ref","className","_jsxs","viewBox","children","_jsx","d","fill","IconArrowRight","_ref2","xmlns","stroke","strokeWidth","IconArrowTopRight","_ref3","IconMapMarker","_ref4","IconFitlerGroupOpen","_ref5","IconFitlerGroupClose","_ref6","AppStateContext","React","AppDispatchContext","appReducer","state","action","type","locations","payload","selectedLocation","mapVisible","sidebarOpen","Error","AppProvider","dispatch","window","matchMedia","matches","Provider","value","useAppState","context","undefined","useAppDispatch","location","onClick","id","thumbnail","src","loading","alt","title","address","city","zip","map","LocationCard","handleClick","headline","content","contentRef","useRef","handleResize","current","document","getElementById","style","setProperty","offsetHeight","useEffect","addEventListener","removeEventListener","ref","dangerouslySetInnerHTML","__html","handleSidebarToggle","handleMapToggle","LocationList","handleClose","href","directionsUrl","target","rel","detailsUrl","isSelected","setIsSelected","useState","MapInfoWindow","defaultMapCenter","lat","lng","mapOptions","maxZoom","fullscreenControl","zoomControlOptions","position","apiKey","mapRef","setMap","maps","setMaps","panTo","LatLng","panBy","e","closest","GoogleMapReact","bootstrapURLKeys","key","defaultCenter","defaultZoom","options","yesIWantToUseGoogleMapApiInternals","onGoogleApiLoaded","apiIsLoaded","bounds","LatLngBounds","forEach","extend","setCenter","getCenter","fitBounds","event","addListenerOnce","classList","remove","MapMarker","data","add","Sidebar","Map","el","JSON","parse","dataset","json","ReactDOM","App"],"sourceRoot":""}