{"version":3,"sources":["../node_modules/@aws-amplify/ui-components/dist/esm-es5 lazy /^/.//.*/.entry/.js$/ include: //.entry/.js$/ exclude: //.system/.entry/.js$/ groupOptions: {} namespace object","aws-exports.js","graphql/queries.js","ibdata.js","graphql/subscriptions.js","graphql/mutations.js","AddSite.js","CampTable.js","AppBar.js","GetSites.js","MyNotif.js","CalendarAvail.js","ShowMapDialog.js","FoundReq.js","MainPage.js","Donate.js","App.js","Terms.js","Privacy.js","reportWebVitals.js","index.js"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","keys","Object","module","exports","awsmobile","queryByFoundUser","getCamps","url","type","data","cb","API","post","URL","res","body","catch","error","alert","listCampsites","nextToken","cmd","limit","graphql","graphqlOperation","dat","items","subscribeCampsite","subscribe","next","value","onCreateCampsite","console","log","JSON","stringify","createCampsiteRequest","obj","user","Auth","username","ttl","secondsSinceEpoch","Math","round","Date","now","SECONDS_IN_AN_HOUR","expirationTime","dt","getTime","getTTL1Week","input","listCampRequests","queryByOwner","listFoundResults","autoQuery","subscribeFoundResults","subscribeToMyFoundResult","subscribeCampRequests","delcb","subscribeToMyCamsite","subscribeToMyCamsiteDel","listVacencys","AddSite","props","open","React","useState","text","setText","handleClose","Dialog","onClose","aria-labelledby","DialogTitle","DialogContent","DialogContentText","TextField","autoFocus","margin","label","fullWidth","onChange","target","DialogActions","Button","onClick","color","ntext","includes","replace","parts","split","lastSegment","pop","FacilityName","img","MEDIA","kw","Keywords","name","loadBucket","content","description","FacilityDescription","keywords","website","CampTable","title","columns","field","render","rowData","href","src","style","width","borderRadius","defaultSort","options","selection","pageSize","actions","tooltip","icon","evt","length","showNotif","MultiSelect","components","Action","action","event","variant","textTransform","size","startIcon","useStyles","makeStyles","theme","root","flexGrow","menuButton","marginRight","spacing","MyAppBar","classes","auth","anchorEl","setAnchorEl","Boolean","className","AppBar","position","Toolbar","alt","IconButton","edge","new","aria-label","smsShow","Typography","aria-controls","aria-haspopup","currentTarget","Menu","anchorOrigin","vertical","horizontal","keepMounted","transformOrigin","MenuItem","signOut","window","location","reload","newWindow","opener","openInNewTab","GetSites","array","setArray","useEffect","sites","forEach","full","n","getMonth","m","padStart","ib","ff","arr2","f","rr","save","site","loop","push","arr","getRec","data2","formatDate","d","month","day","getDate","year","getFullYear","join","isLeapYear","getDaysInMonth","prototype","this","addMonths","setDate","setMonth","min","p","nm","units","ShortName","Description","getCalif","dow","MyNotif","myReq","setmyReq","ExistingTable","p2","j","nights","setNights","i","list","filter","item","parse","Campsite","campName","sdate","startdate","edate","enddate","inData","setInData","selectedDate","setSelectedDate","maxDate","allSites","setAllSites","addDays","selectedEDate","setSelectedEDate","phone","setPhone","theDate","days","handleSave","s","pp","str","state","pickDow","st","ed","dw","getDay","dowState","getTimezoneOffset","toISOString","dt1","setHours","dt2","CampsiteID","pickSite","setState","doneTable","tableOpen","setTableOpen","setDowState","handleDay","checked","tabled","setTabled","backgroundColor","cursor","right","top","onSubmit","align","component","gutterBottom","utils","DateFnsUtils","Grid","container","alignItems","xs","disableToolbar","format","date","KeyboardButtonProps","defaultCountry","required","ph","FormControlLabel","control","Checkbox","r","inputProps","readOnly","formControl","minWidth","selectEmpty","marginTop","debounceTimer","allData","maxCount","calcMax","tab","who","k","csid","a","count","Content","popular","dtstr","search","gotData","finishData","avail","siteName","setupCalendarData","startDate","endDate","cal","setCal","dateDict","lcSearch","toLowerCase","a1","siteType","allow","popularity","parseInt","all","old","clearTimeout","setTimeout","handleChange","maxWidth","direction","justify","FormControl","NativeSelect","FormHelperText","values","classForValue","vals","tooltipDataAttrs","showWeekdayLabels","clickOn","California","lat","lng","searching","height","markers","ShowMapDialog","place","setPlace","dateEnd","miles","available","formValues","setformValues","valueChange","arg","val","oneweek","Loader","apiKey","version","libraries","load","loadMap","camps","c","cont","searchName","b","searchLocation","foundCampLocation","center","setCenter","toRad","Value","PI","cent","panTo","bounds","google","maps","LatLngBounds","mark","loc","LatLng","extend","fitBounds","panToBounds","ref","current","Map","zoom","useRef","setMapOnAll","setMap","cname","cs","ll","geometry","Rating","rating","request","query","fields","places","PlacesService","findPlaceFromQuery","results","status","PlacesServiceStatus","OK","helperText","InputLabel","Select","labelId","week","selDist","l","lat1","lon1","lat2","lon2","R","dLat","dLon","sin","cos","atan2","sqrt","calcCrow","marker","Marker","addListener","addMarker","findCrowFlies","FoundReq","foundName","gCamp","MainPage","addSite","setAddSite","setCamps","myFoundResult","setFoundResult","siteFoundCount","setSiteFoundCount","reqCount","setReqCount","splice","linkId","sort","newc","findIndex","resvName","createdAt","sNotif","setNotif","sCalendarAvail","setsCalendarAvail","showMap","setShowMap","smsObj","setSMSObj","done","Donate","method","border","createMuiTheme","palette","primary","main","purple","secondary","green","card2","display","justifyContent","flexDirection","maxHeight","gbutton","marginLeft","paddingTop","responsiveFontSizes","awsconfig","oauth","redirectSignIn","origin","redirectSignOut","Amplify","configure","ReactGA","initialize","debug","hidden","AuthStateApp","authState","setAuthState","setUser","hideAWS","s11","document","querySelector","s1","shadowRoot","s21","s2","s31","snack","setSnack","pageview","pathname","setInterval","onAuthUIStateChange","nextAuthState","authData","AuthState","SignedIn","ThemeProvider","CssBaseline","Snackbar","autoHideDuration","message","alight","usernameAlias","slot","formFields","placeholder","federatedSignIn","provider","TermsCondiitons","class","Privacy","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","StrictMode","exact","path","element","getElementById"],"mappings":"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","file":"static/js/main.a280e924.chunk.js","sourcesContent":["var map = {\n\t\"./amplify-amazon-button_5.entry.js\": [\n\t\t658,\n\t\t17\n\t],\n\t\"./amplify-auth-container.entry.js\": [\n\t\t659,\n\t\t18\n\t],\n\t\"./amplify-auth-fields_9.entry.js\": [\n\t\t660,\n\t\t19\n\t],\n\t\"./amplify-authenticator.entry.js\": [\n\t\t661,\n\t\t6\n\t],\n\t\"./amplify-button_3.entry.js\": [\n\t\t662,\n\t\t20\n\t],\n\t\"./amplify-chatbot.entry.js\": [\n\t\t663,\n\t\t5\n\t],\n\t\"./amplify-checkbox.entry.js\": [\n\t\t664,\n\t\t21\n\t],\n\t\"./amplify-confirm-sign-in_7.entry.js\": [\n\t\t665,\n\t\t7\n\t],\n\t\"./amplify-container.entry.js\": [\n\t\t666,\n\t\t22\n\t],\n\t\"./amplify-federated-buttons_2.entry.js\": [\n\t\t667,\n\t\t23\n\t],\n\t\"./amplify-federated-sign-in.entry.js\": [\n\t\t668,\n\t\t24\n\t],\n\t\"./amplify-form-field_4.entry.js\": [\n\t\t669,\n\t\t25\n\t],\n\t\"./amplify-greetings.entry.js\": [\n\t\t670,\n\t\t26\n\t],\n\t\"./amplify-icon-button.entry.js\": [\n\t\t671,\n\t\t27\n\t],\n\t\"./amplify-icon.entry.js\": [\n\t\t672,\n\t\t8\n\t],\n\t\"./amplify-link.entry.js\": [\n\t\t673,\n\t\t28\n\t],\n\t\"./amplify-nav_2.entry.js\": [\n\t\t674,\n\t\t29\n\t],\n\t\"./amplify-photo-picker.entry.js\": [\n\t\t675,\n\t\t30\n\t],\n\t\"./amplify-picker.entry.js\": [\n\t\t676,\n\t\t31\n\t],\n\t\"./amplify-radio-button_2.entry.js\": [\n\t\t677,\n\t\t9\n\t],\n\t\"./amplify-s3-album.entry.js\": [\n\t\t678,\n\t\t10\n\t],\n\t\"./amplify-s3-image-picker.entry.js\": [\n\t\t679,\n\t\t11\n\t],\n\t\"./amplify-s3-image.entry.js\": [\n\t\t680,\n\t\t12\n\t],\n\t\"./amplify-s3-text-picker.entry.js\": [\n\t\t681,\n\t\t13\n\t],\n\t\"./amplify-s3-text.entry.js\": [\n\t\t682,\n\t\t14\n\t],\n\t\"./amplify-select-mfa-type.entry.js\": [\n\t\t683,\n\t\t32\n\t],\n\t\"./amplify-sign-in-button.entry.js\": [\n\t\t684,\n\t\t15\n\t],\n\t\"./amplify-toast.entry.js\": [\n\t\t685,\n\t\t33\n\t],\n\t\"./amplify-tooltip.entry.js\": [\n\t\t686,\n\t\t34\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 631;\nmodule.exports = webpackAsyncContext;","/* eslint-disable */\n// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.\n\nconst awsmobile = {\n \"aws_project_region\": \"us-west-2\",\n \"aws_cognito_identity_pool_id\": \"us-west-2:8d9637f5-25c6-4a8f-87da-b0f804e16a0d\",\n \"aws_cognito_region\": \"us-west-2\",\n \"aws_user_pools_id\": \"us-west-2_sjFIhHlvo\",\n \"aws_user_pools_web_client_id\": \"3vv4jmr05h3vg7b1utfjqa2k7h\",\n \"oauth\": {\n \"domain\": \"camptext5afd530f-5afd530f-dev.auth.us-west-2.amazoncognito.com\",\n \"scope\": [\n \"phone\",\n \"email\",\n \"openid\",\n \"profile\",\n \"aws.cognito.signin.user.admin\"\n ],\n \"redirectSignIn\": \"http://localhost:3000/,https://campsitetext.com/\",\n \"redirectSignOut\": \"http://localhost:3000/,https://campsitetext.com/\",\n \"responseType\": \"code\"\n },\n \"federationTarget\": \"COGNITO_USER_AND_IDENTITY_POOLS\",\n \"aws_appsync_graphqlEndpoint\": \"https://675tzyoxwfbwvodnft7g75gay4.appsync-api.us-west-2.amazonaws.com/graphql\",\n \"aws_appsync_region\": \"us-west-2\",\n \"aws_appsync_authenticationType\": \"AMAZON_COGNITO_USER_POOLS\",\n \"aws_appsync_apiKey\": \"da2-j6xvmu6ssbdhdc6icls2pnorsu\",\n \"aws_cloud_logic_custom\": [\n {\n \"name\": \"getSite\",\n \"endpoint\": \"https://swomtu6bnl.execute-api.us-west-2.amazonaws.com/dev\",\n \"region\": \"us-west-2\"\n }\n ]\n};\n\n\nexport default awsmobile;\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const getCampsite = /* GraphQL */ `\n query GetCampsite($id: ID!) {\n getCampsite(id: $id) {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n items {\n id\n user\n phone\n createdAt\n updatedAt\n name\n CampsiteID\n loadBucket\n startdate\n enddate\n nights\n content\n ttl\n hits\n dates\n }\n nextToken\n }\n }\n }\n`;\nexport const listCampsites = /* GraphQL */ `\n query ListCampsites(\n $filter: ModelCampsiteFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listCampsites(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n nextToken\n }\n }\n`;\nexport const getCampsiteRequest = /* GraphQL */ `\n query GetCampsiteRequest($id: ID!) {\n getCampsiteRequest(id: $id) {\n id\n user\n phone\n createdAt\n updatedAt\n name\n CampsiteID\n loadBucket\n startdate\n enddate\n nights\n content\n ttl\n hits\n dates\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const listCampsiteRequests = /* GraphQL */ `\n query ListCampsiteRequests(\n $filter: ModelCampsiteRequestFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listCampsiteRequests(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n user\n phone\n createdAt\n updatedAt\n name\n CampsiteID\n loadBucket\n startdate\n enddate\n nights\n content\n ttl\n hits\n dates\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n`;\nexport const queryByOwner = /* GraphQL */ `\n query QueryByOwner(\n $user: String\n $updatedAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelCampsiteRequestFilterInput\n $limit: Int\n $nextToken: String\n ) {\n queryByOwner(\n user: $user\n updatedAt: $updatedAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n user\n phone\n createdAt\n updatedAt\n name\n CampsiteID\n loadBucket\n startdate\n enddate\n nights\n content\n ttl\n hits\n dates\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n`;\nexport const queryByLoadBucket = /* GraphQL */ `\n query QueryByLoadBucket(\n $loadBucket: Int\n $updatedAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelCampsiteRequestFilterInput\n $limit: Int\n $nextToken: String\n ) {\n queryByLoadBucket(\n loadBucket: $loadBucket\n updatedAt: $updatedAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n user\n phone\n createdAt\n updatedAt\n name\n CampsiteID\n loadBucket\n startdate\n enddate\n nights\n content\n ttl\n hits\n dates\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n`;\nexport const byCampSite = /* GraphQL */ `\n query ByCampSite(\n $CampsiteID: ID\n $updatedAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelCampsiteRequestFilterInput\n $limit: Int\n $nextToken: String\n ) {\n byCampSite(\n CampsiteID: $CampsiteID\n updatedAt: $updatedAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n user\n phone\n createdAt\n updatedAt\n name\n CampsiteID\n loadBucket\n startdate\n enddate\n nights\n content\n ttl\n hits\n dates\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n`;\nexport const getVacency = /* GraphQL */ `\n query GetVacency($id: ID!) {\n getVacency(id: $id) {\n id\n ttl\n siteName\n Date\n createdAt\n updatedAt\n popular\n campSiteName\n CSID\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const listVacencys = /* GraphQL */ `\n query ListVacencys(\n $filter: ModelVacencyFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listVacencys(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n ttl\n siteName\n Date\n createdAt\n updatedAt\n popular\n campSiteName\n CSID\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n`;\nexport const queryvbyCSNAme = /* GraphQL */ `\n query QueryvbyCSNAme(\n $campSiteName: String\n $updatedAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelVacencyFilterInput\n $limit: Int\n $nextToken: String\n ) {\n queryvbyCSNAme(\n campSiteName: $campSiteName\n updatedAt: $updatedAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n ttl\n siteName\n Date\n createdAt\n updatedAt\n popular\n campSiteName\n CSID\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n`;\nexport const queryvbypopular = /* GraphQL */ `\n query Queryvbypopular(\n $popular: String\n $updatedAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelVacencyFilterInput\n $limit: Int\n $nextToken: String\n ) {\n queryvbypopular(\n popular: $popular\n updatedAt: $updatedAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n ttl\n siteName\n Date\n createdAt\n updatedAt\n popular\n campSiteName\n CSID\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n`;\nexport const getFoundResult = /* GraphQL */ `\n query GetFoundResult($id: ID!) {\n getFoundResult(id: $id) {\n id\n user\n content\n ttl\n count\n createdAt\n updatedAt\n CSID\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const listFoundResults = /* GraphQL */ `\n query ListFoundResults(\n $filter: ModelFoundResultFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listFoundResults(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n user\n content\n ttl\n count\n createdAt\n updatedAt\n CSID\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n`;\nexport const queryByFoundUser = /* GraphQL */ `\n query QueryByFoundUser(\n $user: String\n $updatedAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelFoundResultFilterInput\n $limit: Int\n $nextToken: String\n ) {\n queryByFoundUser(\n user: $user\n updatedAt: $updatedAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n user\n content\n ttl\n count\n createdAt\n updatedAt\n CSID\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n`;\n","import * as autoQuery from './graphql/queries'\nimport * as autoMutation from './graphql/mutations'\nimport * as autoSub from './graphql/subscriptions'\nimport { Auth } from 'aws-amplify';\n\nimport { API, graphqlOperation } from 'aws-amplify';\n\n\nasync function dummyPost(url, u, type, data) {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({URL: u, type: type, data: data})\n })\n var r = await response.json();\n return r\n}\nexport function getCampsite(data, cb) {\n API.post('getSite', '/items', {\n 'body': data\n }).then((res) => {\n cb(res.body)\n }).catch(error => alert(\"API Failed try later\"))\n}\n\nexport function getCamps(url, type, data, cb) {\n // var res = dummyPost(\"http://localhost:3500/url\", url, type, data)\n\n // cb(res)\n API.post('getSite', '/url', {\n 'body': {URL: url, type: type, data: data}\n }).then((res) => {\n cb(res.body)\n }).catch(error => alert(\"API Failed try later\"))\n}\n\nexport function createCampsite(obj) {\n return API.graphql(graphqlOperation(autoMutation.createCampsite, { input: obj }))\n}\n\nexport function updateCampsite(obj) {\n delete obj['createdAt']\n delete obj['updatedAt']\n delete obj['MultiBoard']\n return API.graphql(graphqlOperation(autoMutation.updateCampsite, { input: obj }))\n}\n\nexport function listCampsites(cb, nextToken) {\n const cmd = { limit: 100, nextToken: nextToken }\n API.graphql(graphqlOperation(autoQuery.listCampsites, cmd)).then(res => {\n const dat = res.data.listCampsites\n if (dat) cb(dat.items)\n if (dat.nextToken) {\n listCampsites(cb, dat.nextToken)\n }\n })\n}\n\nexport function subscribeCampsite(cb) {\n listCampsites(cb, null)\n const s1 = API.graphql(graphqlOperation(autoSub.onCreateCampsite))\n var s2\n s2 = s1.subscribe({\n next: (value) => {\n const data = value.value.data.onCreateCampsite\n cb([data])\n },\n error: (error) => {\n console.log(JSON.stringify(error));\n }\n });\n\n return s2\n}\n\nexport function createCampsiteRequest(obj) {\n obj.user = Auth.user.username;\n obj.ttl = getTTL1Week(obj) \n return API.graphql(graphqlOperation(autoMutation.createCampsiteRequest, { input: obj }))\n}\n\nexport function deleteCampsiteRequest(obj) {\n return API.graphql(graphqlOperation(autoMutation.deleteCampsiteRequest, { input: {id: obj.id} }))\n}\n\nexport function listCampRequests(nextToken, cb) {\n const cmd = { limit: 100, nextToken: nextToken, user: Auth.user.username }\n const s1 = API.graphql(graphqlOperation(autoQuery.queryByOwner, cmd))\n .then(res => {\n const dat = res.data.queryByOwner\n if (dat) cb(dat.items)\n if (dat.nextToken) {\n listCampRequests(dat.nextToken, cb)\n }\n })\n}\n\nexport function listFoundResults(nextToken, cb) {\n const cmd = { limit: 100, nextToken: nextToken, user: Auth.user.username}\n const s1 = API.graphql(graphqlOperation(autoQuery.queryByFoundUser, cmd))\n .then(res => {\n const dat = res.data.queryByFoundUser\n if (dat) cb(dat.items)\n if (dat.nextToken) {\n listFoundResults(dat.nextToken, cb)\n }\n })\n}\n\nexport function getTTL1Week(obj) {\n const secondsSinceEpoch = Math.round(Date.now() / 1000);\n const SECONDS_IN_AN_HOUR = 60 * 60;\n const HOURS_IN_1_WEEK = 24 * 7\n\n // Reduced from previous 6 weeks to 4 weeks\n let expirationTime = secondsSinceEpoch + SECONDS_IN_AN_HOUR * HOURS_IN_1_WEEK * 8; //expire in 1 week\n if (obj['enddate']) {\n let dt = new Date(obj['enddate']).getTime();\n dt = dt / 1000\n expirationTime = dt + (SECONDS_IN_AN_HOUR * 24)\n }\n return expirationTime\n}\n\nexport function subscribeFoundResults(cb) {\n listFoundResults(null, cb)\n const s1 = API.graphql(graphqlOperation(autoSub.subscribeToMyFoundResult, {user: Auth.user.username}))\n var s2\n s2 = s1.subscribe({\n next: (value) => {\n const data = value.value.data.subscribeToMyFoundResult\n cb([data])\n },\n error: (error) => {\n console.log(JSON.stringify(error));\n }\n });\n return s2\n}\n\nexport async function listFoundResultsSync() {\n var allList = [];\n var nt = null \n do {\n const cmd = { limit: 100, nextToken: nt, user: Auth.user.username}\n const res = await API.graphql(graphqlOperation(autoQuery.queryByFoundUser, cmd))\n const dat = res.data.queryByFoundUser\n allList = [...allList, ...dat.items]\n\n nt = dat.nextToken\n } while (nt!= null)\n return allList\n}\n\nexport function subscribeCampRequests(cb, delcb) {\n listCampRequests(null, cb)\n const s1 = API.graphql(graphqlOperation(autoSub.subscribeToMyCamsite, {user: Auth.user.username}))\n var s2\n s2 = s1.subscribe({\n next: (value) => {\n const data = value.value.data.subscribeToMyCamsite\n cb([data])\n },\n error: (error) => {\n console.log(JSON.stringify(error));\n }\n });\n\n const s3 = API.graphql(graphqlOperation(autoSub.subscribeToMyCamsiteDel, {user: Auth.user.username}))\n var s4 = s3.subscribe({\n next: (value) => {\n const data = value.value.data.subscribeToMyCamsiteDel\n delcb(data)\n },\n error: (error) => {\n console.log(JSON.stringify(error));\n }\n });\n return [s2, s4] \n}\n\nexport function listVacencys(nextToken, cb) {\n const cmd = { limit: 100, nextToken: nextToken, user: Auth.user.username }\n const s1 = API.graphql(graphqlOperation(autoQuery.listVacencys, cmd))\n .then(res => {\n const dat = res.data.listVacencys\n if (dat) cb(dat.items)\n if (dat.nextToken) {\n listVacencys(dat.nextToken, cb)\n } else {\n cb(null) //finish\n }\n })\n}","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const subscribeToMyCamsite = /* GraphQL */ `\n subscription SubscribeToMyCamsite($user: String) {\n subscribeToMyCamsite(user: $user) {\n id\n user\n phone\n createdAt\n updatedAt\n name\n CampsiteID\n loadBucket\n startdate\n enddate\n nights\n content\n ttl\n hits\n dates\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const subscribeToMyCamsiteDel = /* GraphQL */ `\n subscription SubscribeToMyCamsiteDel($user: String) {\n subscribeToMyCamsiteDel(user: $user) {\n id\n user\n phone\n createdAt\n updatedAt\n name\n CampsiteID\n loadBucket\n startdate\n enddate\n nights\n content\n ttl\n hits\n dates\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const subscribeToMyFoundResult = /* GraphQL */ `\n subscription SubscribeToMyFoundResult($user: String) {\n subscribeToMyFoundResult(user: $user) {\n id\n user\n content\n ttl\n count\n createdAt\n updatedAt\n CSID\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const onCreateCampsite = /* GraphQL */ `\n subscription OnCreateCampsite {\n onCreateCampsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n items {\n id\n user\n phone\n createdAt\n updatedAt\n name\n CampsiteID\n loadBucket\n startdate\n enddate\n nights\n content\n ttl\n hits\n dates\n }\n nextToken\n }\n }\n }\n`;\nexport const onUpdateCampsite = /* GraphQL */ `\n subscription OnUpdateCampsite {\n onUpdateCampsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n items {\n id\n user\n phone\n createdAt\n updatedAt\n name\n CampsiteID\n loadBucket\n startdate\n enddate\n nights\n content\n ttl\n hits\n dates\n }\n nextToken\n }\n }\n }\n`;\nexport const onDeleteCampsite = /* GraphQL */ `\n subscription OnDeleteCampsite {\n onDeleteCampsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n items {\n id\n user\n phone\n createdAt\n updatedAt\n name\n CampsiteID\n loadBucket\n startdate\n enddate\n nights\n content\n ttl\n hits\n dates\n }\n nextToken\n }\n }\n }\n`;\nexport const onCreateCampsiteRequest = /* GraphQL */ `\n subscription OnCreateCampsiteRequest {\n onCreateCampsiteRequest {\n id\n user\n phone\n createdAt\n updatedAt\n name\n CampsiteID\n loadBucket\n startdate\n enddate\n nights\n content\n ttl\n hits\n dates\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const onUpdateCampsiteRequest = /* GraphQL */ `\n subscription OnUpdateCampsiteRequest {\n onUpdateCampsiteRequest {\n id\n user\n phone\n createdAt\n updatedAt\n name\n CampsiteID\n loadBucket\n startdate\n enddate\n nights\n content\n ttl\n hits\n dates\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const onDeleteCampsiteRequest = /* GraphQL */ `\n subscription OnDeleteCampsiteRequest {\n onDeleteCampsiteRequest {\n id\n user\n phone\n createdAt\n updatedAt\n name\n CampsiteID\n loadBucket\n startdate\n enddate\n nights\n content\n ttl\n hits\n dates\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const onCreateFoundResult = /* GraphQL */ `\n subscription OnCreateFoundResult {\n onCreateFoundResult {\n id\n user\n content\n ttl\n count\n createdAt\n updatedAt\n CSID\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const onUpdateFoundResult = /* GraphQL */ `\n subscription OnUpdateFoundResult {\n onUpdateFoundResult {\n id\n user\n content\n ttl\n count\n createdAt\n updatedAt\n CSID\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const onDeleteFoundResult = /* GraphQL */ `\n subscription OnDeleteFoundResult {\n onDeleteFoundResult {\n id\n user\n content\n ttl\n count\n createdAt\n updatedAt\n CSID\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const onCreateVacency = /* GraphQL */ `\n subscription OnCreateVacency {\n onCreateVacency {\n id\n ttl\n siteName\n Date\n createdAt\n updatedAt\n popular\n campSiteName\n CSID\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const onUpdateVacency = /* GraphQL */ `\n subscription OnUpdateVacency {\n onUpdateVacency {\n id\n ttl\n siteName\n Date\n createdAt\n updatedAt\n popular\n campSiteName\n CSID\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const onDeleteVacency = /* GraphQL */ `\n subscription OnDeleteVacency {\n onDeleteVacency {\n id\n ttl\n siteName\n Date\n createdAt\n updatedAt\n popular\n campSiteName\n CSID\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const createCampsite = /* GraphQL */ `\n mutation CreateCampsite(\n $input: CreateCampsiteInput!\n $condition: ModelCampsiteConditionInput\n ) {\n createCampsite(input: $input, condition: $condition) {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n items {\n id\n user\n phone\n createdAt\n updatedAt\n name\n CampsiteID\n loadBucket\n startdate\n enddate\n nights\n content\n ttl\n hits\n dates\n }\n nextToken\n }\n }\n }\n`;\nexport const updateCampsite = /* GraphQL */ `\n mutation UpdateCampsite(\n $input: UpdateCampsiteInput!\n $condition: ModelCampsiteConditionInput\n ) {\n updateCampsite(input: $input, condition: $condition) {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n items {\n id\n user\n phone\n createdAt\n updatedAt\n name\n CampsiteID\n loadBucket\n startdate\n enddate\n nights\n content\n ttl\n hits\n dates\n }\n nextToken\n }\n }\n }\n`;\nexport const deleteCampsite = /* GraphQL */ `\n mutation DeleteCampsite(\n $input: DeleteCampsiteInput!\n $condition: ModelCampsiteConditionInput\n ) {\n deleteCampsite(input: $input, condition: $condition) {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n items {\n id\n user\n phone\n createdAt\n updatedAt\n name\n CampsiteID\n loadBucket\n startdate\n enddate\n nights\n content\n ttl\n hits\n dates\n }\n nextToken\n }\n }\n }\n`;\nexport const createCampsiteRequest = /* GraphQL */ `\n mutation CreateCampsiteRequest(\n $input: CreateCampsiteRequestInput!\n $condition: ModelCampsiteRequestConditionInput\n ) {\n createCampsiteRequest(input: $input, condition: $condition) {\n id\n user\n phone\n createdAt\n updatedAt\n name\n CampsiteID\n loadBucket\n startdate\n enddate\n nights\n content\n ttl\n hits\n dates\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const updateCampsiteRequest = /* GraphQL */ `\n mutation UpdateCampsiteRequest(\n $input: UpdateCampsiteRequestInput!\n $condition: ModelCampsiteRequestConditionInput\n ) {\n updateCampsiteRequest(input: $input, condition: $condition) {\n id\n user\n phone\n createdAt\n updatedAt\n name\n CampsiteID\n loadBucket\n startdate\n enddate\n nights\n content\n ttl\n hits\n dates\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const deleteCampsiteRequest = /* GraphQL */ `\n mutation DeleteCampsiteRequest(\n $input: DeleteCampsiteRequestInput!\n $condition: ModelCampsiteRequestConditionInput\n ) {\n deleteCampsiteRequest(input: $input, condition: $condition) {\n id\n user\n phone\n createdAt\n updatedAt\n name\n CampsiteID\n loadBucket\n startdate\n enddate\n nights\n content\n ttl\n hits\n dates\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const createVacency = /* GraphQL */ `\n mutation CreateVacency(\n $input: CreateVacencyInput!\n $condition: ModelVacencyConditionInput\n ) {\n createVacency(input: $input, condition: $condition) {\n id\n ttl\n siteName\n Date\n createdAt\n updatedAt\n popular\n campSiteName\n CSID\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const updateVacency = /* GraphQL */ `\n mutation UpdateVacency(\n $input: UpdateVacencyInput!\n $condition: ModelVacencyConditionInput\n ) {\n updateVacency(input: $input, condition: $condition) {\n id\n ttl\n siteName\n Date\n createdAt\n updatedAt\n popular\n campSiteName\n CSID\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const deleteVacency = /* GraphQL */ `\n mutation DeleteVacency(\n $input: DeleteVacencyInput!\n $condition: ModelVacencyConditionInput\n ) {\n deleteVacency(input: $input, condition: $condition) {\n id\n ttl\n siteName\n Date\n createdAt\n updatedAt\n popular\n campSiteName\n CSID\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const createFoundResult = /* GraphQL */ `\n mutation CreateFoundResult(\n $input: CreateFoundResultInput!\n $condition: ModelFoundResultConditionInput\n ) {\n createFoundResult(input: $input, condition: $condition) {\n id\n user\n content\n ttl\n count\n createdAt\n updatedAt\n CSID\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const updateFoundResult = /* GraphQL */ `\n mutation UpdateFoundResult(\n $input: UpdateFoundResultInput!\n $condition: ModelFoundResultConditionInput\n ) {\n updateFoundResult(input: $input, condition: $condition) {\n id\n user\n content\n ttl\n count\n createdAt\n updatedAt\n CSID\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\nexport const deleteFoundResult = /* GraphQL */ `\n mutation DeleteFoundResult(\n $input: DeleteFoundResultInput!\n $condition: ModelFoundResultConditionInput\n ) {\n deleteFoundResult(input: $input, condition: $condition) {\n id\n user\n content\n ttl\n count\n createdAt\n updatedAt\n CSID\n Campsite {\n id\n type\n name\n content\n state\n popular\n hits\n loadBucket\n location\n Rating\n createdAt\n updatedAt\n MultiBoard {\n nextToken\n }\n }\n }\n }\n`;\n","import React from 'react';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport * as ib from \"./ibdata\";\n\n//d8031651-60ae-41e7-9a2f-81c0765867b8\n\nfunction getAPI(url, cb) {\n // curl -X GET \"https://ridb.recreation.gov/api/v1/facilities/232450?full=true\" -H \"accept: application/json\" -H \"apikey: d8031651-60ae-41e7-9a2f-81c0765867b8\"\n\n let URL = \"https://ridb.recreation.gov/api/v1/facilities/\" + url + \"?full=true\"\n fetch(URL, {\n method: 'POST',\n headers: {\n mode: 'cors',\n 'apikey': 'd8031651-60ae-41e7-9a2f-81c0765867b8\"',\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n },\n })\n .then(response => response.json())\n .then((response) => cb(response))\n .catch(error => console.error(error));\n\n}\nfunction postData(data, cb) {\n fetch(\"http://localhost:3500/items\", {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(data)\n })\n .then(response => response.json())\n .then((response) => cb(response))\n .catch(error => console.error(error));\n}\n\nexport default function AddSite(props) {\n const open = props.open;\n const [text, setText] = React.useState(\"\");\n\n const handleClose = () => {\n if (props.cb)\n props.cb(null);\n };\n\n function handleSave(e) {\n if (!text) return\n let ntext = text \n if (text.includes(\"/registration/detailed-availability\")) {\n ntext = text.replace(\"/registration/detailed-availability\", \"\") \n }\n var parts = ntext.split('/');\n var lastSegment = parts.pop() || parts.pop(); // handle potential trailing slash\n\n\n \n ib.getCampsite({ URL: lastSegment}, gotData)\n function gotData(dat) {\n if (dat && dat.FacilityName) {\n let img = null;\n if (dat.MEDIA) {\n img = dat.MEDIA[0].URL\n } \n if (!img) {\n console.log(\"NO DATA\", img, dat);\n return \n }\n var type = \"Rec_\"\n var kw = dat.Keywords\n if (text.includes(\"permits\")) {\n type = \"RecP_\"\n kw = kw + \", Permits\"\n }\n ib.createCampsite({\n id: type+lastSegment, \n type: \"Recreation.gov\",\n name: dat.FacilityName,\n loadBucket: 3, \n content: JSON.stringify({\n description: dat.FacilityDescription,\n keywords: kw,\n id: lastSegment, \n img: img\n })\n })\n }\n }\n props.cb({ website: text });\n }\n function handleLoad(e) {\n setText(e.target.value)\n }\n\n return (\n \n Add new camping location\n \n \n Please copy the URL from Recreation.gov and paste here to add a new campsite. \n \n \n \n For California state sites email support@campsitetext.com\n \n \n\n \n \n \n \n \n );\n}\n","import React from 'react';\nimport MaterialTable from 'material-table';\nimport Button from '@material-ui/core/Button';\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\n\nexport function CampTable(props) {\n\n function MultiSelect(data) {\n if (data.length > 5) {\n alert(\"Please pick only 5 sites at a time\");\n return;\n }\n if (props.showNotif) props.showNotif(data);\n }\n // console.log(\"DATA IS\", props.data)\n return ( \n \n \n },\n {\n title: 'Name', field: 'name',\n render: rowData => \n {rowData.name}\n \n },\n { title: 'Active queries', field: 'popular', type: 'numeric', defaultSort: 'desc' },\n\n { title: 'From', field: 'type' },\n { title: 'Keywords', field: 'keywords' },\n\n ]}\n options={{\n selection: true,\n pageSize: 10, \n }}\n data={props.data}\n actions={[\n {\n tooltip: 'Create new text',\n icon: \"addcircle\",\n onClick: (evt, data) => MultiSelect(data)\n }\n ]}\n components={{\n Action:\n props => {\n if (props.action.icon === 'addcircle') {\n return (\n props.action.onClick(event, props.data)}\n color=\"primary\"\n variant=\"contained\"\n style={{ textTransform: 'none' }}\n size=\"small\"\n startIcon={}\n >\n Add Notification\n \n )\n }\n }\n\n }}\n\n />)\n}","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport IconButton from '@material-ui/core/IconButton';\nimport AccountCircle from '@material-ui/icons/AccountCircle';\nimport { Auth } from 'aws-amplify';\n\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Menu from '@material-ui/core/Menu';\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\nimport AlarmIcon from '@material-ui/icons/Alarm';\nimport TextsmsIcon from '@material-ui/icons/Textsms';\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n flexGrow: 1,\n },\n}));\n\nexport function MyAppBar(props) {\n const classes = useStyles();\n const [auth, setAuth] = React.useState(true);\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n\n const handleChange = (event) => {\n setAuth(event.target.checked);\n };\n\n const handleMenu = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n const openInNewTab = (url) => {\n const newWindow = window.open(url, '_blank', 'noopener,noreferrer')\n if (newWindow) newWindow.opener = null\n }\n function help() {\n openInNewTab(\"https://bit.ly/3ofC4cT\")\n }\n\n function signOut() {\n Auth.signOut();\n window.location.href = \"/\";\n window.location.reload();\n }\n return (\n
\n \n \n \"logo\"\n {\n if (props.new) props.new()\n }}\n color=\"inherit\" aria-label=\"menu\">\n \n \n {\n if (props.showNotif) props.showNotif(null)\n }}\n color=\"inherit\" aria-label=\"menu\">\n \n \n {\n if (props.showNotif) props.smsShow(null)\n }}\n color=\"inherit\" aria-label=\"SMS items\">\n \n \n \n Camp Spontaneously\n \n {auth && (\n
\n \n \n \n \n Logout\n Help\n\n \n
\n )}\n
\n
\n
\n );\n}\n","import React from 'react';\nimport * as ib from \"./ibdata\";\nimport MaterialTable from 'material-table';\nimport Button from '@material-ui/core/Button';\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\n\nexport default function GetSites(props) {\n var [array, setArray] = React.useState([])\n function getRec(data, full) {\n var d = new Date();\n var n = d.getMonth() + 1;\n n = n + \"\"\n var m = n.padStart(2, '0');\n URL = \"https://www.recreation.gov/api/camps/availability/campground/\" + data + \"/month?start_date=2021-\" + m + \"-01T00%3A00%3A00.000Z\"\n ib.getCamps(URL, 'GET', null, done)\n function done(data) {\n if (!data || !data['campsites']) return\n let ff = data['campsites']\n var arr2 = []\n for (let f in ff) {\n let rr = ff[f]\n let save = { site: rr.site, name: rr.loop + \":\" + rr.site, full: full }\n arr2.push(save)\n }\n setArray(arr => ([...arr, ...arr2]))\n\n }\n\n }\n\n function getCalif(data2, full) {\n Date.isLeapYear = function (year) { \n return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0)); \n };\n \n Date.getDaysInMonth = function (year, month) {\n return [31, (Date.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n };\n \n Date.prototype.isLeapYear = function () { \n return Date.isLeapYear(this.getFullYear()); \n };\n \n Date.prototype.getDaysInMonth = function () { \n return Date.getDaysInMonth(this.getFullYear(), this.getMonth());\n };\n \n Date.prototype.addMonths = function (value) {\n var n = this.getDate();\n this.setDate(1);\n this.setMonth(this.getMonth() + value);\n this.setDate(Math.min(n, this.getDaysInMonth()));\n return this;\n };\n\n function formatDate(d) {\n var month = '' + (d.getMonth() + 1),\n day = '' + d.getDate(),\n year = d.getFullYear();\n \n if (month.length < 2) \n month = '0' + month;\n if (day.length < 2) \n day = '0' + day;\n \n return [month, day, year].join('-');\n }\n\n\n let p = new Date()\n var d = new Date();\n var nm = d.addMonths(1);\n var n = formatDate(p);\n var n1 = formatDate(nm);\n\n let data = {\n \"FacilityId\": data2, \"UnitTypeId\": 0, \"StartDate\": n, \"EndDate\": nm, \"InSeasonOnly\": true, \"WebOnly\": true, \"IsADA\": false,\n \"SleepingUnitId\": \"75\", \"UnitCategoryId\": \"1\", \"UnitTypesGroupIds\": [], \"MinDate\": \"11/13/2024\", \"MaxDate\": \"12/31/2025\"\n }\n let str = \"https://calirdr.usedirect.com/rdr/rdr/search/grid\";\n ib.getCamps(str, 'POST', JSON.stringify(data), done)\n function done(data2) {\n if (!data2 || !data2['Facility']) return\n let ff = data2['Facility']\n let units = ff['Units']\n var arr2 = []\n for (let f in units) {\n let rr = units[f]\n let save = { site: rr.ShortName, name: ff.Description + \":\" + rr.ShortName, full: full }\n arr2.push(save)\n }\n setArray(arr => ([...arr, ...arr2]))\n\n }\n\n }\n React.useEffect(() => {\n if (props.sites) {\n props.sites.forEach(e => {\n if (e.id.includes(\"Rec_\")) {\n let r = e.id.replace(\"Rec_\", \"\");\n getRec(r, e.id)\n }\n if (e.id.includes(\"RESV_\")) {\n let r = e.id.replace(\"RESV_\", \"\");\n getCalif(r, e.id)\n }\n });\n }\n }, [props.sites])\n\n function MultiSelect(data) {\n props.cb(data)\n }\n\n return (\n
\n MultiSelect(data)\n }\n ]}\n components={{\n Action:\n props => {\n if (props.action.icon === 'addcircle') {\n return (\n props.action.onClick(event, props.data)}\n color=\"secondary\"\n variant=\"contained\"\n style={{ textTransform: 'none' }}\n size=\"small\"\n startIcon={}\n >\n Add Sites\n \n )\n }\n }\n \n }}\n />\n
\n )\n}","import React from 'react';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport * as ib from \"./ibdata\";\nimport DateFnsUtils from '@date-io/date-fns';\nimport Grid from '@material-ui/core/Grid';\nimport MuiPhoneNumber from 'material-ui-phone-number';\nimport {\n MuiPickersUtilsProvider,\n KeyboardDatePicker,\n} from '@material-ui/pickers';\nimport MaterialTable from 'material-table';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Typography from '@material-ui/core/Typography';\nimport CloseIcon from '@material-ui/icons/Close';\n\nimport GetSites from './GetSites';\nconst dow = [\n \"Su\", \"M\", \"Tu\", \"W\", \"Th\", \"F\", \"Sa\"\n]\nexport default function MyNotif(props) {\n const open = props.open;\n const [text, setText] = React.useState(\"\");\n const [myReq, setmyReq] = React.useState([])\n\n function MultiSelect(data) {\n\n for (let j = 0; j < data.length; j++) {\n var n = data[j]\n ib.deleteCampsiteRequest(n)\n }\n }\n function ExistingTable(p2) {\n return ( \n },\n { title: 'Name', field: 'name' },\n { title: 'Nights', field: 'nights' },\n\n { title: 'Campsite', field: 'campName' },\n { title: 'Start Date', field: 'sdate' },\n { title: 'End Date', field: 'edate' },\n\n ]}\n options={{\n selection: true\n }}\n data={myReq}\n actions={[\n {\n tooltip: 'Delete requests',\n icon: \"delete\",\n onClick: (evt, data) => MultiSelect(data)\n }\n ]}\n\n />)\n }\n const [nights, setNights] = React.useState(\"1\");\n\n function handleNights(e) {\n let r = e.target.value\n setNights(r)\n }\n React.useEffect(() => {\n var s1, s2;\n ib.subscribeCampRequests(gotData, delcb);\n\n function delcb(n) {\n setmyReq(list => list.filter(item => item.id !== n.id));\n }\n function gotData(dat) {\n let ff = [...myReq];\n for (let j = 0; j < dat.length; j++) {\n var n = dat[j]\n for (var i = 0; i < ff.length; i++) {\n var c = ff[i]\n if (c.id === n.id) {\n setmyReq(list => list.filter(item => item.id !== n.id));\n }\n }\n try {\n let ff = JSON.parse(n.Campsite.content);\n n.campName = n.Campsite.name\n n.img = ff.img\n n.sdate = n.startdate.split('T')[0]\n n.edate = n.enddate.split('T')[0]\n\n } catch { }\n setmyReq(list => [...list, n]);\n\n }\n // setmyReq(ff);\n }\n return () => {\n if (s1) s1.unsubscribe();\n if (s2) s2.unsubscribe();\n\n }\n }, []);\n\n const [inData, setInData] = React.useState(props.data ? props.data : null)\n React.useEffect(() => {\n setInData(props.data)\n }, [props.data])\n const handleClose = () => {\n if (props.cb)\n props.cb(null);\n };\n const [selectedDate, setSelectedDate] = React.useState(new Date());\n const maxDate = new Date('December 31, 2025 23:24:00');\n const [allSites, setAllSites] = React.useState([])\n\n const handleDateChange = (date) => {\n if (new Date(date) > maxDate) {\n alert(\"Please pick a date before December. 31 2025\")\n return\n }\n setSelectedDate(date);\n };\n const [selectedEDate, setSelectedEDate] = React.useState(addDays(new Date(), 14));\n\n const handleDateChangeE = (date) => {\n if (new Date(date) > maxDate) {\n alert(\"Please pick a date before December. 31 2025\")\n return\n }\n setSelectedEDate(date);\n };\n const [phone, setPhone] = React.useState(\"\");\n\n function handleOnChange(ph) {\n setPhone(ph);\n }\n function addDays(theDate, days) {\n return new Date(theDate.getTime() + days * 24 * 60 * 60 * 1000);\n }\n function handleSave(e) {\n if (!text) return\n if (!phone) {\n alert(\"Please enter phone number\");\n return\n }\n\n for (let i = 0; i < props.data.length; i++) {\n const d = props.data[i]\n var s = []\n if (allSites.length > 0) {\n for (let j = 0; j < allSites.length; j++) {\n let pp = allSites[j]\n if (pp.full === d.id) {\n s.push(pp)\n }\n }\n }\n var str = \"\"\n if (state.pickDow) {\n var st = new Date(selectedDate)\n var ed = new Date(selectedEDate)\n for (let dt = st; dt <= ed; dt = addDays(dt, 1)) {\n let dw = dt.getDay()\n if (dowState[dow[dw]]) {\n var todayDate = new Date(dt - (dt.getTimezoneOffset() * 60000))\n .toISOString()\n .split(\"T\")[0];\n str += todayDate + \",\"\n }\n }\n }\n let dt1 = new Date(selectedDate.setHours(0, 0, 0, 0));\n let dt2 = new Date(selectedEDate.setHours(0, 0, 0, 0));\n\n var req = {\n phone: phone,\n name: text,\n CampsiteID: d.id,\n startdate: dt1,\n enddate: dt2,\n loadBucket: d.loadBucket,\n nights: nights\n }\n if (str.length > 0) {\n req['dates'] = str\n }\n if (s.length > 0) {\n req['content'] = JSON.stringify({\n 'filterSite': s\n })\n }\n ib.createCampsiteRequest(req);\n }\n setInData(null);\n // if (props.cb)\n // props.cb(null);\n }\n\n function handleLoad(e) {\n setText(e.target.value)\n }\n const [state, setState] = React.useState({\n pickSite: false,\n pickDow: false,\n })\n\n const [tableOpen, setTableOpen] = React.useState({ open: false, cb: doneTable })\n const handlePickSite = (event) => {\n let c = event.target.checked\n if (c) {\n setTableOpen({ open: true, cb: doneTable })\n }\n setState({ ...state, [event.target.name]: event.target.checked });\n };\n\n function handleDaysofWeek(event) {\n setState({ ...state, [event.target.name]: event.target.checked });\n }\n const [dowState, setDowState] = React.useState({\n \"Su\": false,\n \"M\": false,\n \"Tu\": false,\n \"W\": false,\n \"Th\": false,\n \"F\": false,\n \"Sa\": false,\n })\n function handleDay(event) {\n setDowState({ ...dowState, [event.target.name]: event.target.checked });\n\n }\n\n const [tabled, setTabled] = React.useState(\"\")\n\n function doneTable(data) {\n setTableOpen({ open: false, cb: doneTable })\n let s = \"\"\n data.forEach(e => {\n s += e.site + \",\"\n })\n setTabled(s);\n setAllSites(data);\n }\n\n return (\n \n \n {inData ? \"Create New Request\" : \"Campsite Requests\"}\n\n \n \n \n {myReq.length > 0 && !inData && !tableOpen.open && (\n \n\n )}\n\n {inData && (\n <>\n
\n \n\n \n\n {props.data.map((d) => (\n
  • \n {d.name}\n
  • \n ))}\n
    \n\n
    \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n \n \n \n\n \n\n }\n label=\"Only specific sites\"\n />\n\n \n \n \n }\n label=\"Pick days of the week\"\n />\n \n\n \n {state.pickSite && (\n <>\n {tableOpen.open ? (\n \n\n ) : (\n\n \n )}\n \n )}\n \n\n \n {state.pickDow && (\n <>\n {dow.map((d) => (\n }\n label={d}\n />\n ))}\n\n \n )}\n \n\n \n \n\n \n
    \n \n\n I agree to get campsite notification by text and the Policies at Terms and Privacy. My phone carrier may charge me for these messages. The frequency of the messages depends on the sites I register to be notified about. Reply STOP to stop or delete the campaign.\n
    \n
    \n\n \n )}\n
    \n\n
    \n );\n}\n","import React from 'react';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport * as ib from \"./ibdata\";\nimport Grid from '@material-ui/core/Grid';\nimport MaterialTable from 'material-table';\nimport CloseIcon from '@material-ui/icons/Close';\nimport CalendarHeatmap from 'react-calendar-heatmap';\nimport 'react-calendar-heatmap/dist/styles.css';\nimport ReactTooltip from 'react-tooltip';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport FormControl from '@material-ui/core/FormControl';\nimport { makeStyles } from '@material-ui/core/styles';\nimport NativeSelect from '@material-ui/core/NativeSelect';\nimport TextField from '@material-ui/core/TextField';\nimport _ from 'lodash';\n\nconst useStyles = makeStyles((theme) => ({\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120,\n },\n selectEmpty: {\n marginTop: theme.spacing(2),\n },\n}));\n\nvar debounceTimer = null\nvar allData = {}\nvar allSites = {}\nconst maxCount = 5000\nvar calcMax = maxCount\n\nexport default function MyNotif(props) {\n const classes = useStyles();\n\n const open = props.open;\n function ExistingTable(p2) {\n const [myReq, setmyReq] = React.useState([])\n\n React.useEffect(() => {\n if (p2 && p2.tab) {\n let arr = []\n Object.keys(p2.tab.who).forEach(k => {\n let o = p2.tab.who[k]\n if (o.csid in allSites) {\n let a = allSites[o.csid]\n arr.push({ id: o.csid, count: o.count, name: a.name, img: a.Content.img, type: a.type, popular: a.popular })\n }\n })\n setmyReq(arr)\n } else {\n setmyReq([])\n }\n }, [p2, p2.tab])\n \n const dtstr = p2 && p2.tab ? (p2.tab.count + \" on \" + p2.tab.date) : \"\"\n return ( \n },\n { title: 'Name', field: 'name' },\n { title: 'Count', field: 'count' },\n { title: 'Popular', field: 'popular', type: 'numeric', defaultSort: 'desc' },\n ]}\n options={{\n search: false\n }}\n\n data={myReq}\n\n />)\n }\n\n React.useEffect(() => {\n setupCalendarData()\n }, []);\n\n const handleClose = () => {\n if (props.cb)\n props.cb(null);\n };\n\n const [tabled, setTabled] = React.useState(null)\n\n const [cal, setCal] = React.useState({ startDate: new Date(), endDate: new Date(\"24-12-31\"), data: [] })\n function setupCalendarData() {\n ib.listVacencys(null, gotData)\n allData = {}\n function gotData(dat) {\n if (!dat) return finishData()\n dat.forEach(d => {\n d.avail = JSON.parse(d.siteName)\n if (!(d.Campsite.id in allSites)) {\n var f = JSON.parse(d.Campsite.content)\n d.Campsite.Content = f\n delete (d.Campsite.content)\n allSites[d.Campsite.id] = d.Campsite\n }\n delete (d.siteName)\n allData[d.id] = d\n })\n }\n }\n function finishData() {\n var dateDict = {}\n calcMax = 0\n let lcSearch = state.search.length > 0 ? state.search.toLowerCase() : \"\"\n\n Object.keys(allData).forEach(a1 => {\n let a = allData[a1]\n\n if (state.siteType !== \"all\") {\n let allow = false\n if (a.id.includes(state.siteType)) {\n allow = true\n }\n if (!allow) return\n }\n if (state.popularity !== \"all\") {\n let pp = parseInt(state.popularity)\n let allow = false\n if (a.Campsite.popular > pp) allow = true\n if (!allow) return\n }\n if (state.search.length > 0) {\n let allow = false\n let lowerName = a.Campsite.name.toLowerCase()\n if (lowerName.includes(lcSearch)) allow = true\n if (a.Campsite.id in allSites) {\n let lowerKW = allSites[a.Campsite.id].Content.keywords.toLowerCase()\n if (lowerKW.includes(lcSearch)) {\n allow = true\n }\n }\n if (!allow) return\n\n }\n a.avail.forEach(d => {\n\n if (!(d.date in dateDict)) {\n dateDict[d.date] = { count: 0, date: d.date, who: {} }\n }\n dateDict[d.date].who[a.Campsite.id] = { count: d.count, csid: a.Campsite.id }\n dateDict[d.date].count += d.count\n if (dateDict[d.date].count > calcMax) {\n calcMax = dateDict[d.date].count\n if (calcMax > maxCount) calcMax = maxCount\n }\n })\n })\n var all = []\n Object.keys(dateDict).forEach(a1 => {\n let a = dateDict[a1]\n all.push(a)\n })\n setCal(p => ({\n ...p,\n data: all\n }))\n if (tabled) {\n var old = tabled.date\n all.forEach(a => {\n if (a.date === old) {\n setTabled(a)\n }\n })\n }\n }\n function clickOn(value) {\n setTabled(value)\n }\n const [state, setState] = React.useState({\n siteType: 'all',\n popularity: 'all',\n search: \"\"\n });\n\n\n function applyFilter() {\n\n if (debounceTimer !== null) {\n clearTimeout(debounceTimer);\n debounceTimer = null;\n }\n debounceTimer = setTimeout(function () {\n // console.log(\"Setting color to = \", col);\n finishData()\n clearTimeout(debounceTimer);\n }, 400);\n }\n\n\n React.useEffect(() => {\n applyFilter()\n }, [state])\n const handleChange = (event) => {\n const name = event.target.name;\n setState({\n ...state,\n [name]: event.target.value,\n });\n };\n return (\n \n \n Campsite Availability\n \n \n \n <>\n \n\n \n\n \n\n \n \n \n \n \n \n \n \n\n \n Campground type\n \n \n \n \n \n \n \n \n \n\n \n Campground Popularity\n \n \n \n\n \n Search by name\n\n \n\n \n \n\n \n {\n if (!value) {\n return 'color-empty';\n }\n // console.log(\"CHECK \", value) \n const vals = [0, calcMax * 0.10, calcMax * 0.40, calcMax * 0.70, calcMax * 0.9]\n for (let i = 0; i < vals.length; i++) {\n if (value.count < vals[i]) {\n let v = `color-github-${i}`\n return v;\n }\n }\n return `color-github-4`;\n }}\n tooltipDataAttrs={value => {\n if (!value.count) {\n return {\n 'data-tip': `Available Sites: 0`,\n };\n }\n return {\n 'data-tip': `Available Sites: ${value.count}`,\n };\n }}\n showWeekdayLabels={true}\n onClick={value => clickOn(value)}\n />\n \n \n {tabled && }\n \n \n \n\n \n \n \n \n );\n}\n","import React from 'react';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport CloseIcon from '@material-ui/icons/Close';\nimport Grid from '@material-ui/core/Grid';\nimport TextField from '@material-ui/core/TextField';\nimport { Loader } from \"@googlemaps/js-api-loader\";\nimport * as ib from \"./ibdata\"\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Button from '@material-ui/core/Button';\nimport FormHelperText from '@material-ui/core/FormHelperText';\n\nimport FormControl from '@material-ui/core/FormControl';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport SearchIcon from '@material-ui/icons/Search';\n\nconst California = { lat: 37.0902, lng: -95.7129 }\nlet count = 20\nlet searching = {}\nconst useStyles = makeStyles((theme) => ({\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120,\n },\n map: {\n width: \"100%\",\n height: 400,\n },\n selectEmpty: {\n marginTop: theme.spacing(2),\n },\n}));\nvar map\n// var locations = {}\nvar avail = {}\nvar markers = []\nvar allData = {}\nvar allSites = {}\n\nexport default function ShowMapDialog(props) {\n const classes = useStyles();\n const [place, setPlace] = React.useState(null)\n const handleClose = () => {\n map = null\n if (props.cb)\n props.cb(null);\n };\n\n function setupCalendarData() {\n let oneweek = new Date(Date.now() + 1000 * 60 * 60 * 24 * 7)\n\n ib.listVacencys(null, gotData)\n allData = {}\n avail = {}\n function gotData(dat) {\n if (!dat) return finishData(oneweek)\n dat.forEach(d => {\n d.avail = JSON.parse(d.siteName)\n if (!(d.Campsite.id in allSites)) {\n var f = JSON.parse(d.Campsite.content)\n d.Campsite.Content = f\n delete (d.Campsite.content)\n allSites[d.Campsite.id] = d.Campsite\n }\n delete (d.siteName)\n allData[d.id] = d\n })\n }\n }\n\n function finishData(dateEnd) {\n avail = {}\n Object.keys(allData).forEach(a1 => {\n let a = allData[a1]\n a.avail.forEach(d => {\n let avDate = new Date(d.date)\n if (avDate < dateEnd) {\n if (!avail[a.Campsite.id]) {\n avail[a.Campsite.id] = {}\n }\n avail[a.Campsite.id][d.date] = d\n }\n })\n })\n }\n\n\n const [formValues, setformValues] = React.useState({ location: \"\", miles: \"20\", available: \"all\" })\n function valueChange(arg) {\n let val = arg.target.value\n let name = arg.target.name\n\n setformValues(p => {\n return ({\n ...p,\n [name]: val\n })\n })\n }\n React.useEffect(() => {\n if (map) return\n setupCalendarData()\n let loader = new Loader({\n apiKey: \"AIzaSyBAkENU4qa9Pf-QrF7Tyxaof9LVGpxIGdk\",\n version: \"weekly\",\n libraries: [\"places\"]\n })\n loader.load().then(() => {\n loadMap(California)\n findLocations()\n\n }).catch((e) => {\n console.error(e)\n })\n }, [])\n\n const [center, setCenter] = React.useState(California)\n function searchClick() {\n if (formValues.location.length > 0) {\n searchLocation(formValues.location, foundLoc, null)\n\n function foundLoc(loc, name) {\n if (loc) {\n let ll = loc.geometry.location\n let lat = ll.lat()\n let lng = ll.lng()\n deleteMarkers()\n findCrowFlies(lat, lng)\n setCenter({ lat: lat, lng: lng })\n // find all places and create markers\n }\n }\n }\n }\n function toRad(Value) {\n return Value * Math.PI / 180;\n }\n function calcCrow(lat1, lon1, lat2, lon2) {\n var R = 6371; // km\n var dLat = toRad(lat2 - lat1);\n var dLon = toRad(lon2 - lon1);\n var lat1 = toRad(lat1);\n var lat2 = toRad(lat2);\n\n var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2);\n var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n var d = R * c;\n return d * 0.621371;\n }\n\n function findCrowFlies(lat, lng) {\n var places = []\n let cs = props.camps\n\n if (formValues.available !== \"all\") {\n let week = parseInt(formValues.available)\n let oneweek = new Date(Date.now() + 1000 * 60 * 60 * 24 * 7 * week)\n finishData(oneweek)\n }\n\n let selDist = parseInt(formValues.miles)\n cs.forEach(c => {\n if (c.location && c.location.length > 0) {\n let l = JSON.parse(c.location)\n let dist = calcCrow(l.lat, l.lng, lat, lng)\n if (dist < selDist) {\n //filter available\n if (formValues.available !== \"all\") {\n if (!avail[c.id]) {\n return\n }\n }\n places.push(c)\n addMarker({ position: l, place: c })\n }\n }\n })\n return places\n }\n\n const zoom = 4;\n\n function loadMap(cent) {\n if (map) {\n map.panTo(cent)\n\n let bounds = new window.google.maps.LatLngBounds();\n markers.forEach((mark) => {\n let loc = new window.google.maps.LatLng(mark.position.lat(), mark.position.lng());\n bounds.extend(loc);\n })\n map.fitBounds(bounds);\n map.panToBounds(bounds);\n\n return\n }\n if (!ref || !ref.current || map) return\n map = new window.google.maps.Map(ref.current, {\n cent,\n zoom,\n });\n if (markers.length > 0) {\n let bounds = new window.google.maps.LatLngBounds();\n\n markers.forEach((mark) => {\n let loc = new window.google.maps.LatLng(mark.position.lat(), mark.position.lng());\n bounds.extend(loc);\n })\n map.fitBounds(bounds);\n map.panToBounds(bounds);\n }\n }\n const ref = React.useRef(null);\n\n React.useEffect(() => {\n if (center) {\n loadMap(center)\n }\n }, [center]);\n\n // Adds a marker to the map and push to the array.\n function addMarker(mark) {\n let position = mark.position\n const marker = new window.google.maps.Marker({\n position,\n map,\n });\n window.google.maps.event.addListener(marker, \"click\", () => {\n setPlace(mark.place)\n });\n markers.push(marker);\n }\n\n // Sets the map on all markers in the array.\n function setMapOnAll(map) {\n for (let i = 0; i < markers.length; i++) {\n markers[i].setMap(map);\n }\n }\n\n // Removes the markers from the map, but keeps them in the array.\n function hideMarkers() {\n setMapOnAll(null);\n }\n\n // Shows any markers currently in the array.\n function showMarkers() {\n setMapOnAll(map);\n }\n\n // Deletes all markers in the array by removing references to them.\n function deleteMarkers() {\n hideMarkers();\n markers = [];\n }\n\n function createMarker(place) {\n let google = window.google\n if (!place.geometry || !place.geometry.location) return;\n const marker = new google.maps.Marker({\n map,\n position: place.geometry.location,\n });\n google.maps.event.addListener(marker, \"click\", () => {\n console.log(\"CLICJ\", place.name)\n });\n }\n\n function findLocations() {\n let cs = props.camps\n cs.forEach(c => {\n if (c.location && c.location.length > 0) {\n // console.log(\"ALRADY LOCATION\", c)\n return\n }\n if (searching[c.id]) {\n return\n }\n\n count--\n if (count > 0) {\n searching[c.id] = true\n let cont = c.content\n let searchName = c.name\n if (cont && cont.keywords && cont.keywords.length > 0) {\n // searchName = cont.keywords\n }\n if (c.id.includes(\"Rec_\")) {\n let desc = cont.description\n let b = desc.split(\"\")[1]\n if (b) {\n b = b.split(\" is\")[0]\n b = b.replace(\"\\n\", \"\")\n b = b.replace(\"

    \", \"\")\n\n if (b.length > 0 && b.length < 30)\n searchName = b\n }\n }\n searchName = searchName.split(\"-\")[0]\n searchName = searchName.replace(\"SP\", \"State Park\")\n searchName = searchName.replace(\"SB\", \"State Beach\")\n searchName = searchName.replace(\"SRA\", \"State Park\")\n console.log(\"DOING SEARCH FOR\", searchName)\n searchLocation(searchName, foundCampLocation, JSON.parse(JSON.stringify(c)))\n }\n })\n\n }\n\n function foundCampLocation(loc, cname, cs) {\n if (loc) {\n let ll = loc.geometry.location\n let lat = ll.lat()\n let lng = ll.lng()\n console.log(\"FOUND LOCATION FOR \", cname, lat, lng, cs, loc)\n let cmd = JSON.parse(JSON.stringify(cs))\n cmd.location = JSON.stringify({ lat: lat, lng: lng })\n cmd.Rating = \"\" + loc.rating\n delete cmd['content']\n delete cmd['keywords']\n delete cmd['img']\n delete cmd['url']\n delete cmd['tableData']\n\n ib.updateCampsite(cmd)\n }\n }\n function searchLocation(c, cb, cs) {\n let google = window.google\n const request = {\n query: c,\n fields: [\"name\", \"geometry\", \"rating\"],\n // type:[\"campground\", \"lodging\", \"tourist_attraction\" , \"natural_feature\", \"park\", \"point_of_interest\", \"establishment\"],\n // locationBias: {radius: 600, center: {lat: 36.7783, lng: -119.4179}}\n\n };\n let service = new window.google.maps.places.PlacesService(map);\n service.findPlaceFromQuery(request, (results, status) => {\n if (status === google.maps.places.PlacesServiceStatus.OK && results && results.length > 0) {\n // for (let i = 0; i < results.length; i++) {\n cb(results[0], c, cs)\n // }\n // map.setCenter(results[0].geometry.location);\n } else {\n console.log(\"STATUS IS\", status, c, cs)\n }\n\n });\n }\n return (\n

    \n \n Search By Location\n \n \n \n <>\n \n\n \n \n
    \n\n valueChange(event)}\n value={formValues.location}\n helperText=\"Location to center map\"\n />\n \n Miles\n \n 10\n 20\n 50\n 100\n 500\n 1000\n \n Miles as crow flies\n \n \n Availability\n \n 1 Week\n 2 Weeks\n 4 Weeks\n Any\n \n Availabile in next\n \n }\n >\n Search\n \n
    \n\n
    \n\n \n
    \n \n\n \n {place && (\n\n
    \n \n\n \n \n {place.name}\n \n \n \n Rating/Polularity:\n {place.Rating}/{place.popular}\n \n \n \n \n \n\n
    \n )}\n\n
    \n \n \n\n \n \n
    \n\n )\n}","import React from 'react';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport MaterialTable from 'material-table';\n\nexport default function FoundReq(props) {\n const open = props.open;\n\n function ExistingTable(p2) {\n return ( \n \n \n\n },\n { title: 'Label', field: 'resvName' },\n { title: 'Hits', field: 'count', type: 'numeric' },\n { title: 'Last', field: 'dt', type: \"datetime\", defaultSort: 'desc' },\n\n {\n title: 'Campsite', field: 'foundName',\n render: rowData => \n {rowData.foundName}\n \n\n },\n\n ]}\n options={{\n selection: false\n }}\n data={props.data}\n actions={[\n ]}\n\n />)\n }\n\n const handleClose = () => {\n if (props.cb)\n props.cb(null);\n };\n\n\n return (\n \n Campsite Requests\n \n \n \n \n \n \n \n );\n}\n","import React from 'react';\nimport AddSite from './AddSite';\nimport * as ib from './ibdata';\nimport { CampTable } from './CampTable';\nimport { MyAppBar } from './AppBar'\nimport MyNotif from './MyNotif';\nimport CalendarAvail from './CalendarAvail';\nimport ShowMapDialog from './ShowMapDialog';\nimport FoundReq from './FoundReq';\nimport { Button, Grid, Typography } from '@material-ui/core';\nvar gCamp = []\nexport default function MainPage(props) {\n const [addSite, setAddSite] = React.useState({ open: false, cb: null })\n const [camps, setCamps] = React.useState([]);\n const [myFoundResult, setFoundResult] = React.useState([]);\n const [siteFoundCount, setSiteFoundCount] = React.useState(0);\n const [myReq, setmyReq] = React.useState([])\n const [reqCount, setReqCount] = React.useState(0);\n\n React.useEffect(() => {\n ib.subscribeCampsite(gotcamp)\n function gotcamp(dat) {\n let ff = [...gCamp];\n for (let j = 0; j < dat.length; j++) {\n var n = dat[j]\n for (var i = 0; i < ff.length; i++) {\n var c = ff[i]\n if (c.id === n.id) {\n ff.splice(i, 1)\n }\n }\n try {\n n.content = JSON.parse(n.content)\n n.keywords = n.content.keywords\n n.img = n.content.img\n if (n.id.includes(\"Rec_\")) {\n n.url = \"https://www.recreation.gov/camping/campgrounds/\" + n.content.id\n }\n if (n.id.includes(\"RecP_\")) {\n n.url = \"https://www.recreation.gov/permits/\" + n.content.id\n }\n if (n.id.includes(\"RESV_\")) {\n n.url = \"https://www.parks.ca.gov/?page_id=\" + n.content.linkId\n }\n if (n.id.includes(\"SON_\")) {\n n.url = \"https://reserve.sonomacountycamping.org/\" + n.content.linkId + \"/camping/\"\n }\n } catch { }\n ff.push(n)\n }\n ff.sort((a, b) => {\n if (a.popular && b.popular) {\n if (a.popular < b.popular) return 1\n else return -1\n }\n return 0\n })\n gCamp = ff\n setCamps(ff);\n }\n ib.subscribeFoundResults(gotFound)\n function gotFound(dat) {\n let ff = [...myFoundResult];\n var newc = 0;\n for (let j = 0; j < dat.length; j++) {\n var n = dat[j]\n // console.log(\"N IS\", n) \n if (!n) continue\n const idx = ff.findIndex(item => item.id === n.id)\n if (idx === -1) {\n try {\n n.content = JSON.parse(n.content)\n let p = n.Campsite\n p.content = JSON.parse(n.Campsite.content)\n n.img = p.content.img\n if (p.id.includes(\"Rec_\")) {\n n.url = \"https://www.recreation.gov/camping/campgrounds/\" + p.content.id\n }\n if (n.id.includes(\"RecP_\")) {\n n.url = \"https://www.recreation.gov/permits/\" + n.content.id\n }\n if (p.id.includes(\"RESV_\")) {\n n.url = \"https://www.parks.ca.gov/?page_id=\" + p.content.linkId\n }\n if (p.id.includes(\"SON_\")) {\n n.url = \"https://reserve.sonomacountycamping.org/\" + p.content.linkId + \"/camping/\"\n }\n n.resvName = n.content.resvName\n n.foundName = p.name\n n.dt = new Date(n.createdAt)\n } catch {\n\n }\n setFoundResult(list => [...list, n])\n\n newc += n.count\n }\n }\n setSiteFoundCount(old => old + newc)\n }\n\n ib.subscribeCampRequests(gotData2, delcb);\n function delcb(n) {\n setmyReq(list => list.filter(item => item.id !== n.id));\n }\n function gotData2(dat) {\n let ff = [...myReq];\n var newc = 0;\n for (let j = 0; j < dat.length; j++) {\n var n = dat[j]\n const idx = ff.findIndex(item => item.id === n.id)\n if (idx === -1) {\n setmyReq(list => [...list, n])\n newc += 1\n }\n }\n setReqCount(old => old + newc)\n }\n }, []);\n function AddNewSite() {\n setAddSite({ open: true, cb: done });\n function done(e) {\n setAddSite({ open: false });\n }\n }\n const [sNotif, setNotif] = React.useState({ open: false, cb: null })\n\n function showNotif(data) {\n setNotif({ open: true, cb: done, data: data });\n function done(e) {\n setNotif({ open: false });\n }\n }\n\n const [sCalendarAvail, setsCalendarAvail] = React.useState({ open: false, cb: null })\n\n function showCalendar(data) {\n setsCalendarAvail({ open: true, cb: done, data: data });\n function done(e) {\n setsCalendarAvail({ open: false });\n }\n }\n\n const [showMap, setShowMap] = React.useState({ open: false, cb: null })\n\n function showMapCB(data) {\n setShowMap({ open: true, cb: done, data: data });\n function done(e) {\n setShowMap({ open: false });\n }\n }\n const [smsObj, setSMSObj] = React.useState({ open: false, cb: null })\n\n async function smsShow() {\n setSMSObj({ open: true, cb: done, data: myFoundResult });\n function done(e) {\n setSMSObj({ open: false });\n }\n }\n return (\n
    \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n {addSite.open && ()}\n {sNotif.open && ()}\n {sCalendarAvail.open && ()}\n {showMap.open && ()}\n\n {smsObj.open && ()}\n\n \n
    \n )\n}\n","import React from 'react';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\n\nexport default function Donate(props) {\n\n return (\n
    \n
    \n \n \n \n \n \n \"\"\n
    \n\n
    \n )\n}","import React from 'react';\nimport './App.css';\nimport Amplify from 'aws-amplify';\nimport { AmplifyAuthenticator, AmplifyGoogleButton, AmplifySignUp, AmplifyContainer, AmplifySignIn } from '@aws-amplify/ui-react';\nimport { AuthState, onAuthUIStateChange } from '@aws-amplify/ui-components';\nimport awsconfig from './aws-exports';\nimport { createMuiTheme, ThemeProvider, makeStyles, responsiveFontSizes } from '@material-ui/core/styles';\nimport CssBaseline from '@material-ui/core/CssBaseline'\nimport purple from '@material-ui/core/colors/purple';\nimport green from '@material-ui/core/colors/green';\nimport MainPage from './MainPage';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport { Auth } from 'aws-amplify';\nimport ReactGA from 'react-ga';\nimport Donate from './Donate';\nlet theme = createMuiTheme({\n palette: {\n primary: {\n main: purple[500],\n },\n secondary: {\n main: green[500],\n },\n },\n});\n\nconst useStyles = makeStyles((theme) => ({\n card2: {\n position: 'relative',\n margin: '5% 0',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n maxHeight: 500,\n },\n gbutton: {\n width: 300,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n paddingTop: 20\n }\n}));\n\ntheme = responsiveFontSizes(theme);\n//awsconfig.oauth = {}\nawsconfig.oauth.redirectSignIn = `${window.location.origin}/`;\nawsconfig.oauth.redirectSignOut = `${window.location.origin}/`;\n\nAmplify.configure(awsconfig);\nReactGA.initialize('UA-201452247-1', { debug: false });\n//15300612052-bk22s6405fpjcts5fsgk93ktvaehl2ja.apps.googleusercontent.com&redirect_uri=https%3A%2F%2Fcamptext5afd530f-5afd530f-dev.auth.us-west-2.amazoncognito.com%2Foauth2%2Fidpresponse&scope=openid%20email%20profile&response_type=code&state=ZXlKMWMyVnlVRzl2YkVsa0lqb2lkWE10ZDJWemRDMHlYM05xUmtsb1NHeDJieUlzSW5CeWIzWnBaR1Z5VG1GdFpTSTZJa2R2YjJkc1pTSXNJbU5zYVdWdWRFbGtJam9pTTNaMk5HcHRjakExYUROMlp6ZGlNWFYwWm1weFlUSnJOMmdpTENKeVpXUnBjbVZqZEZWU1NTSTZJbWgwZEhBNkx5OXNiMk5oYkdodmMzUTZNekF3TUM4aUxDSnlaWE53YjI1elpWUjVjR1VpT2lKamIyUmxJaXdpY0hKdmRtbGtaWEpVZVhCbElqb2lSMjl2WjJ4bElpd2ljMk52Y0dWeklqcGJJbUYzY3k1amIyZHVhWFJ2TG5OcFoyNXBiaTUxYzJWeUxtRmtiV2x1SWl3aVpXMWhhV3dpTENKdmNHVnVhV1FpTENKd2FHOXVaU0lzSW5CeWIyWnBiR1VpWFN3aWMzUmhkR1VpT201MWJHd3NJbU52WkdWRGFHRnNiR1Z1WjJVaU9tNTFiR3dzSW1OdlpHVkRhR0ZzYkdWdVoyVk5aWFJvYjJRaU9tNTFiR3dzSW01dmJtTmxJam9pYmtKR2VsZE9VMkZDU20xdVptcFBkMUl4YzJ0RFpWTTNSRkpPYmt0YVNsYzNaVEJ5U1hCaFV6TktXR000Y1VWQ2JIQk9ZV3huVFhOSlVrNHRlRU5WVGpSZlJFSjRhMFU1U205VVIwUlVMUzFHWTI0NWFraHVibE5CVVVobFpHbHVZVEpSZFUxRWVtdHhkRVJQT0U1WlJHcGhjMWxNTldreFkxSlZjMUpyY0ZkamVtOXRPVEpWVkMxUVVVTnRhbFJtVHpWaFRubHlRMGh1VFZWc2NFWkZXbk4wTXpCbUxUUXRVV2hySWl3aWMyVnlkbVZ5U0c5emRGQnZjblFpT2lKallXMXdkR1Y0ZERWaFptUTFNekJtTFRWaFptUTFNekJtTFdSbGRpNWhkWFJvTG5WekxYZGxjM1F0TWk1aGJXRjZiMjVqYjJkdWFYUnZMbU52YlNJc0ltTnlaV0YwYVc5dVZHbHRaVk5sWTI5dVpITWlPakUyTWpFd09UUXdNeklzSW5ObGMzTnBiMjRpT201MWJHd3NJblZ6WlhKQmRIUnlhV0oxZEdWeklqcHVkV3hzTENKemRHRjBaVVp2Y2t4cGJtdHBibWRUWlhOemFXOXVJanBtWVd4elpYMD06WnhzbmN4YU5hQ0FsQktJbDZBVFlwNlVnbnZ\n// const federated = {\n// googleClientId: \"15300612052-bk22s6405fpjcts5fsgk93ktvaehl2ja.apps.googleusercontent.com\",\n// }\nvar hidden = false\nconst AuthStateApp = () => {\n const [authState, setAuthState] = React.useState();\n const [user, setUser] = React.useState();\n const classes = useStyles();\n\n function hideAWS() {\n if (hidden) return\n let s11 = document.querySelector(\"amplify-sign-in\")\n if (!s11) return\n let s1 = s11.shadowRoot\n if (s1) {\n let s21 = s1.querySelector(\"amplify-federated-buttons\")\n if (!s21) return\n let s2 = s21.shadowRoot\n if (s2) {\n let s31 = s2.querySelector(\"amplify-oauth-button\")\n if (!s31) return\n let s3 = s31.style.display = \"none\";\n hidden = true\n }\n }\n }\n const [snack, setSnack] = React.useState(true)\n function onCloseSnack() {\n setSnack(false)\n }\n // function signGoogle() {\n // Auth.federatedSignIn({ provider: \"Google\" });\n // // setTimeout(function () {\n // // window.location.reload()\n // // })\n // }\n React.useEffect(() => {\n ReactGA.pageview(window.location.pathname); \n window.setInterval(hideAWS, 300);\n return onAuthUIStateChange((nextAuthState, authData) => {\n setAuthState(nextAuthState);\n setUser(authData)\n });\n }, []);\n return authState === AuthState.SignedIn && user ? (\n \n \n
    \n \n
    \n
    \n\n ) : (\n <>\n \n \n \n \n \n\n \"logo\"\n
    \n \n Get instant notification when campsites become available\n
    \n
    \n\n \n
    \n \n\n \n \n \n\n Auth.federatedSignIn({ provider: \"Google\" })}\n />\n \n {/* */}\n\n {/* */}\n \n \n\n
    \n
    \n\n
    \n
    \n\n \n );\n}\n\nexport default AuthStateApp;","import React from 'react';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\n\nexport default function TermsCondiitons(props) {\n\n return (\n
    \n

    Text Message Consent Agreement

    This Text Message Consent Agreement (\"Agreement\") is entered into between CampsiteText.com, hereinafter referred to as the \"Sender,\" and You, hereinafter referred to as the \"Recipient.\"

    Purpose:\n The Sender and Recipient agree to establish the terms under which the Sender may send text messages to the Recipient.

    Terms and Conditions:

    1. \n Consent: By providing your mobile phone number and accepting this Agreement, the Recipient gives express consent to the Sender to send text messages to the provided phone number.

    2. Frequency: The Sender may send text messages to the Recipient for informational, promotional, or other communication purposes. The frequency of text messages will vary based on the nature of the communication and Recipient's preferences.

    3. Opt-Out: The Recipient may opt out of receiving text messages from the Sender at any time by replying \"STOP\" to the received text message. The Sender will promptly honor opt-out requests, and no further text messages will be sent to the Recipient after opting out.

    4. Costs: Standard messaging rates or other charges from your wireless carrier may apply to the text messages sent and received. The Sender is not responsible for any charges incurred by the Recipient while receiving text messages.

    5. Privacy: The Sender will keep all information provided by the Recipient confidential and will not share it with third parties unless required by law or with the Recipient's explicit consent.

    6. Content: Text messages may contain information related to products, services, updates, promotions, or other relevant content as determined by the Sender.

    7. No Warranty: The Sender makes no warranties regarding the accuracy, completeness, or reliability of the information provided via text messages.

    8. Termination: The Sender reserves the right to terminate this Agreement and stop sending text messages to the Recipient at any time, with or without notice.

    Contact Information:

    Sender:\n Email: support@campsitetext.com

    \n

    By accepting this Agreement, the Recipient acknowledges that they have read and understood its terms and conditions and agree to receive text messages from the Sender.

    \n
    \n
    \n )\n}","import React from 'react';\n\n\nexport default function Privacy(props) {\n\n return (\n
    \n

    Privacy Policy

    \n

    Welcome to campsitetext.com.Your privacy is important to us, and we are committed to protecting the personal information you share with us during your use of our services, website, features, content, and applications. This Privacy Policy explains what information we collect, how we use it, and your choices regarding your information.

    \n\n
    \n

    Information Collection and Use:

    \n

    \n We collect information you provide directly to us, such as when you create an account, subscribe to our text message notifications, or participate in any interactive features on the website. The types of information we may collect include:\n Your name, email address, and phone number\n

      \n
    • \n Preferences and interests related to camping\n
    • \n
    • \n Any other information that you choose to provide\n
    • \n
    • \n Preferences and interests related to camping\n
    • \n
    \n We use this information to:\n Provide, maintain, and improve our services\n Send you information including confirmations, technical notices, updates, security alerts, and support messages\n Respond to your comments, questions, and requests\n

    \n
    \n\n
    \n

    Text Messaging:

    \n {/* Text messaging details here */}\n

    \n When you opt-in to our text message service, we collect your mobile phone number in order to send you camping-related updates and information. By subscribing to our text message service, you agree to receive text message notifications from campsitetext.com as described in the frequency guidelines of our messaging program.\n

    \n
    \n\n
    \n

    Non-Sharing of Mobile Numbers:

    \n {/* Non-sharing of mobile numbers details here */}\n

    We value your privacy and the trust you place in us. We will not share, sell, rent, or otherwise disclose your mobile number to any third parties for their marketing purposes without your consent. Your mobile number will only be used for the specific purposes of our text messaging service.

    \n
    \n\n
    \n

    Message Frequency:

    \n {/* Message frequency details here */}\n

    The frequency of messages sent through our text message service may vary. You will typically receive messages that relate to upcoming camping site notifications, important notifications, and alerts.

    \n
    \n\n
    \n

    Message and Data Rates:

    \n {/* Message and data rates details here */}\n

    \n Please be aware that message and data rates may apply for any messages sent to you from us and to us from you. If you have any questions about your text plan or data plan, please contact your wireless provider.\n

    \n
    \n\n
    \n

    Your Choices:

    \n {/* Your choices details here */}\n

    You may opt-out of receiving text messages from campsitetext.com at any time by replying \"STOP\". You can also login and delete all notifications from the website

    \n
    \n\n
    \n

    Changes to this Policy:

    \n {/* Changes to the policy details here */}\n

    We may update this Privacy Policy from time to time.

    \n
    \n\n
    \n

    Contact Us:

    \n {/* Contact details here */}\n

    If you have any questions about this Privacy Policy or our text message service, please contact us at support@campsitetext.com.

    \n
    \n
    \n );\n};\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport './index.css';\nimport App from './App';\nimport Term from './Terms';\nimport Privacy from './Privacy';\nimport Donate from './Donate';\n\nimport reportWebVitals from './reportWebVitals';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom';\nReactDOM.render(\n \n \n \n }>\n }>\n }>\n }>\n\n \n \n\n\n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}