{"version":3,"sources":["components/button/Button.jsx","components/button/index.js","components/form/LoadingLabel.jsx","app/notFound/NotFound.jsx","services/analytics.js","reducers/locations.js","reducers/locationErrors.js","reducers/dataEntryErrorsReducer.js","reducers/comments.js","reducers/index.js","actions/index.js","components/icon/Icon.jsx","services/seo.js","config.js","Constants/index.js","services/api.js","store/index.js","app/IconLibrary.js","app/landing/GetStartedButton.jsx","app/landing/Testimonial.jsx","app/landing/PartnerPicture.jsx","app/landing/LandingPage.jsx","app/App.jsx","app/aws-exports.js","registerServiceWorker.js","index.js","services/auth.js","components/icon/index.js","components/routing/withTracker.jsx","reducers/newLocation.js"],"names":["Button","onClick","children","className","compact","basic","primary","secondary","fluid","half","disabled","undefined","color","classNames","cx","style","type","defaultProps","LoadingLabel","name","spin","aria-hidden","NotFound","token","config","mixpanelToken","mixpanel","init","analytics","identify","id","alias","track","props","people","set","constructUpdatedMetadata","location","metaDataSection","fieldName","dateString","metadata","subFields","newField","field_name","last_action_date","fieldIndex","findIndex","field","newSubFields","slice","concat","constructNewStateWithUpdatedPhones","state","action","newPhones","payload","locationId","Phones","locationsReducer","Date","toISOString","GET_LOCATION_RESPONSE","originalLocationId","GET_TAXONOMY_RESPONSE","taxonomy","OPTIMISTIC_UPDATE_SERVICE","params","serviceId","documents","membership","eventRelatedInfo","area","Services","serviceIdx","service","Languages","DocumentsInfo","RegularSchedules","HolidaySchedules","EventRelatedInfos","ServiceTaxonomySpecificAttributes","ServiceAreas","Eligibilities","RequiredDocuments","proofs","map","p","document","updated_at","membershipEl","find","e","EligibilityParameter","eligible_values","description","push","taxonomySpecificAttributes","forEach","attr","Object","prototype","hasOwnProperty","call","fieldIdx","el","attribute","values","hours","opensAt","closesAt","weekday","opens_at","closes_at","DAYS","indexOf","irregularHours","otherProps","ages_served","agesServed","who_does_it_serve","whoDoesItServe","additional_info","additionalInfo","languages","recertification_time","recertificationTime","grace_period","gracePeriod","OPTIMISTIC_DELETE_SERVICE","newServices","filter","s","OPTIMISTIC_UPDATE_ORGANIZATION","organization","Organization","OPTIMISTIC_UPDATE_LOCATION","UPDATE_LOCATION_ERROR","OPTIMISTIC_UPDATE_PHONE","idx","phone","phoneId","OPTIMISTIC_CREATE_PHONE","OPTIMISTIC_DELETE_PHONE","CREATE_PHONE_SUCCESS","number","extension","locationErrorsReducer","GET_LOCATION_REQUEST","GET_LOCATION_ERROR","error","message","UPDATE_SERVICE_ERROR","DISMISS_DATA_ENTRY_ERRORS","selectComments","comments","selectIsPostingComment","isPosting","rootReducerObj","locations","locationErrors","dataEntryErrors","dataEntryErrorsReducer","newLocation","newLocationReducer","GET_COMMENTS_RESPONSE","OPTIMISTIC_POST_COMMENT","comment","oldComments","content","created_at","POST_COMMENT_SUCCESS","POST_COMMENT_ERROR","POST_REPLY_REQUEST","POST_REPLY_SUCCESS","originalCommentId","reply","originalComment","originalCommentIndex","updatedComments","Replies","POST_REPLY_ERROR","DELETE_REPLY_REQUEST","REMOVE_COMMENT_REQUEST","commentIndex","DELETE_REPLY_ERROR","REMOVE_COMMENT_ERROR","START_CREATING_NEW_LOCATION","DONE_CREATING_NEW_LOCATION","getLocation","dispatch","api","then","data","catch","getTaxonomy","console","getComments","startCreatingNewLocation","position","address","doneCreatingNewLocation","wasCreatedSuccessfully","updateLocation","locationData","deletePhone","updatePhone","phoneData","createPhone","response","updateOrganization","organizationId","updateService","deleteService","updateLanguages","languageIds","postComment","replyToComment","postedReply","deleteReply","removeComment","postErrorReport","errorReport","postedErrorReport","dismissDataEntryErrors","Icon","custom","alt","size","circle","containerClassNames","iconProps","icon","src","getCanonicalUrl","window","href","replace","gaTrackingId","process","REACT_APP_GA_TRACKING_ID","baseApi","privacyUrl","PRIVACY_URL","termsOfUseUrl","TOU_URL","commentGuidelinesUrl","COMMENT_GUIDELINES_URL","feedbackEmail","FEEDBACK_EMAIL","googleMaps","REACT_APP_GMAPS_URL","adminGroupName","REACT_APP_ADMIN_GROUP_NAME","disableAuth","value","defaultValue","toLowerCase","parseBoolean","REACT_APP_DISABLE_AUTH","REACT_APP_MIXPANEL_TOKEN","EVERYONE","SERVICE_GROUPS","TAXONOMY_SPECIFIC_ATTRIBUTES","clothingOccasion","wearerAge","tgncClothing","hasHivNutrition","OCCASIONS","COVID19","DESKTOP_BREAKPOINT","getLocations","latitude","longitude","radius","minResults","searchString","organizationName","occasion","locationFieldsOnly","serviceFilters","taxonomyIds","openNow","zipcode","referralRequired","photoId","clientsOnly","gender","clothingKind","hivNutrition","Math","min","taxonomyId","join","openAt","photoIdRequired","servesZipcode","attributes","length","axios","request","url","method","paramsSerializer","rawParams","qs","stringify","result","updateResource","pathPrefix","pathSuffix","getAuthToken","idJwtToken","pathComponents","axiosWithRetries","create","defaults","raxConfig","instance","rax","headers","Authorization","httpMethodsToRetry","retry","noResponseRetries","getLanguages","createServices","locationTaxonomies","requests","all","createOrganization","createLocation","bind","postedBy","contactInfo","hidden","generalLocationError","services","history","createBrowserHistory","middleware","thunk","routerMiddleware","composedEnhancers","compose","applyMiddleware","store","createStore","combineReducers","rootReducer","router","routerReducer","library","add","faChevronDown","faChevronUp","faChevronLeft","faChevronRight","faArrowLeft","faMicrophone","faSearch","faTimes","faUtensils","faHome","faShower","faTshirt","faEllipsisH","faUser","faUsers","faChild","faMars","faVenus","faTransgender","faIdCard","faExclamationTriangle","faClock","faPhone","faCheck","faSlidersH","faTimesCircle","faCrosshairs","faCamera","faPlus","faSpinner","faTrash","faTwitterSquare","faFacebookSquare","faLinkedin","faBars","GetStartedButton","rest","Link","to","Testimonial","imagePartialPath","text","media","srcSet","PartnerPicture","link","LandingPage","scrollToContent","contentRef","current","scrollIntoView","behavior","block","scrollToContentTop","topRef","React","createRef","ref","this","rel","target","Component","TeamRouter","lazy","CommentsRouter","findRouterPromise","FindRouter","listen","scrollTo","Amplify","configure","Auth","identityPoolId","region","userPoolId","userPoolWebClientId","feedbackLocations","AmplifyTheme","container","paddingRight","paddingLeft","App","Helmet","fallback","Switch","Route","exact","strict","path","render","Redirect","pathname","component","withTracker","key","isLocalhost","Boolean","hostname","match","registerValidSW","swUrl","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","log","ReactDOM","getElementById","URL","origin","addEventListener","fetch","status","get","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker","getIdToken","Promise","resolve","currentAuthenticatedUser","user","idToken","signInUserSession","getJwtToken","getUserOrganizations","organizationsStr","split","isUserAdmin","groups","GoogleAnalytics","initialize","WrappedComponent","options","trackPage","page","pageview","HOC","nextProps","currentPage","nextPage","selectNewLocationData"],"mappings":"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","file":"static/js/main.75bb0ab9.chunk.js","sourcesContent":["import React from 'react';\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport './Button.css';\n\nfunction Button({\n onClick,\n children,\n className,\n compact,\n basic,\n primary,\n secondary,\n fluid,\n half,\n disabled = undefined,\n color = undefined,\n}) {\n const classNames = cx('Button', className, {\n 'Button-primary': primary,\n 'Button-secondary': secondary,\n 'Button-fluid': fluid,\n 'Button-disabled': disabled,\n 'Button-basic': basic,\n 'Button-compact': compact,\n 'Button-half': half,\n });\n\n return (\n \n {children}\n \n );\n}\n\nButton.defaultProps = {\n basic: false,\n primary: false,\n secondary: false,\n disabled: false,\n fluid: false,\n className: '',\n compact: false,\n half: false,\n};\n\nButton.propTypes = {\n onClick: PropTypes.func.isRequired,\n children: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired,\n className: PropTypes.string,\n basic: PropTypes.bool,\n compact: PropTypes.bool,\n primary: PropTypes.bool,\n secondary: PropTypes.bool,\n disabled: PropTypes.bool,\n fluid: PropTypes.bool,\n half: PropTypes.bool,\n};\n\nexport default Button;\n","import Button from './Button';\n\nexport default Button;\n","import React from 'react';\nimport Icon from '../icon';\n\nconst LoadingLabel = ({ children }) => (\n

\n  \n { (children || Loading location data) }\n ...{' '}\n

\n);\n\nexport default LoadingLabel;\n","import React from 'react';\n\nexport default function NotFound() {\n return (\n
\n

Page Not Found

\n
\n );\n}\n","import mixpanel from 'mixpanel-browser';\nimport config from '../config';\n\nconst token = config.mixpanelToken;\nmixpanel.init(token);\n\nconst analytics = {\n identify: (id) => {\n mixpanel.identify(id);\n },\n alias: (id) => {\n mixpanel.alias(id);\n },\n track: (name, props) => {\n mixpanel.track(name, props);\n },\n people: {\n set: (props) => {\n mixpanel.people.set(props);\n },\n },\n};\n\nexport default analytics;\n","import {\n GET_LOCATION_RESPONSE,\n GET_TAXONOMY_RESPONSE,\n OPTIMISTIC_UPDATE_LOCATION,\n UPDATE_LOCATION_ERROR,\n OPTIMISTIC_UPDATE_PHONE,\n OPTIMISTIC_CREATE_PHONE,\n CREATE_PHONE_SUCCESS,\n OPTIMISTIC_UPDATE_ORGANIZATION,\n OPTIMISTIC_UPDATE_SERVICE,\n OPTIMISTIC_DELETE_SERVICE,\n OPTIMISTIC_DELETE_PHONE,\n} from '../actions';\nimport { DAYS } from '../Constants';\n\nfunction constructUpdatedMetadata(location, metaDataSection, fieldName, dateString) {\n const { metadata } = location;\n const subFields = metadata[metaDataSection] || [];\n const newField = { field_name: fieldName, last_action_date: dateString };\n const fieldIndex = subFields ? subFields.findIndex(field => field.field_name === fieldName) : -1;\n const newSubFields =\n fieldIndex > -1\n ? [...subFields.slice(0, fieldIndex), newField, ...subFields.slice(fieldIndex + 1)]\n : subFields.concat(newField);\n\n return {\n ...metadata,\n [metaDataSection]: newSubFields,\n };\n}\n\nfunction constructNewStateWithUpdatedPhones(state, action, newPhones, location, dateString) {\n const { metaDataSection, fieldName, locationId } = action.payload;\n return {\n ...state,\n [`last/${locationId}`]: state[locationId],\n [locationId]: {\n ...state[locationId],\n Phones: newPhones,\n metadata: constructUpdatedMetadata(location, metaDataSection, fieldName, dateString),\n },\n };\n}\n\nconst locationsReducer = (state = {}, action) => {\n const dateString = new Date().toISOString();\n switch (action.type) {\n case GET_LOCATION_RESPONSE:\n if (action.payload) {\n const originalLocationId = `original/${action.payload.id}`;\n return {\n ...state,\n // tag initial download of location data so that we can use it for \"session\" logic\n [originalLocationId]: state[originalLocationId] || action.payload,\n [action.payload.id]: action.payload,\n };\n }\n break;\n case GET_TAXONOMY_RESPONSE:\n return action.payload ? { ...state, taxonomy: [...action.payload] } : state;\n case OPTIMISTIC_UPDATE_SERVICE:\n if (action.payload) {\n const {\n metaDataSection, fieldName, locationId, params, serviceId,\n } = action.payload;\n const {\n documents = {},\n membership,\n eventRelatedInfo,\n area,\n } = params;\n const location = state[locationId];\n const { Services } = location;\n const serviceIdx = Services.findIndex(service => service.id === serviceId);\n const service = location.Services[serviceIdx];\n const {\n Languages,\n DocumentsInfo,\n RegularSchedules,\n HolidaySchedules,\n EventRelatedInfos,\n ServiceTaxonomySpecificAttributes = [],\n ServiceAreas = [],\n Eligibilities = [],\n } = service;\n\n let { RequiredDocuments } = service;\n\n if (documents.proofs != null) {\n RequiredDocuments = documents.proofs.map(p => ({ document: p }));\n }\n\n if (area != null) {\n ServiceAreas[0] = {\n ...area,\n updated_at: dateString,\n };\n }\n\n if (membership) {\n const membershipEl = Eligibilities\n .find(e => e.EligibilityParameter.name === 'membership');\n\n if (membershipEl) {\n membershipEl.eligible_values = membership.eligible_values;\n membershipEl.description = membership.description;\n membershipEl.updated_at = dateString;\n } else {\n Eligibilities.push({\n eligible_values: membership.eligible_values,\n description: membership.description,\n updated_at: dateString,\n EligibilityParameter: {\n name: 'membership',\n },\n });\n }\n }\n\n const taxonomySpecificAttributes = [\n 'hasHivNutrition',\n 'tgncClothing',\n 'clothingOccasion',\n 'wearerAge',\n ];\n\n taxonomySpecificAttributes.forEach((attr) => {\n if (Object.prototype.hasOwnProperty.call(params, attr)) {\n const fieldIdx = ServiceTaxonomySpecificAttributes\n .findIndex(el => el.attribute.name === attr);\n\n if (fieldIdx !== -1) {\n ServiceTaxonomySpecificAttributes[fieldIdx].values = params[attr];\n ServiceTaxonomySpecificAttributes[fieldIdx].updated_at = dateString;\n } else {\n ServiceTaxonomySpecificAttributes.push({\n values: params[attr],\n updated_at: dateString,\n attribute: {\n name: attr,\n },\n });\n }\n }\n });\n\n let hours = null;\n if (params.hours) {\n hours = params.hours.map(({ opensAt, closesAt, weekday }) => ({\n opens_at: `${opensAt}:00`,\n closes_at: `${closesAt}:00`,\n weekday: DAYS.indexOf(weekday) + 1,\n }));\n }\n let irregularHours = null;\n if (params.irregularHours) {\n irregularHours = params.irregularHours.map(({\n opensAt,\n closesAt,\n weekday,\n ...otherProps\n }) => ({\n ...otherProps,\n opens_at: `${opensAt}:00`,\n closes_at: `${closesAt}:00`,\n weekday: DAYS.indexOf(weekday) + 1,\n }));\n }\n return {\n ...state,\n [`last/${locationId}`]: location,\n [locationId]: {\n ...location,\n Services: [\n ...Services.slice(0, serviceIdx),\n {\n ...service,\n ...params,\n // API params mapped to data field names\n ages_served: params.agesServed || service.ages_served,\n who_does_it_serve: params.whoDoesItServe || service.who_does_it_serve,\n additional_info: params.additionalInfo || service.additional_info,\n metadata: constructUpdatedMetadata(service, metaDataSection, fieldName, dateString),\n Languages: params.languages || Languages,\n DocumentsInfo: {\n recertification_time: documents.recertificationTime ||\n (DocumentsInfo && DocumentsInfo.recertification_time),\n grace_period: documents.gracePeriod ||\n (DocumentsInfo && DocumentsInfo.grace_period),\n additional_info: documents.additionalInfo ||\n (DocumentsInfo && DocumentsInfo.additional_info),\n },\n RequiredDocuments,\n RegularSchedules: hours || RegularSchedules,\n HolidaySchedules: irregularHours || HolidaySchedules,\n EventRelatedInfos: eventRelatedInfo ? [eventRelatedInfo] : EventRelatedInfos,\n ServiceTaxonomySpecificAttributes,\n ServiceAreas,\n Eligibilities,\n },\n ...Services.slice(serviceIdx + 1),\n ],\n },\n };\n }\n break;\n case OPTIMISTIC_DELETE_SERVICE: {\n const { locationId, serviceId } = action.payload;\n const location = state[locationId];\n\n const newServices = location.Services.filter(s => s.id !== serviceId);\n return {\n ...state,\n [`last/${locationId}`]: location,\n [locationId]: { ...location, Services: newServices },\n };\n }\n case OPTIMISTIC_UPDATE_ORGANIZATION:\n if (action.payload) {\n const {\n metaDataSection, fieldName, locationId, params,\n } = action.payload;\n const location = state[locationId];\n const organization = location.Organization;\n return {\n ...state,\n [`last/${locationId}`]: state[locationId],\n [locationId]: {\n ...state[locationId],\n Organization: {\n ...organization,\n ...params,\n },\n metadata: constructUpdatedMetadata(location, metaDataSection, fieldName, dateString),\n },\n };\n }\n break;\n case OPTIMISTIC_UPDATE_LOCATION:\n if (action.payload) {\n const {\n id, params, metaDataSection, fieldName,\n } = action.payload;\n const location = state[id];\n return {\n ...state,\n [`last/${id}`]: location,\n [id]: {\n ...location,\n ...params,\n EventRelatedInfos: [params.eventRelatedInfo] || location.EventRelatedInfos,\n metadata: constructUpdatedMetadata(location, metaDataSection, fieldName, dateString),\n },\n };\n }\n break;\n case UPDATE_LOCATION_ERROR:\n if (action.payload) {\n return {\n ...state,\n [`last/${action.payload.id}`]: null,\n [action.payload.id]: state[`last/${action.payload.id}`],\n };\n }\n break;\n case OPTIMISTIC_UPDATE_PHONE: {\n const location = state[action.payload.locationId];\n const idx = location.Phones.findIndex(phone => phone.id === action.payload.phoneId);\n const phone = location.Phones[idx];\n const newPhones = [\n ...location.Phones.slice(0, idx),\n { ...phone, ...action.payload.params },\n ...location.Phones.slice(idx + 1),\n ];\n return constructNewStateWithUpdatedPhones(state, action, newPhones, location, dateString);\n }\n case OPTIMISTIC_CREATE_PHONE: {\n const location = state[action.payload.locationId];\n let newPhones;\n if (!location.Phones) {\n newPhones = [action.payload.params];\n } else {\n newPhones = [...location.Phones, action.payload.params];\n }\n return constructNewStateWithUpdatedPhones(state, action, newPhones, location, dateString);\n }\n case OPTIMISTIC_DELETE_PHONE: {\n const location = state[action.payload.locationId];\n const newPhones = location.Phones.filter(p => p.id !== action.payload.phoneId);\n return constructNewStateWithUpdatedPhones(state, action, newPhones, location, dateString);\n }\n case CREATE_PHONE_SUCCESS: {\n const location = state[action.payload.locationId];\n\n const idx = location.Phones.findIndex(phone =>\n !phone.id &&\n phone.number === action.payload.params.number &&\n phone.extension === action.payload.params.extension);\n const phone = location.Phones[idx];\n\n const newPhones = [\n ...location.Phones.slice(0, idx),\n { ...phone, ...action.payload.params },\n ...location.Phones.slice(idx + 1),\n ];\n return constructNewStateWithUpdatedPhones(state, action, newPhones, location, dateString);\n }\n default:\n return state;\n }\n\n return state;\n};\n\nexport default locationsReducer;\n","import {\n GET_LOCATION_REQUEST,\n GET_LOCATION_ERROR,\n} from '../actions';\n\nconst locationErrorsReducer = (state = {}, action) => {\n switch (action.type) {\n case GET_LOCATION_REQUEST:\n return { ...state, [action.locationId]: null };\n case GET_LOCATION_ERROR:\n return { ...state, [action.locationId]: action.error.message };\n default:\n break;\n }\n return state;\n};\n\nexport default locationErrorsReducer;\n","import {\n UPDATE_LOCATION_ERROR,\n UPDATE_SERVICE_ERROR,\n DISMISS_DATA_ENTRY_ERRORS,\n} from '../actions';\n\nconst locationErrorsReducer = (state = [], action) => {\n switch (action.type) {\n case UPDATE_LOCATION_ERROR:\n case UPDATE_SERVICE_ERROR:\n if (!action.payload || !action.payload.error) {\n return state;\n }\n\n return [action.payload.error, ...state];\n\n case DISMISS_DATA_ENTRY_ERRORS:\n return [];\n\n default:\n return state;\n }\n};\n\nexport default locationErrorsReducer;\n","import {\n GET_COMMENTS_RESPONSE,\n OPTIMISTIC_POST_COMMENT,\n POST_COMMENT_ERROR,\n POST_COMMENT_SUCCESS,\n POST_REPLY_REQUEST,\n POST_REPLY_SUCCESS,\n POST_REPLY_ERROR,\n DELETE_REPLY_REQUEST,\n DELETE_REPLY_ERROR,\n REMOVE_COMMENT_REQUEST,\n REMOVE_COMMENT_ERROR,\n} from '../actions';\n\nexport const commentsReducer = (state = { isPosting: false }, action) => {\n switch (action.type) {\n case GET_COMMENTS_RESPONSE:\n return {\n ...state,\n [action.payload.locationId]: action.payload.comments,\n };\n\n case OPTIMISTIC_POST_COMMENT: {\n const { locationId, comment } = action.payload;\n const oldComments = state[locationId] || [];\n return {\n ...state,\n [`last/${locationId}`]: oldComments,\n [locationId]: [\n {\n id: 'temp',\n content: comment.content,\n created_at: new Date(),\n },\n ...oldComments,\n ],\n isPosting: true,\n };\n }\n\n case POST_COMMENT_SUCCESS:\n return {\n ...state,\n isPosting: false,\n };\n\n case POST_COMMENT_ERROR:\n return {\n ...state,\n [`last/${action.payload.locationId}`]: null,\n [action.payload.locationId]: state[`last/${action.payload.locationId}`],\n isPosting: false,\n };\n\n case POST_REPLY_REQUEST: {\n return {\n ...state,\n isPosting: true,\n };\n }\n\n case POST_REPLY_SUCCESS: {\n const { locationId, originalCommentId, reply } = action.payload;\n\n const comments = state[locationId] || [];\n const originalComment =\n comments.filter(comment => comment.id === originalCommentId)[0];\n\n if (!originalComment) {\n return {\n ...state,\n isPosting: false,\n };\n }\n\n const originalCommentIndex = comments.indexOf(originalComment);\n const updatedComments = comments.slice();\n updatedComments[originalCommentIndex] = {\n ...originalComment,\n Replies: [reply],\n };\n return {\n ...state,\n [locationId]: updatedComments,\n isPosting: false,\n };\n }\n\n case POST_REPLY_ERROR:\n return {\n ...state,\n isPosting: false,\n };\n\n case DELETE_REPLY_REQUEST: {\n const { locationId, originalCommentId } = action.payload;\n const comments = state[locationId] || [];\n const originalComment =\n comments.filter(comment => comment.id === originalCommentId)[0];\n\n if (!originalComment) {\n return state;\n }\n\n const originalCommentIndex = comments.indexOf(originalComment);\n const updatedComments = comments.slice();\n updatedComments[originalCommentIndex] = {\n ...originalComment,\n Replies: [],\n };\n\n return {\n ...state,\n [`last/${locationId}`]: comments,\n [locationId]: updatedComments,\n };\n }\n\n case REMOVE_COMMENT_REQUEST: {\n const { locationId, comment } = action.payload;\n const comments = state[locationId] || [];\n const commentIndex = comments.indexOf(comment);\n\n if (commentIndex === -1) {\n return state;\n }\n\n return {\n ...state,\n [`last/${locationId}`]: comments,\n [locationId]: [...comments.slice(0, commentIndex), ...comments.slice(commentIndex + 1)],\n };\n }\n\n case DELETE_REPLY_ERROR:\n case REMOVE_COMMENT_ERROR:\n return {\n ...state,\n [`last/${action.payload.locationId}`]: null,\n [action.payload.locationId]: state[`last/${action.payload.locationId}`],\n };\n\n default:\n return state;\n }\n};\n\nexport const selectComments = (state, locationId) => state.comments[locationId];\n\nexport const selectIsPostingComment = state => state.comments.isPosting;\n","import locationsReducer from './locations';\nimport locationErrorsReducer from './locationErrors';\nimport dataEntryErrorsReducer from './dataEntryErrorsReducer';\nimport { newLocationReducer } from './newLocation';\nimport { commentsReducer } from './comments';\n\nexport { selectNewLocationData } from './newLocation';\nexport { selectComments, selectIsPostingComment } from './comments';\n\nexport const rootReducerObj = {\n locations: locationsReducer,\n locationErrors: locationErrorsReducer,\n dataEntryErrors: dataEntryErrorsReducer,\n newLocation: newLocationReducer,\n comments: commentsReducer,\n};\n\nexport default rootReducerObj;\n","/* eslint-disable no-console */\nimport * as api from '../services/api';\n\nexport const GET_LOCATION_REQUEST = 'GET_LOCATION_REQUEST';\nexport const GET_LOCATION_RESPONSE = 'GET_LOCATION_RESPONSE';\nexport const GET_LOCATION_ERROR = 'GET_LOCATION_ERROR';\nexport const GET_COMMENTS_RESPONSE = 'GET_COMMENTS_RESPONSE';\nexport const GET_TAXONOMY_RESPONSE = 'GET_TAXONOMY_RESPONSE';\nexport const OPTIMISTIC_UPDATE_LOCATION = 'OPTIMISTIC_UPDATE_LOCATION';\nexport const OPTIMISTIC_UPDATE_SERVICE = 'OPTIMISTIC_UPDATE_SERVICE';\nexport const OPTIMISTIC_DELETE_SERVICE = 'OPTIMISTIC_DELETE_SERVICE';\nexport const OPTIMISTIC_POST_COMMENT = 'OPTIMISTIC_POST_COMMENT';\nexport const UPDATE_LOCATION_ERROR = 'UPDATE_LOCATION_ERROR';\nexport const UPDATE_SERVICE_ERROR = 'UPDATE_SERVICE_ERROR';\nexport const POST_COMMENT_ERROR = 'POST_COMMENT_ERROR';\nexport const POST_COMMENT_SUCCESS = 'POST_COMMENT_SUCCESS';\nexport const OPTIMISTIC_UPDATE_ORGANIZATION = 'OPTIMISTIC_UPDATE_ORGANIZATION';\nexport const OPTIMISTIC_UPDATE_PHONE = 'OPTIMISTIC_UPDATE_PHONE';\nexport const OPTIMISTIC_CREATE_PHONE = 'OPTIMISTIC_CREATE_PHONE';\nexport const OPTIMISTIC_DELETE_PHONE = 'OPTIMISTIC_DELETE_PHONE';\nexport const CREATE_PHONE_SUCCESS = 'CREATE_PHONE_SUCCESS';\nexport const START_CREATING_NEW_LOCATION = 'START_CREATING_NEW_LOCATION';\nexport const DONE_CREATING_NEW_LOCATION = 'DONE_CREATING_NEW_LOCATION';\nexport const POST_REPLY_REQUEST = 'POST_REPLY_REQUEST';\nexport const POST_REPLY_SUCCESS = 'POST_REPLY_SUCCESS';\nexport const POST_REPLY_ERROR = 'POST_REPLY_ERROR';\nexport const DELETE_REPLY_REQUEST = 'DELETE_REPLY_REQUEST';\nexport const DELETE_REPLY_SUCCESS = 'DELETE_REPLY_SUCCESS';\nexport const DELETE_REPLY_ERROR = 'DELETE_REPLY_ERROR';\nexport const REMOVE_COMMENT_REQUEST = 'REMOVE_COMMENT_REQUEST';\nexport const REMOVE_COMMENT_SUCCESS = 'REMOVE_COMMENT_SUCCESS';\nexport const REMOVE_COMMENT_ERROR = 'REMOVE_COMMENT_ERROR';\nexport const POST_ERROR_REPORT_REQUEST = 'POST_ERROR_REPORT_REQUEST';\nexport const POST_ERROR_REPORT_SUCCESS = 'POST_ERROR_REPORT_SUCCESS';\nexport const POST_ERROR_REPORT_ERROR = 'POST_ERROR_REPORT_ERROR';\nexport const DISMISS_DATA_ENTRY_ERRORS = 'DISMISS_DATA_ENTRY_ERRORS';\n\nexport const getLocation = locationId => (dispatch) => {\n dispatch({\n type: GET_LOCATION_REQUEST,\n locationId,\n });\n api\n .getLocation({\n id: locationId,\n })\n .then(data =>\n dispatch({\n type: GET_LOCATION_RESPONSE,\n payload: data,\n }))\n .catch(e => dispatch({\n type: GET_LOCATION_ERROR,\n locationId,\n error: e,\n }));\n};\n\nexport const getTaxonomy = () => (dispatch) => {\n api\n .getTaxonomy()\n .then(taxonomy =>\n dispatch({\n type: GET_TAXONOMY_RESPONSE,\n payload: taxonomy,\n }))\n .catch(e => console.error('error', e));\n};\n\nexport const getComments = locationId => (dispatch) => {\n api\n .getComments({\n locationId,\n })\n .then(data =>\n dispatch({\n type: GET_COMMENTS_RESPONSE,\n payload: {\n locationId,\n comments: data,\n },\n }))\n .catch(e => console.error('error', e));\n};\n\nexport const startCreatingNewLocation = (position, address) => ({\n type: START_CREATING_NEW_LOCATION,\n payload: { position, address },\n});\n\nexport const doneCreatingNewLocation = newLocation => ({\n type: DONE_CREATING_NEW_LOCATION,\n payload: {\n wasCreatedSuccessfully: !!newLocation,\n newLocation,\n },\n});\n\nexport const updateLocation = (locationId, params, metaDataSection, fieldName) => (dispatch) => {\n // optimistically update the data store\n dispatch({\n type: OPTIMISTIC_UPDATE_LOCATION,\n payload: {\n id: locationId,\n params,\n metaDataSection,\n fieldName,\n },\n });\n api\n .updateLocation({\n id: locationId,\n params,\n })\n .then((locationData) => {\n // do nothing, because save succeeded\n })\n .catch((e) => {\n console.error('Error updating location', e);\n dispatch({\n type: UPDATE_LOCATION_ERROR,\n payload: {\n id: locationId,\n error: e,\n },\n });\n });\n};\n\nexport const deletePhone = (locationId, id) => (dispatch) => {\n dispatch({\n type: OPTIMISTIC_DELETE_PHONE,\n payload: {\n phoneId: id,\n locationId,\n },\n });\n\n return api\n .deletePhone({\n id,\n })\n .catch((e) => {\n console.error('Error deleting phone', e);\n dispatch({\n type: UPDATE_LOCATION_ERROR,\n payload: {\n id: locationId,\n error: e,\n },\n });\n });\n};\n\nexport const updatePhone = (\n locationId,\n phoneId,\n params,\n metaDataSection,\n fieldName,\n) => (dispatch) => {\n // optimistically update the data store\n dispatch({\n type: OPTIMISTIC_UPDATE_PHONE,\n payload: {\n locationId,\n phoneId,\n params,\n metaDataSection,\n fieldName,\n },\n });\n return api\n .updatePhone({\n id: phoneId,\n params,\n })\n .then((phoneData) => {\n // do nothing, because save succeeded\n })\n .catch((e) => {\n console.error('Error updating phone', e);\n dispatch({\n type: UPDATE_LOCATION_ERROR,\n payload: {\n id: locationId,\n error: e,\n },\n });\n });\n};\n\nexport const createPhone = (\n locationId,\n phoneId,\n params,\n metaDataSection,\n fieldName,\n) => (dispatch) => {\n // optimistically update the data store\n dispatch({\n type: OPTIMISTIC_CREATE_PHONE,\n payload: {\n locationId,\n params,\n metaDataSection,\n fieldName,\n },\n });\n return api\n .createPhone({\n id: locationId,\n params,\n })\n .then((response) => {\n dispatch({\n type: CREATE_PHONE_SUCCESS,\n payload: {\n locationId,\n params: response.data,\n },\n });\n })\n .catch((e) => {\n console.error('Error creating phone', e);\n dispatch({\n type: UPDATE_LOCATION_ERROR,\n payload: {\n id: locationId,\n error: e,\n },\n });\n });\n};\n\nexport const updateOrganization = (\n locationId,\n organizationId,\n params,\n metaDataSection,\n fieldName,\n) => (dispatch) => {\n // optimistically update the data store\n dispatch({\n type: OPTIMISTIC_UPDATE_ORGANIZATION,\n payload: {\n locationId,\n organizationId,\n params,\n metaDataSection,\n fieldName,\n },\n });\n api\n .updateOrganization({\n id: organizationId,\n params,\n })\n .then((locationData) => {\n // do nothing, because save succeeded\n })\n .catch((e) => {\n console.error('Error updating organization', e);\n dispatch({\n type: UPDATE_LOCATION_ERROR,\n payload: {\n id: locationId,\n error: e,\n },\n });\n });\n};\n\nexport const updateService = ({\n locationId,\n serviceId,\n params,\n metaDataSection,\n fieldName,\n}) => (dispatch) => {\n dispatch({\n type: OPTIMISTIC_UPDATE_SERVICE,\n payload: {\n locationId,\n serviceId,\n params,\n metaDataSection,\n fieldName,\n },\n });\n api.updateService({ id: serviceId, params }).catch((e) => {\n console.error('Error updating service', e);\n dispatch({\n type: UPDATE_SERVICE_ERROR,\n payload: { id: locationId, error: e },\n });\n });\n};\n\nexport const deleteService = (id, { locationId }) => (dispatch) => {\n dispatch({\n type: OPTIMISTIC_DELETE_SERVICE,\n payload: { serviceId: id, locationId },\n });\n\n return api.deleteService({ id })\n .catch((e) => {\n console.error('Error deleting service', e);\n dispatch({\n type: UPDATE_LOCATION_ERROR,\n payload: { id: locationId, error: e },\n });\n });\n};\n\nexport const updateLanguages = ({\n locationId,\n serviceId,\n languages,\n metaDataSection,\n fieldName,\n}) => (dispatch) => {\n const languageIds = languages.map(el => el.id);\n dispatch({\n type: OPTIMISTIC_UPDATE_SERVICE,\n payload: {\n locationId,\n serviceId,\n params: { languages },\n metaDataSection,\n fieldName,\n },\n });\n\n api.updateService({ id: serviceId, params: { languageIds } }).catch((e) => {\n console.error('Error updating service languages', e);\n dispatch({\n type: UPDATE_SERVICE_ERROR,\n payload: { id: locationId, error: e },\n });\n });\n};\n\nexport const postComment = (locationId, comment) => (dispatch) => {\n dispatch({ type: OPTIMISTIC_POST_COMMENT, payload: { locationId, comment } });\n api.postComment({ locationId, comment })\n .then(() => {\n dispatch({ type: POST_COMMENT_SUCCESS, payload: { locationId, comment } });\n })\n .catch((error) => {\n dispatch({ type: POST_COMMENT_ERROR, payload: { error, locationId, comment } });\n });\n};\n\nexport const replyToComment = (locationId, originalCommentId, reply) => (dispatch) => {\n const params = { locationId, originalCommentId, reply };\n dispatch({ type: POST_REPLY_REQUEST, payload: params });\n api.replyToComment({ locationId, originalCommentId, reply })\n .then((postedReply) => {\n dispatch({\n type: POST_REPLY_SUCCESS,\n payload: {\n ...params,\n reply: postedReply,\n },\n });\n })\n .catch((error) => {\n dispatch({ type: POST_REPLY_ERROR, payload: { ...params, error } });\n });\n};\n\nexport const deleteReply = ({ locationId, originalCommentId, reply }) => (dispatch) => {\n const params = { locationId, originalCommentId, reply };\n dispatch({ type: DELETE_REPLY_REQUEST, payload: params });\n api.deleteReply(reply)\n .then(() => {\n dispatch({ type: DELETE_REPLY_SUCCESS, payload: params });\n })\n .catch((error) => {\n dispatch({ type: DELETE_REPLY_ERROR, payload: { ...params, error } });\n });\n};\n\nexport const removeComment = ({ locationId, comment }) => (dispatch) => {\n const params = { locationId, comment };\n dispatch({ type: REMOVE_COMMENT_REQUEST, payload: params });\n api.removeComment(comment)\n .then(() => {\n dispatch({ type: REMOVE_COMMENT_SUCCESS, payload: params });\n })\n .catch((error) => {\n dispatch({ type: REMOVE_COMMENT_ERROR, payload: { ...params, error } });\n });\n};\n\nexport const postErrorReport = (locationId, errorReport) => (dispatch) => {\n const params = { locationId, errorReport };\n dispatch({ type: POST_ERROR_REPORT_REQUEST, payload: params });\n api.postErrorReport({ locationId, errorReport })\n .then((postedErrorReport) => {\n dispatch({\n type: POST_ERROR_REPORT_SUCCESS,\n payload: {\n locationId,\n errorReport: postedErrorReport,\n },\n });\n })\n .catch((error) => {\n dispatch({ type: POST_ERROR_REPORT_ERROR, payload: { ...params, error } });\n });\n};\n\nexport const dismissDataEntryErrors =\n () => dispatch => dispatch({ type: DISMISS_DATA_ENTRY_ERRORS, payload: {} });\n","import React from 'react';\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport './Icon.css';\n\nfunction Icon({\n name,\n custom,\n alt,\n size,\n circle,\n spin,\n onClick,\n className,\n style,\n}) {\n const classNames = cx(circle ? {} : className, {\n Icon: true,\n });\n\n const containerClassNames = cx(circle ? className : {}, {\n 'Icon-container': true,\n circle,\n });\n\n const iconProps = {\n onClick,\n style,\n className: classNames,\n };\n\n const icon = custom ?\n {alt} :\n ;\n\n if (!circle) {\n return icon;\n }\n\n return (\n
\n {icon}\n
\n );\n}\n\nIcon.propTypes = {\n name: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.string,\n ]).isRequired,\n custom: PropTypes.bool,\n size: PropTypes.string,\n circle: PropTypes.bool,\n alt: PropTypes.string,\n onClick: PropTypes.func,\n className: PropTypes.string,\n};\n\nIcon.defaultProps = {\n className: '',\n custom: false,\n circle: false,\n};\n\nexport default Icon;\n","export function getCanonicalUrl() {\n return window.location.href.replace(/^https?:\\/\\/[^/]+/, 'https://www.gogetta.nyc');\n}\n\nexport default {\n getCanonicalUrl,\n};\n","/* eslint-disable max-len */\n\nconst parseBoolean = (value, defaultValue = false) =>\n (value == null ? defaultValue : value.toLowerCase() === 'true');\n\nexport default {\n gaTrackingId: process.env.REACT_APP_GA_TRACKING_ID || 'G-8YQSKLWB8R',\n baseApi: process.env.REACT_APP_API_URL || 'http://localhost:3000',\n privacyUrl: process.env.PRIVACY_URL || 'https://docs.google.com/document/d/e/2PACX-1vQ8djXWiASXKkcKJ2LSHNXMgrQ1PhQPskSs_Thk5oLTZMnKvMy7Nqz1t4Xs18mGGKuORXOj8yNNhJUq/pub',\n termsOfUseUrl: process.env.TOU_URL || 'https://docs.google.com/document/d/e/2PACX-1vTBNI2Sv5QC8DSBwBL7WHNBdMI-9kPLuN2ev_Y2VDSo-bLeh8qssi7iBv-w0EEQurX9fgFQF4_2lItn/pub',\n commentGuidelinesUrl: process.env.COMMENT_GUIDELINES_URL || 'https://docs.google.com/document/d/e/2PACX-1vTi6AR2Q-PpTNMLTimvdVg8yDuLJ5DURswQ-heCToXj3OwuqNXyt-LIBs-By9znC2A_0HxqlO8vQ_DJ/pub',\n feedbackEmail: process.env.FEEDBACK_EMAIL || 'gogetta@streetlives.nyc',\n googleMaps: process.env.REACT_APP_GMAPS_URL || 'https://maps.googleapis.com/maps/api/js?key=AIzaSyCFMDqEgQ6VWWJbROzZhHu-f6sktAmTEGU&v=3.exp&libraries=geometry,drawing,places',\n adminGroupName: process.env.REACT_APP_ADMIN_GROUP_NAME || 'StreetlivesAdmins',\n disableAuth: parseBoolean(process.env.REACT_APP_DISABLE_AUTH),\n mixpanelToken: process.env.REACT_APP_MIXPANEL_TOKEN || '8dd3b51f7a1de357a05e954495ae616f',\n};\n","export const DAYS = [\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n 'Sunday',\n];\n\nexport default { DAYS };\n\nexport const EVERYONE = 'Everyone';\n\nexport const SERVICE_GROUPS = [\n ['Everyone'],\n ['Children', 0, 11],\n ['Teens', 12, 18],\n ['Youths', 18, 24],\n ['Adults', 18],\n ['Seniors', 65],\n ['Veterans'],\n ['Organization clients only'],\n];\n\nexport const TAXONOMY_SPECIFIC_ATTRIBUTES = {\n clothingOccasion: 'clothingOccasion',\n wearerAge: 'wearerAge',\n tgncClothing: 'tgncClothing',\n hasHivNutrition: 'hasHivNutrition',\n};\n\nexport const OCCASIONS = {\n COVID19: 'COVID19',\n};\n\nexport const DESKTOP_BREAKPOINT = '1224px';\n","import axios from 'axios';\nimport * as rax from 'retry-axios';\nimport qs from 'qs';\nimport config from '../config';\nimport { TAXONOMY_SPECIFIC_ATTRIBUTES } from '../Constants';\nimport { getAuthToken } from './auth';\n\nconst MAX_RADIUS = 50000;\n\nexport const getLocations = ({\n latitude,\n longitude,\n radius,\n minResults,\n searchString,\n organizationName,\n occasion,\n locationFieldsOnly,\n serviceFilters: {\n taxonomyIds,\n openNow,\n zipcode,\n referralRequired,\n photoId,\n clientsOnly,\n gender,\n clothingKind,\n wearerAge,\n tgncClothing,\n hivNutrition,\n } = {},\n}) => {\n const params = {\n latitude,\n longitude,\n organizationName,\n occasion,\n locationFieldsOnly,\n searchString: searchString || undefined,\n minResults: minResults || undefined,\n radius: radius != null ? Math.min(radius, MAX_RADIUS) : undefined,\n taxonomyId: taxonomyIds != null ? taxonomyIds.join(',') : undefined,\n openAt: openNow ? (new Date()).toISOString() : undefined,\n referralRequired: referralRequired != null ? referralRequired : undefined,\n photoIdRequired: photoId != null ? photoId : undefined,\n membership: clientsOnly != null ? clientsOnly : undefined,\n gender: gender != null ? gender : undefined,\n servesZipcode: zipcode != null ? zipcode : undefined,\n };\n\n const attributes = [];\n if (clothingKind) {\n attributes.push(TAXONOMY_SPECIFIC_ATTRIBUTES.clothingOccasion);\n attributes.push(clothingKind);\n }\n if (wearerAge) {\n attributes.push(TAXONOMY_SPECIFIC_ATTRIBUTES.wearerAge);\n attributes.push(wearerAge);\n }\n if (tgncClothing) {\n attributes.push(TAXONOMY_SPECIFIC_ATTRIBUTES.tgncClothing);\n attributes.push(tgncClothing);\n }\n if (hivNutrition != null) {\n attributes.push(TAXONOMY_SPECIFIC_ATTRIBUTES.hasHivNutrition);\n attributes.push(hivNutrition);\n }\n if (attributes.length) {\n params.taxonomySpecificAttributes = attributes;\n }\n\n return axios\n .request({\n url: `${config.baseApi}/locations`,\n method: 'get',\n params,\n paramsSerializer: rawParams => qs.stringify(rawParams),\n })\n .then(result => result.data);\n};\n\nexport const getLocation = ({ id }) =>\n axios\n .request({\n url: `${config.baseApi}/locations/${id}`,\n method: 'get',\n })\n .then(result => result.data);\n\nconst updateResource = ({ pathPrefix, method, pathSuffix }, { id, params }) =>\n getAuthToken()\n .then((idJwtToken) => {\n // construct the path\n const pathComponents = [config.baseApi, pathPrefix, id];\n if (pathSuffix) pathComponents.push(pathSuffix);\n const url = pathComponents.join('/');\n\n const axiosWithRetries = axios.create();\n axiosWithRetries.defaults.raxConfig = { instance: axiosWithRetries };\n rax.attach(axiosWithRetries);\n\n return axiosWithRetries.request({\n url,\n method,\n data: params,\n headers: {\n Authorization: idJwtToken,\n },\n raxConfig: {\n httpMethodsToRetry: ['GET', 'HEAD', 'OPTIONS', 'DELETE', 'PUT', 'PATCH'],\n retry: 6,\n noResponseRetries: 6,\n },\n });\n });\n\nexport const getTaxonomy = () =>\n axios.request({\n url: `${config.baseApi}/taxonomy`,\n method: 'get',\n })\n .then(result => result.data);\n\nexport const getLanguages = () =>\n getAuthToken()\n .then(idJwtToken => axios.request({\n url: `${config.baseApi}/languages`,\n method: 'get',\n headers: {\n Authorization: idJwtToken,\n },\n }));\n\nexport const createServices = (locationId, locationTaxonomies) =>\n getAuthToken()\n .then((idJwtToken) => {\n const requests = locationTaxonomies.map(({ taxonomyId, name }) =>\n axios.request({\n url: `${config.baseApi}/services`,\n method: 'post',\n data: { locationId, taxonomyId, name },\n headers: {\n Authorization: idJwtToken,\n },\n }));\n\n return axios.all(requests);\n });\n\nexport const createOrganization = name =>\n getAuthToken()\n .then(idJwtToken => axios.request({\n url: `${config.baseApi}/organizations`,\n method: 'post',\n data: { name },\n headers: {\n Authorization: idJwtToken,\n },\n }))\n .then(result => result.data);\n\nexport const createLocation = ({ organizationId, position, address }) =>\n getAuthToken()\n .then(idJwtToken => axios.request({\n url: `${config.baseApi}/locations`,\n method: 'post',\n data: {\n organizationId,\n address,\n latitude: position.latitude,\n longitude: position.longitude,\n },\n headers: {\n Authorization: idJwtToken,\n },\n }))\n .then(result => result.data);\n\nexport const updateLocation = updateResource.bind(this, {\n pathPrefix: 'locations',\n method: 'patch',\n});\nexport const updatePhone = updateResource.bind(this, { pathPrefix: 'phones', method: 'patch' });\nexport const deletePhone = updateResource.bind(this, { pathPrefix: 'phones', method: 'delete' });\nexport const createPhone = updateResource.bind(this, {\n pathPrefix: 'locations',\n method: 'post',\n pathSuffix: 'phones',\n});\nexport const updateOrganization = updateResource.bind(this, {\n pathPrefix: 'organizations',\n method: 'patch',\n});\nexport const updateService = updateResource.bind(this, {\n pathPrefix: 'services',\n method: 'patch',\n});\nexport const deleteService = updateResource.bind(this, {\n pathPrefix: 'services',\n method: 'delete',\n});\n\nexport const getComments = ({ locationId }) =>\n axios\n .request({\n url: `${config.baseApi}/comments`,\n method: 'get',\n params: {\n locationId,\n },\n })\n .then(result => result.data);\n\nexport const postComment = ({ locationId, comment }) =>\n getAuthToken()\n .then(idJwtToken => axios.request({\n url: `${config.baseApi}/comments`,\n method: 'post',\n data: {\n locationId,\n content: comment.content,\n postedBy: comment.name,\n contactInfo: comment.contactInfo,\n },\n headers: {\n Authorization: idJwtToken,\n },\n }))\n .then(result => result.data);\n\nexport const replyToComment = ({ originalCommentId, reply }) =>\n getAuthToken()\n .then(idJwtToken => axios.request({\n url: `${config.baseApi}/comments/${originalCommentId}/reply`,\n method: 'post',\n data: {\n content: reply.content,\n },\n headers: {\n Authorization: idJwtToken,\n },\n }))\n .then(result => result.data);\n\nexport const deleteReply = reply =>\n getAuthToken()\n .then(idJwtToken => axios.request({\n url: `${config.baseApi}/comments/${reply.id}`,\n method: 'delete',\n headers: {\n Authorization: idJwtToken,\n },\n }));\n\nexport const removeComment = comment =>\n getAuthToken()\n .then(idJwtToken => axios.request({\n url: `${config.baseApi}/comments/${comment.id}/hidden`,\n method: 'put',\n data: {\n hidden: true,\n },\n headers: {\n Authorization: idJwtToken,\n },\n }));\n\nexport const postErrorReport = ({ locationId, errorReport }) =>\n axios\n .request({\n url: `${config.baseApi}/errorreports`,\n method: 'post',\n data: {\n locationId,\n generalLocationError: errorReport.generalLocationError,\n services: errorReport.services,\n content: errorReport.content,\n },\n })\n .then(result => result.data);\n","import { createStore, applyMiddleware, combineReducers, compose } from 'redux';\nimport thunk from 'redux-thunk';\nimport { createBrowserHistory } from 'history';\nimport { routerReducer, routerMiddleware } from 'react-router-redux';\nimport rootReducer from '../reducers';\n\nexport const history = createBrowserHistory();\nconst enhancers = [];\nconst middleware = [\n thunk,\n routerMiddleware(history),\n];\n\nif (process.env.NODE_ENV === 'development') {\n /* eslint-disable no-underscore-dangle */\n const devToolsExtension = window.__REDUX_DEVTOOLS_EXTENSION__;\n\n if (typeof devToolsExtension === 'function') {\n enhancers.push(devToolsExtension());\n }\n}\n\nconst composedEnhancers = compose(\n applyMiddleware(...middleware),\n ...enhancers,\n);\n\nexport const store = createStore(\n combineReducers({ ...rootReducer, router: routerReducer }),\n composedEnhancers,\n);\n","import { library } from '@fortawesome/fontawesome-svg-core';\nimport {\n faChevronDown,\n faChevronUp,\n faChevronLeft,\n faChevronRight,\n faArrowLeft,\n faMicrophone,\n faSearch,\n faTimes,\n faUtensils,\n faHome,\n faShower,\n faTshirt,\n faEllipsisH,\n faUser,\n faUsers,\n faChild,\n faMars,\n faVenus,\n faTransgender,\n faIdCard,\n faExclamationTriangle,\n faClock,\n faPhone,\n faCheck,\n faSlidersH,\n faTimesCircle,\n faCrosshairs,\n faCamera,\n faPlus,\n faSpinner,\n faTrash,\n faBars,\n} from '@fortawesome/free-solid-svg-icons';\nimport {\n faTwitterSquare,\n faFacebookSquare,\n faLinkedin,\n} from '@fortawesome/free-brands-svg-icons';\n\nlibrary.add(\n faChevronDown,\n faChevronUp,\n faChevronLeft,\n faChevronRight,\n faArrowLeft,\n faMicrophone,\n faSearch,\n faTimes,\n faUtensils,\n faHome,\n faShower,\n faTshirt,\n faEllipsisH,\n faUser,\n faUsers,\n faChild,\n faMars,\n faVenus,\n faTransgender,\n faIdCard,\n faExclamationTriangle,\n faClock,\n faPhone,\n faCheck,\n faSlidersH,\n faTimesCircle,\n faCrosshairs,\n faCamera,\n faPlus,\n faSpinner,\n faTrash,\n faTwitterSquare,\n faFacebookSquare,\n faLinkedin,\n faBars,\n);\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport Button from '../../components/button';\n\nconst GetStartedButton = ({ url, ...rest }) => (\n
\n \n \n \n
\n);\n\nexport default GetStartedButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { DESKTOP_BREAKPOINT } from '../../Constants';\nimport './Testimonial.css';\n\nconst Testimonial = ({ imagePartialPath, name, text }) => (\n
\n \n \n \n \n \n \n
\n
“{text}”
\n
– {name}
\n
\n);\n\nTestimonial.propTypes = {\n name: PropTypes.string.isRequired,\n imagePartialPath: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n};\n\nexport default Testimonial;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { DESKTOP_BREAKPOINT } from '../../Constants';\nimport './PartnerPicture.css';\n\nconst PartnerPicture = ({ imagePartialPath, alt = '', link }) => (\n
\n \n \n \n \n \n \n \n \n
\n);\n\nPartnerPicture.propTypes = {\n imagePartialPath: PropTypes.string.isRequired,\n alt: PropTypes.string,\n link: PropTypes.string.isRequired,\n};\n\nexport default PartnerPicture;\n","import React, { Component } from 'react';\nimport Icon from '../../components/icon';\nimport GetStartedButton from './GetStartedButton';\nimport Testimonial from './Testimonial';\nimport PartnerPicture from './PartnerPicture';\nimport { DESKTOP_BREAKPOINT } from '../../Constants';\nimport config from '../../config';\nimport './LandingPage.css';\n\nclass LandingPage extends Component {\n scrollToContent = () => {\n this.contentRef.current.scrollIntoView({ behavior: 'smooth', block: 'start' });\n };\n\n scrollToContentTop = () => {\n this.topRef.current.scrollIntoView({ behavior: 'smooth', block: 'start' });\n };\n\n contentRef = React.createRef();\n topRef = React.createRef();\n\n render() {\n return (\n
\n
\n
\n \"\"\n
GoGetta
\n
\n
COVID-19 response version
\n
\n
\n

\n Get what you need\n

\n

\n Find food, clothing, personal care, shelter, and other services\n that are verified by the community and right\n for you.\n

\n
\n \n
\n
\n
\n \n
\n
\n
\n\n
\n
\n
1
\n\n
\n

How it works

\n

Search for what you need

\n

\n GoGetta has New York’s most up-to-date service information on\n food, personal care, shelter, and clothing.\n

\n
\n\n \n \n \n \n \n \n
\n\n
\n
2
\n
\n

\n Find providers that will actually serve{' '}\n you\n

\n

\n Filter or answer a few questions and we will show you locations\n that meet your specific needs, from age to gender to family\n situations.\n

\n
\n \n \n \n \n \n \n
\n\n
\n
3
\n\n
\n

You’re all set!

\n

\n See the service details, go get what you need. We don’t keep\n your personal data, so your privacy is protected.\n

\n \n
\n\n \n \n \n \n \n \n
\n
\n\n
\n
\n

GoGettas are saying

\n \n \n \n
\n
\n \n
\n
\n
\n
\n

Collaboration

\n

Love for the help we’ve had to create GoGetta!

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n

\n Food service information provided with the help of Hunter College\n NYC Food Policy Center.\n

\n

For more information, visit:

\n

\n \n https://www.nycfoodpolicy.org/food\n \n

\n
\n
\n
\n
\n

Who we are

\n
\n

\n GoGetta is a Streetlives product. Streetlives is a US non-profit\n under our fiscal host the Open Collective Foundation.\n

\n

\n We build technology with communities considered vulnerable, New\n York social service providers, and other system stakeholders in\n a whole-of-community partnership.\n

\n
\n
\n \n \n \n \n
\n
\n
\n\n
\n
\n

Follow us on:

\n
\n \n \n \n \n \n \n \n \n \n
\n

We’re all about feedback

\n

Tell us what you think at:

\n \n
\n \n

Back to top

\n
\n
\n
\n
\n );\n }\n}\n\nexport default LandingPage;\n","import React, { Suspense } from 'react';\nimport { Helmet } from 'react-helmet';\nimport { Route, Switch, Redirect } from 'react-router-dom';\nimport { Provider } from 'react-redux';\nimport { ConnectedRouter } from 'react-router-redux';\n\nimport Amplify from 'aws-amplify';\nimport { AmplifyTheme } from 'aws-amplify-react';\nimport awsExports from './aws-exports';\n\nimport { store, history } from '../store/index';\n\nimport './App.css';\nimport './IconLibrary';\n\nimport LandingPage from './landing/LandingPage';\nimport NotFound from './notFound/NotFound';\nimport LoadingLabel from '../components/form/LoadingLabel';\n\nimport { getCanonicalUrl } from '../services/seo';\n\nimport withTracker from '../components/routing/withTracker';\nimport analytics from '../services/analytics';\n\nconst TeamRouter = React.lazy(() => import('./team/Router'));\nconst CommentsRouter = React.lazy(() => import('./comments/Router'));\nconst findRouterPromise = import('./find/Router');\nconst FindRouter = React.lazy(() => findRouterPromise);\n\nhistory.listen(() => {\n analytics.track('Page View');\n window.scrollTo(0, 0);\n});\n\nAmplify.configure(awsExports);\n\n// TODO: Try coming up with a better way of mapping than hard-coding the current prod IDs.\nconst feedbackLocations = [\n { name: 'sjbl', id: '1edfab8e-0d7c-437e-a14c-6b9ca0eb5d93' },\n { name: 'holy', id: '5426de21-4e1b-4e6e-bcf1-6bf334de56b5' },\n { name: 'sjbl-vol', id: 'c46faf1f-2af0-4ea7-b69c-cd482d10eda3' },\n { name: 'holy-vol', id: '7db4cde4-add1-40ad-9209-9a0e8c57078f' },\n];\n\nconst routeFixingDoubleSlashes = () => (\n }\n />\n);\n\nfunction App() {\n return (\n \n
\n \n \n \n \n Loading}>\n \n {routeFixingDoubleSlashes()}\n\n \n \n \n {feedbackLocations.map(({ name, id }) => (\n }\n />\n ))}\n \n \n \n \n \n \n
\n
\n );\n}\n\nAmplifyTheme.container.paddingRight = 0;\nAmplifyTheme.container.paddingLeft = 0;\n\nexport default App;\n","export default {\n Auth: {\n // REQUIRED - Amazon Cognito Identity Pool ID\n identityPoolId: 'us-east-1:fbb09891-723a-48db-80ac-facd1ca9ec4b',\n // REQUIRED - Amazon Cognito Region\n region: 'us-east-1',\n userPoolId: 'us-east-1_EvBbozIjd',\n userPoolWebClientId: 'kpd58387a2f9e4fe1d42sfd1q',\n },\n};\n","/* eslint-disable no-console */\n/* eslint-disable no-use-before-define */\n/* eslint-disable no-param-reassign */\n// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));\n\nexport default function register() {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log('This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://goo.gl/SC7cgQ');\n });\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n console.log('New content is available; please refresh.');\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister();\n });\n }\n}\n","/* eslint-disable react/jsx-filename-extension */\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport './index.css';\nimport App from './app/App';\nimport registerServiceWorker from './registerServiceWorker';\n\nReactDOM.render(, document.getElementById('root'));\nregisterServiceWorker();\n","import Amplify from 'aws-amplify';\nimport config from '../config';\n\nconst getIdToken = () => new Promise((resolve) => {\n if (config.disableAuth) {\n return resolve(null);\n }\n\n return Amplify.Auth.currentAuthenticatedUser().then((user) => {\n const idToken = user.signInUserSession.getIdToken();\n resolve(idToken);\n })\n .catch(() => resolve(null));\n});\n\nexport const getAuthToken = () => getIdToken().then(idToken => idToken && idToken.getJwtToken());\n\nexport const getUserOrganizations = () => getIdToken()\n .then((idToken) => {\n if (!idToken) {\n return null;\n }\n\n const organizationsStr = idToken.payload['custom:organizations'];\n\n if (!organizationsStr || !organizationsStr.length) {\n return null;\n }\n\n return organizationsStr.split(',');\n });\n\nexport const isUserAdmin = () => getIdToken()\n .then((idToken) => {\n if (!idToken) {\n return null;\n }\n\n const groups = idToken.payload['cognito:groups'];\n\n return !!groups && groups.indexOf(config.adminGroupName) !== -1;\n });\n","import Icon from './Icon';\n\nexport default Icon;\n","import React, { Component } from 'react';\nimport GoogleAnalytics from 'react-ga4';\nimport config from '../../config';\n\nGoogleAnalytics.initialize(config.gaTrackingId);\n\nconst withTracker = (WrappedComponent, options = {}) => {\n const trackPage = (page) => {\n GoogleAnalytics.set({\n page,\n ...options,\n });\n GoogleAnalytics.pageview(page);\n };\n\n const HOC = class extends Component {\n componentDidMount() {\n const page = this.props.location.pathname;\n trackPage(page);\n }\n\n componentWillReceiveProps(nextProps) {\n const currentPage = this.props.location.pathname;\n const nextPage = nextProps.location.pathname;\n\n if (currentPage !== nextPage) {\n trackPage(nextPage);\n }\n }\n\n render() {\n return ;\n }\n };\n\n return HOC;\n};\n\nexport default withTracker;\n","import {\n START_CREATING_NEW_LOCATION,\n DONE_CREATING_NEW_LOCATION,\n} from '../actions';\n\nexport const newLocationReducer = (state = {}, action) => {\n switch (action.type) {\n case START_CREATING_NEW_LOCATION:\n if (action.payload) {\n return {\n address: action.payload.address,\n position: action.payload.position,\n };\n }\n break;\n\n case DONE_CREATING_NEW_LOCATION:\n return {};\n\n default:\n return state;\n }\n\n return state;\n};\n\nexport const selectNewLocationData = state => state.newLocation;\n"],"sourceRoot":""}