{"version":3,"file":"GeoLocation.mjs","names":["React","useState","useEffect","Button","makeStyles","FreeFormField","FluentButton","fromLonLat","useStyles","theme","root","display","flexDirection","button","marginTop","spacing","GeoLocation","props","city","setCity","state","setState","zip","setZip","country","setCountry","house","setHouse","address1","setAddress1","address2","setAddress2","response","setResponse","coordinates","setCoordinates","sendSelected","center","debug","geocode","address","formattedAddress","split","join","console","log","url","fetch","ok","Error","statusText","json","house_number","road","unit","postcode","JSON","stringify","err","getPoints","resourceSets","resources","geocodePoints","reverse","listener","event","code","document","addEventListener","removeEventListener","classes","text","length"],"sources":["../../../src/map-library/geoLocation/GeoLocation.jsx"],"sourcesContent":["import React, { useState, useEffect } from 'react'\nimport { Button, makeStyles } from '@material-ui/core'\nimport { FreeFormField } from './FreeFormField'\nimport { FluentButton } from '../../UI/inputs/buttons/FluentButton'\nimport { fromLonLat } from 'ol/proj'\n\nconst useStyles = makeStyles((theme) => ({\n  root: {\n    display: 'flex',\n    flexDirection: 'row'\n  },\n  button: {\n    marginTop: theme.spacing(1)\n  }\n}))\n\n// @todo: build out address options\nconst GeoLocation = (props) => {\n  const [city, setCity] = useState('')\n  const [state, setState] = useState('')\n  const [zip, setZip] = useState('')\n  const [country, setCountry] = useState('')\n  const [house, setHouse] = useState('')\n  const [address1, setAddress1] = useState('')\n  const [address2, setAddress2] = useState('')\n  const [response, setResponse] = useState('{}')\n  const [coordinates, setCoordinates] = useState([-117.29982, 33.054275])\n\n  const { sendSelected, center } = props\n\n  const debug = true\n  async function geocode(address) {\n    let formattedAddress = address.split(' ').join('+')\n    formattedAddress = formattedAddress.split('\\n').join('+')\n    console.log('FORMATTED ADDRESS', formattedAddress)\n    const url = `https://geocoder.say.rocks/?address=${formattedAddress}&debug=${debug}`\n\n    try {\n      const response = await fetch(url, {})\n      if (!response.ok) {\n        throw new Error(response.statusText)\n      }\n\n      const json = await response.json()\n      const {\n        house_number,\n        country,\n        house,\n        road,\n        city,\n        state,\n        unit,\n        postcode\n      } = json\n\n      setAddress1(`${house_number} ${road}`)\n      setAddress2(`${unit}`)\n      setHouse(house)\n      setCity(city)\n      setState(state)\n      setZip(postcode)\n      setCountry(country)\n      setResponse(JSON.stringify(json, null, 2))\n    } catch (err) {\n      console.log(`Node: ${err}`)\n    }\n  }\n\n  async function getPoints(address) {\n    const url = `http://dev.virtualearth.net/REST/v1/Locations/US/${house}%20${address1},%20${city},%20${state}?o=json&key=AuLp5uwpaqURqvvQt3hd8V5YDYx2yCWSUZuuHHhgwR5PYW8vlOT7Zh__eC-Su9rA`\n\n    try {\n      const response = await fetch(url, {})\n      if (!response.ok) {\n        throw new Error(response.statusText)\n      }\n\n      const json = await response.json()\n      console.log(\n        'BING RESPONSE: ',\n        json.resourceSets[0].resources[0].geocodePoints[0].coordinates\n      )\n      setCoordinates(\n        json.resourceSets[0].resources[0].geocodePoints[0].coordinates\n      )\n      sendSelected(\n        fromLonLat(\n          json.resourceSets[0].resources[0].geocodePoints[0].coordinates.reverse()\n        )\n      )\n    } catch (err) {\n      console.log(`Node: ${err}`)\n    }\n  }\n\n  useEffect(() => {\n    const listener = (event) => {\n      if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n        console.log('Enter key was pressed.', event)\n        getPoints()\n      }\n    }\n    document.addEventListener('keydown', listener)\n    return () => {\n      document.removeEventListener('keydown', listener)\n    }\n  }, [center])\n\n  const classes = useStyles()\n\n  return (\n    <div className={classes.root}>\n      <FreeFormField\n        didUpdateText={(text) => {\n          if (text.length) {\n            geocode(text)\n          } else {\n            // setHouse(\"\");\n            setAddress1('')\n            setAddress2('')\n            setCity('')\n            setState('')\n            setZip('')\n            setCountry('')\n            setResponse('{}')\n          }\n        }}\n      />\n      <FluentButton className={classes.button} size='small' onClick={getPoints}>\n        Go\n      </FluentButton>\n      {/* {console.log('RESPONSE: ', debug && response)} */}\n    </div>\n  )\n}\n\nexport default GeoLocation\n"],"mappings":"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"}