{"version":3,"sources":["components/School.js","components/Advertise.js","components/SelectedSchool.js","components/SetHomeLocation.js","components/MapFrame.js","components/Utils.js","components/Home.js","components/Welcome.js","components/NavMenu.js","App.js","registerServiceWorker.js","index.js"],"names":["SchoolPicture","props","style","imageUrl","backgroundImage","className","School","handleClick","school","title","this","name","distance","distanceFromHome","onClick","Component","displayName","Advertise","OtherSchool","src","alt","SelectedSchool","closeCard","closeSelection","printSchools","window","print","width","height","viewBox","fill","xmlns","fillRule","d","otherSchools","map","key","id","colSpan","SetHomeLocation","search","confirmLocation","MapFrame","aria-label","type","handleExitFullMap","role","aria-hidden","focusable","ref","googleMapRef","AppStates","Home","getFilteredSchools","console","table","schools","filter","Array","isArray","synonyms","matchList","primary_school","push","maha_vidyalaya","vidyalaya","college","some","token","re","RegExp","match","filterSchools","state","filters","createRef","googleSearchBoxRef","updateDimensions","innerWidth","setState","isMobile","handleClickOnSchool","schoolOther","selectedSchool","schoolsWithinCircle","handleCloseSelection","handleTogleMap","showMap","handleTogleSettings","showSettings","setAppState","currentCircle","selectedAddress","all","none","pre_school","dhamma_school","international_school","english_acadamy","institute","log","addEventListener","drawInitialMap","current","setSearchBox","appState","doNearbySchoolSearch","prevProps","removeEventListener","schoolSelected","setHomeLocation","schoolList","length","display","placeholder","handleShowFilters","Welcome","googleSearchBoxWelcomeRef","action","method","NavMenu","App","getLocationFromQueryString","params","queryString","parse","location","ho_lat","ho_lng","lat","parseFloat","lng","calcDistance","p1","p2","google","maps","geometry","spherical","computeDistanceBetween","toFixed","homePosition","LatLng","distanceMeters","position","setMap","Circle","strokeColor","strokeOpacity","strokeWeight","fillColor","fillOpacity","center","radius","setLocation","panTo","setHomeMarker","service","places","PlacesService","request1","request2","schoolsResult","nearbySearch","nearbySearchCallBack","results","status","pagination","that","PlacesServiceStatus","OK","hasNextPage","nextPage","mappedData","index","self","findIndex","t","place_id","place","undefined","getUrl","iconUrl","icon","i","createMarkerForSchool","panToLocation","homeMarker","image","url","scaledSize","Size","Marker","draggable","animation","Animation","DROP","event","addListener","getPosition","marker","contentString","infowindow","InfoWindow","content","open","close","searchBoxRef","autocomplete","Autocomplete","selectedLocation","getPlace","latlng","mapWindowRef","Map","zoom","mapTypeControl","mapTypeControlOptions","MapTypeControlStyle","HORIZONTAL_BAR","ControlPosition","BOTTOM_CENTER","locationFromUrl","comp","href","rel","target","isLocalhost","Boolean","hostname","registerValidSW","swUrl","navigator","serviceWorker","register","then","registration","onupdatefound","installingWorker","installing","onstatechange","controller","catch","error","document","getElementsByTagName","getAttribute","googleScript","createElement","setAttribute","body","appendChild","rootElement","getElementById","ReactDOM","render","URL","process","origin","fetch","response","headers","get","indexOf","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.2a2521a9.chunk.js","sourcesContent":["import React, { Component } from 'react';\r\nimport './school.css'\r\n\r\nconst SchoolPicture = (props) => {\r\n var style = null;\r\n if (props.imageUrl) {\r\n style = {\r\n backgroundImage: `url('${props.imageUrl}')`\r\n };\r\n } else {\r\n style = {\r\n backgroundImage: `linear-gradient(61deg, rgb(256, 248, 246) 7%, rgb(228, 220, 2121) 35%, rgb(255, 255, 255)`\r\n };\r\n }\r\n\r\n return (\r\n
\r\n
\r\n );\r\n}\r\n\r\n\r\n\r\nclass School extends Component {\r\n static displayName = School.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n handleClick = () => {\r\n this.props.handleClick(this.props.school);\r\n }\r\n \r\n\r\n render() {\r\n const title = this.props.school.name;\r\n const distance = this.props.school.distanceFromHome;\r\n return (\r\n
\r\n \r\n
\r\n {title}\r\n
\r\n
\r\n {distance} m\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default School;","import React, { Component } from 'react';\r\nimport './advertise.css'\r\n\r\nclass Advertise extends Component {\r\n static displayName = Advertise.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n \r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n

\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default Advertise","import React, { Component } from 'react';\r\nimport './selectedschool.css'\r\n\r\nconst OtherSchool = (props) => {\r\n return (\r\n
\r\n \"\"/\r\n
\r\n
{props.school.name}
\r\n

Distance From Home : {props.school.distanceFromHome} m

\r\n
\r\n
\r\n );\r\n}\r\n\r\nconst SchoolPicture = (props) => {\r\n var style = null;\r\n if (props.imageUrl) {\r\n style = {\r\n backgroundImage: `url('${props.imageUrl}')`\r\n };\r\n } else {\r\n style = {\r\n backgroundImage: `linear-gradient(61deg, rgb(256, 248, 246) 7%, rgb(228, 220, 2121) 35%, rgb(255, 255, 255)`\r\n };\r\n }\r\n\r\n return (\r\n
\r\n
\r\n );\r\n}\r\n\r\nclass SelectedSchool extends Component {\r\n static displayName = SelectedSchool.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n \r\n }\r\n\r\n closeCard = () => {\r\n this.props.closeSelection();\r\n }\r\n\r\n printSchools = () => {\r\n window.print();\r\n }\r\n\r\n render() {\r\n//iconUrl: place.icon,\r\n//title: place.name,\r\n//position: place.geometry.location,\r\n//id: place.place_id,\r\n//name: place.name,\r\n//imageUrl: imageUrl,\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
{this.props.school.name}
\r\n

Distance from Home to School: {this.props.school.distanceFromHome} m

\r\n
\r\n
Other Schools Closer to Home
\r\n {\r\n this.props.otherSchools != null ?\r\n this.props.otherSchools.map((school) => {\r\n return \r\n }):null\r\n }\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n you can print this\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Company Name
\r\n
First NameLast NameSalary
\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default SelectedSchool","import React, { Component } from 'react';\r\nimport './sethomelocation.css'\r\n\r\nclass SetHomeLocation extends Component {\r\n static displayName = SetHomeLocation.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n \r\n }\r\n\r\n search = () => {\r\n this.props.confirmLocation();\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n
\r\n

Set Your Home

\r\n

You may need to change the home location by dragging home marker on map

\r\n Confirm Home Location\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default SetHomeLocation","import React, { Component } from 'react';\r\nimport './mapframe.css'\r\n\r\nclass MapFrame extends Component {\r\n static displayName = MapFrame.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n \r\n }\r\n\r\n \r\n\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default MapFrame","export function filterSchools(schools, filter) {\r\n if (!Array.isArray(schools)) {\r\n return null;\r\n }\r\n\r\n var synonyms = {\r\n maha_vidyalaya: [\"maha vidyalaya\",\"මහා විද්‍යාලය\"],\r\n primary_school: [\"primary school\"],\r\n vidyalaya: [\"vidyalaya\",\"විද්‍යාලය\",\"Widyalaya\"],\r\n college: [\"college\",\"collage\"],\r\n pre_school: [\"preschool\", \"pre-school\",\"pre school\"], //preschool, Preschool, pre-school\r\n dhamma_school: [\"dhamma school\"],\r\n international_school: [\"international school\"],\r\n english_acadamy: [\"english acadamy\"],\r\n institute: [\"institute\"]\r\n }\r\n\r\n var matchList = [];\r\n //if (filter.all) {\r\n // //should not be option in UI, used to see non matching shools on dev\r\n //}\r\n //if (filter.none) {\r\n // matchList = [];\r\n //}\r\n if (filter.primary_school) { // show primary schools.\r\n matchList.push(...synonyms.primary_school);\r\n }\r\n if (filter.maha_vidyalaya) { // show primary schools.\r\n matchList.push(...synonyms.maha_vidyalaya);\r\n }\r\n if (filter.vidyalaya) { // show primary schools.\r\n matchList.push(...synonyms.vidyalaya);\r\n }\r\n if (filter.college) { // show primary schools.\r\n matchList.push(...synonyms.college);\r\n }\r\n\r\n var filteredSchools = schools.filter(function (school) {\r\n\r\n var isMatched = matchList.some((token) => {\r\n var exp = token ;\r\n var re = new RegExp(exp, \"i\");\r\n if (school.name.match(re)) {\r\n return true;\r\n }\r\n return false;\r\n }); \r\n \r\n return isMatched;\r\n });\r\n\r\n return filteredSchools;\r\n}\r\n\r\nexport const AppStates = {\r\n Init: 0, // only on home page.\r\n AreaSelected: 1,\r\n HomeConfirmed: 2, //search happened\r\n SchoolSelected: 3\r\n}","import React, { Component, createRef } from 'react';\r\nimport School from './School';\r\nimport Advertise from './Advertise';\r\nimport SelectedSchool from './SelectedSchool';\r\nimport SetHomeLocation from './SetHomeLocation';\r\nimport MapFrame from './MapFrame';\r\nimport './home.css'\r\nimport {filterSchools, AppStates} from './Utils'\r\n\r\nexport class Home extends Component {\r\n static displayName = Home.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n \r\n this.currentCircle = null;\r\n this.state = {\r\n selectedAddress: null,\r\n selectedSchool: null,\r\n schoolsWithinCircle : null,\r\n isMobile: true,\r\n showMap: true, //always true for desktop\r\n showSettings: false,\r\n filters: {\r\n all: false,\r\n none: false,\r\n vidyalaya: true,\r\n maha_vidyalaya: true,\r\n primary_school: true,\r\n pre_school: false, //preschool, Preschool, pre-school\r\n dhamma_school: false,\r\n international_school: false,\r\n english_acadamy: false,\r\n institute: false,\r\n\r\n },\r\n };\r\n }\r\n\r\n getFilteredSchools = () => {\r\n console.table(this.props.schools);\r\n return filterSchools(this.props.schools, this.state.filters);\r\n }\r\n\r\n googleMapRef = createRef()\r\n googleSearchBoxRef = createRef()\r\n\r\n updateDimensions = () => {\r\n //console.log('resized to: ', window.innerWidth, 'x', window.innerHeight)\r\n if (window.innerWidth > 640) {\r\n this.setState({ isMobile: false });\r\n } else {\r\n this.setState({ isMobile: true });\r\n }\r\n }\r\n\r\n handleClickOnSchool = (school) => {\r\n this.props.handleClickOnSchool(school);\r\n var otherSchools = this.props.schools.filter(function (schoolOther) {\r\n return school.distanceFromHome > schoolOther.distanceFromHome;\r\n });\r\n this.setState({ selectedSchool: school,schoolsWithinCircle : otherSchools })\r\n\r\n }\r\n\r\n handleCloseSelection = () => {\r\n this.setState({ selectedSchool: null })\r\n }\r\n\r\n\r\n //handleShowFullMap = () => {\r\n // this.setState({showMap : true})\r\n //}\r\n\r\n //handleExitFullMap = () => {\r\n // this.setState({ showMap: false })\r\n //}\r\n\r\n //only on mobile view.\r\n handleTogleMap = () => {\r\n if (this.state.showMap) {\r\n this.setState({ showMap: false })\r\n } else {\r\n this.setState({ showMap: true })\r\n }\r\n\r\n }\r\n\r\n handleTogleSettings = () => {\r\n if (this.state.showSettings) {\r\n this.setState({ showSettings: false })\r\n } else {\r\n this.setState({ showSettings: true })\r\n } \r\n \r\n }\r\n\r\n confirmLocation = () => {\r\n this.props.setAppState(AppStates.HomeConfirmed);\r\n }\r\n\r\n componentDidMount() {\r\n console.log(\":::Home did mount\");\r\n this.updateDimensions(); //initial call\r\n window.addEventListener('resize', this.updateDimensions);\r\n this.props.drawInitialMap(this.googleMapRef.current);\r\n this.props.setSearchBox(this.googleSearchBoxRef.current);\r\n if (this.props.appState == AppStates.HomeConfirmed) {\r\n this.setState({ showMap: false }) //only affeceted mobile. test for screen resize in the middle.\r\n this.props.doNearbySchoolSearch();\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.appState !== prevProps.appState) {\r\n if (this.props.appState == AppStates.HomeConfirmed) {\r\n this.setState({ showMap: false }) \r\n this.props.doNearbySchoolSearch();\r\n }\r\n }\r\n \r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.updateDimensions);\r\n }\r\n\r\n render() {\r\n var schoolSelected = \r\n var setHomeLocation = \r\n var schoolList =\r\n
\r\n
\r\n

Found {this.props.schools? this.props.schools.length : 0 } Schools Near {this.state.selectedAddress ? this.state.selectedAddress : \"Home\"}

\r\n
\r\n \r\n \r\n \r\n Show map\r\n
\r\n
\r\n
\r\n {\r\n this.state.selectedSchool ? schoolSelected :\r\n this.getFilteredSchools() != null ?\r\n this.getFilteredSchools().map((school) => {\r\n return \r\n }) : null\r\n\r\n }\r\n
\r\n
\r\n return (\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n * Enter an address near your home and drag the home marker to exact location.\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n {\r\n this.props.appState == AppStates.HomeConfirmed ? schoolList : null\r\n }\r\n {\r\n this.props.appState == AppStates.AreaSelected ? setHomeLocation: null\r\n }\r\n
\r\n
\r\n \r\n {\r\n this.state.isMobile && this.props.appState == AppStates.AreaSelected ? setHomeLocation :null\r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component, createRef } from 'react';\r\nimport './welcome.css';\r\n\r\nexport class Welcome extends Component {\r\n static displayName = Welcome.name;\r\n\r\n googleSearchBoxWelcomeRef = createRef()\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n componentDidMount() {\r\n var that = this;\r\n this.props.setSearchBox(this.googleSearchBoxWelcomeRef.current);\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n

Locate Schools in Sri Lanka

\r\n

We help you calculate the distances to the schools you are applying so that you can fill those data in application forms

\r\n \r\n
\r\n
\r\n
\r\n );\r\n };\r\n};","import React, { Component } from 'react';\r\nimport './NavMenu.css';\r\n\r\nexport class NavMenu extends Component {\r\n static displayName = NavMenu.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() { \r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Home } from './components/Home';\r\nimport { Welcome } from './components/Welcome';\r\nimport { NavMenu } from './components/NavMenu';\r\nimport { AppStates } from './components/Utils';\r\nimport queryString from 'query-string';\r\nimport './app.css'\r\n\r\nexport default class App extends Component {\r\n static displayName = App.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.schoolsResult = [];\r\n this.map = null;\r\n this.currentCircle = null;\r\n this.homeMarker = null;\r\n \r\n this.state = {\r\n appState: AppStates.Init,\r\n location: null,\r\n schools: null\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n var locationFromUrl = this.getLocationFromQueryString();\r\n if (locationFromUrl !== null) {\r\n this.setLocation(locationFromUrl);\r\n this.setAppState(AppStates.HomeConfirmed);\r\n }\r\n }\r\n\r\n\r\n\r\n getLocationFromQueryString = () => {\r\n let params = queryString.parse(window.location.search)\r\n\r\n if (params !== null && params.ho_lat !== null && params.ho_lng != null) {\r\n var center = {\r\n lat: parseFloat(params.ho_lat),\r\n lng: parseFloat(params.ho_lng)\r\n }\r\n return center;\r\n }\r\n \r\n return null;\r\n \r\n }\r\n\r\n calcDistance = (p1, p2) => {\r\n return parseFloat(window.google.maps.geometry.spherical.computeDistanceBetween(p1, p2).toFixed(2));\r\n }\r\n\r\n handleClickOnSchool = (school) => {\r\n \r\n var homePosition = new window.google.maps.LatLng(this.state.location.lat, this.state.location.lng)\r\n var distanceMeters = this.calcDistance(school.position, homePosition);\r\n\r\n if (this.currentCircle) {\r\n this.currentCircle.setMap(null);\r\n }\r\n\r\n this.currentCircle = new window.google.maps.Circle({\r\n strokeColor: '#FFFF00',\r\n strokeOpacity: 0.8,\r\n strokeWeight: 2,\r\n fillColor: '#FFFF00',\r\n fillOpacity: 0.10,\r\n map: this.map,\r\n center: this.state.location,\r\n radius: distanceMeters\r\n })\r\n }\r\n\r\n\r\n setLocation = (location) => {\r\n this.setState({ location: location, appState : AppStates.AreaSelected }, () => {\r\n if (this.map) {\r\n this.map.panTo(this.state.location);\r\n this.setHomeMarker();\r\n }\r\n });\r\n }\r\n\r\n setAppState = (state) => {\r\n this.setState({ appState: state });\r\n }\r\n\r\n doNearbySchoolSearch = () => {\r\n var center = this.state.location;\r\n var radius = 2000;\r\n if (!center) {\r\n return;\r\n }\r\n var service = new window.google.maps.places.PlacesService(this.map);\r\n var request1 = {\r\n name: 'vidyalaya', //,'vidyalaya','college',School vidyalaya college\r\n location: center,\r\n radius: radius,\r\n type: ['school','college', 'primary_school']\r\n };\r\n\r\n var request2 = {\r\n name: 'primary school',\r\n location: center,\r\n radius: radius,\r\n type: ['school', 'college', 'primary_school']\r\n };\r\n\r\n this.schoolsResult = [];\r\n service.nearbySearch(request1, this.nearbySearchCallBack);\r\n service.nearbySearch(request2, this.nearbySearchCallBack);\r\n }\r\n\r\n nearbySearchCallBack = (results, status, pagination) => {\r\n console.log(\"calling nearby schools callback\");\r\n var that = this;\r\n if (status == window.google.maps.places.PlacesServiceStatus.OK) {\r\n\r\n this.schoolsResult.push(...results);\r\n //if more resutlst.\r\n if (pagination.hasNextPage) {\r\n pagination.nextPage()\r\n } else {\r\n \r\n var mappedData = this.schoolsResult\r\n .filter((school, index, self) =>\r\n index === self.findIndex((t) => (t.place_id === school.place_id)))\r\n .map(place => {\r\n var imageUrl = \"\";\r\n if (place[\"photos\"] !== undefined && place[\"photos\"].length > 0) {\r\n imageUrl = place[\"photos\"][0].getUrl()\r\n }\r\n var homePosition = new window.google.maps.LatLng(this.state.location.lat, this.state.location.lng)\r\n return {\r\n iconUrl: place.icon,\r\n title: place.name,\r\n position: place.geometry.location,\r\n id: place.place_id,\r\n name: place.name,\r\n imageUrl: imageUrl,\r\n distanceFromHome: that.calcDistance(homePosition, place.geometry.location)\r\n }\r\n })\r\n\r\n //setup markers.\r\n for (var i = 0; i < mappedData.length; i++) {\r\n that.createMarkerForSchool(mappedData[i]);\r\n }\r\n\r\n that.setState({ schools: mappedData });\r\n }\r\n }\r\n }\r\n\r\n \r\n panToLocation = () => {\r\n this.map.panTo(this.state.location);\r\n }\r\n\r\n setHomeMarker = () => {\r\n console.log(\"setting home marker\")\r\n var that = this;\r\n if (this.homeMarker) {\r\n this.homeMarker.setMap(null);\r\n }\r\n\r\n var image = {\r\n url: \"./images/icon-home.png\",\r\n scaledSize: new window.google.maps.Size((100 / 2), (160 / 2))\r\n };\r\n\r\n this.homeMarker = new window.google.maps.Marker(\r\n {\r\n icon:image,\r\n map: this.map,\r\n draggable: true,\r\n animation: window.google.maps.Animation.DROP,\r\n position: this.state.location,\r\n title: \"Home\"\r\n });\r\n\r\n window.google.maps.event.addListener(this.homeMarker, 'dragend', function () {\r\n var center = {\r\n lat: that.homeMarker.getPosition().lat(),\r\n lng: that.homeMarker.getPosition().lng()\r\n }\r\n that.setLocation(center);\r\n });\r\n }\r\n\r\n createMarkerForSchool = (place) => {\r\n var image = {\r\n url: \"./images/icon-school.png\",\r\n scaledSize: new window.google.maps.Size((100 / 5) * 2, (160 / 5) * 2)\r\n };\r\n\r\n var marker = new window.google.maps.Marker({\r\n map: this.map,\r\n icon: image,\r\n title: place.name,\r\n position: place.position\r\n });\r\n const contentString =\r\n '
' +\r\n '
' + place.name + '
' +\r\n '
' +\r\n '

Distance From Home:

' + place.distanceFromHome +\r\n \"
\" +\r\n \"
\";\r\n var infowindow = new window.google.maps.InfoWindow({\r\n content: contentString\r\n });\r\n\r\n marker.addListener('mouseover', function () {\r\n infowindow.open(this.map, this);\r\n });\r\n\r\n // assuming you also want to hide the infowindow when user mouses-out\r\n marker.addListener('mouseout', function () {\r\n infowindow.close();\r\n });\r\n \r\n\r\n return marker;\r\n }\r\n\r\n setSearchBox = (searchBoxRef) => {\r\n var that = this;\r\n var autocomplete = new window.google.maps.places.Autocomplete(searchBoxRef);\r\n window.google.maps.event.addListener(autocomplete, 'place_changed', function () {\r\n var selectedLocation = autocomplete.getPlace();\r\n\r\n var latlng = { lat: selectedLocation.geometry.location.lat(), lng: selectedLocation.geometry.location.lng() }\r\n console.log(\"set serch -place changed event : location changed\");\r\n that.setLocation(latlng);\r\n });\r\n }\r\n\r\n drawInitialMap = (mapWindowRef) => {\r\n\r\n this.map = new window.google.maps.Map(mapWindowRef, {\r\n zoom: 16,\r\n center: this.state.location,\r\n mapTypeControl: true,\r\n mapTypeControlOptions: {\r\n style: window.google.maps.MapTypeControlStyle.HORIZONTAL_BAR,\r\n position: window.google.maps.ControlPosition.BOTTOM_CENTER\r\n },\r\n });\r\n }\r\n\r\n \r\n render() {\r\n let comp;\r\n\r\n if (this.state.appState == AppStates.Init) {\r\n comp = ;\r\n } else {\r\n comp = ;\r\n }\r\n \r\n return (\r\n
\r\n \r\n {comp}\r\n
\r\n \r\n
\r\n\r\n
\r\n );\r\n }\r\n}","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register () {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW (swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker (swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister () {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","//import 'bootstrap/dist/css/bootstrap.css';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport registerServiceWorker from './registerServiceWorker';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\n\r\n\r\nconst googleScript = document.createElement('script');\r\ngoogleScript.setAttribute(\"id\", \"google-script\");\r\ngoogleScript.src = `https://maps.googleapis.com/maps/api/js?key=AIzaSyDY_jIB8qrP5wIPZ7tDgQ1T2VSbXvmZMbQ&libraries=places,geometry`;\r\nwindow.document.body.appendChild(googleScript);\r\n\r\n//can be render on call back\r\ngoogleScript.addEventListener('load', () => {\r\n const rootElement = document.getElementById('root');\r\n ReactDOM.render(\r\n ,\r\n rootElement);\r\n \r\n});\r\n\r\nregisterServiceWorker();\r\n\r\n"],"sourceRoot":""}