{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./js/src/geocoder/reducers.js","webpack:///./js/src/developer/components/admindashboard/actions.js","webpack:///./js/src/developer/components/admindashboard/utils.js","webpack:///./js/src/marketing/components/parcel_preferences/actions.js","webpack:///./js/src/marketing/utils.js","webpack:///./js/src/common/csrfRequest.js","webpack:///./js/src/developer/components/latLngParcelSearch/constants.js","webpack:///./js/src/developer/reducers.js","webpack:///./js/src/developer/main.jsx","webpack:///./js/src/developer/actions.js","webpack:///./img/favicon.ico","webpack:///./sass/marketing/main.scss?0275","webpack:///./sass/marketing/main.scss","webpack:///./fonts/marketing/fontello/css/pwdgrant.css","webpack:///./fonts/marketing/fontello/font/pwdgrant.woff2","webpack:///./fonts/marketing/fontello/font/pwdgrant.woff","webpack:///./fonts/marketing/fontello/font/pwdgrant.ttf","webpack:///./js/src/geocoder/actions.js","webpack:///./fonts/marketing/fontello/font/pwdgrant.svg","webpack:///./fonts/marketing/fontello/css/animation.css","webpack:///./js/src/common/store.js","webpack:///./js/src/marketing/reducers.js","webpack:///./js/src/marketing/constants.js","webpack:///./js/src/developer/utils.js","webpack:///./js/src/marketing/components/parcel_preferences/reducer.js","webpack:///./js/src/geocoder/utils.js","webpack:///./js/src/marketing/img/rain-garden.png","webpack:///./js/src/marketing/img/green-roof.png","webpack:///./js/src/marketing/img/porous-pavement.png","webpack:///./js/src/marketing/img/subsurface-storage.png","webpack:///./js/src/marketing/img/cistern.png","webpack:///./js/src/developer/components/admindashboard/reducers.js","webpack:///./js/src/developer/components/aisGeocoder/utils.js","webpack:///./js/src/developer/components/onboarding/utils.js","webpack:///./js/src/developer/CSVMaker.js","webpack:///./js/src/developer/components/onboarding/reducers.js","webpack:///./js/src/developer/components/resetpassword/reducers.js","webpack:///./js/src/developer/components/resetpassword/constants.js","webpack:///./js/src/developer/components/aisGeocoder/reducers.js","webpack:///./js/src/developer/components/latLngParcelSearch/reducers.js","webpack:///./js/src/developer/components/NotFound.jsx","webpack:///./js/src/common/utils.js","webpack:///./js/src/developer/components/admindashboard/constants.js","webpack:///./js/src/marketing/actions.js","webpack:///./js/src/developer/components/onboarding/constants.js","webpack:///./js/src/developer/components/aisGeocoder/actions.js","webpack:///./js/src/developer/constants.js","webpack:///./js/src/geocoder/constants.js","webpack:///./js/src/developer/components/onboarding/actions.js","webpack:///./js/src/developer/components/resetpassword/actions.js","webpack:///./js/src/developer/components/latLngParcelSearch/actions.js","webpack:///./js/src/marketing/components/parcel_preferences/constants.js","webpack:///./js/src/common/constants.js","webpack:///./fonts/marketing/fontello/font/pwdgrant.eot"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","9","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","error","Error","request","undefined","setTimeout","head","appendChild","all","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","state","arguments","initialState","_ref","payload","START_GEOCODER_SEARCH","assign","selectedResult","results","fetching","RECEIVE_GEOCODER_RESULTS","FAIL_GEOCODER_SEARCH","SELECT_GEOCODER_RESULT","CLEAR_GEOCODER_SEARCH","_actions","sessionSignIn","history","dispatch","startSignIn","csrfRequest","loginUrl","then","_ref3","completeSignIn","catch","DASHBOARD_ROUTES","signin","signIn","credentials","post","_ref4","response","message","_ref$response","status","includes","forbiddenError","networkError","unknownError","FAIL_SIGN_IN","signOut","START_SIGN_OUT","logoutUrl","COMPLETE_SIGN_OUT","FAIL_SIGN_OUT","fetchDeveloperData","START_FETCH_DEVELOPER_DATA","retrofitDevelopersUrl","_ref10","map","formatDeveloperResult","COMPLETE_FETCH_DEVELOPER_DATA","FAIL_FETCH_DEVELOPER_DATA","fetchManagerData","START_FETCH_MANAGER_DATA","propertyManagersUrl","_ref13","formatManagerResult","COMPLETE_FETCH_MANAGER_DATA","FAIL_FETCH_MANAGER_DATA","startUpdateDeveloperStatus","failUpdateDeveloperStatus","completeUpdateDeveloperStatus","updateDeveloperStatus","id","oldStatus","developerStatusTypes","denied","active","deactivated","some","getState","_getState","reasonForDenial","adminDashboardPage","developerEdit","newStatus","reason_for_denial","patch","userUrl","_ref14","startResendEmailVerification","failResendEmailVerification","completeResendEmailVerification","resendEmailVerification","resendEmailUrl","toggleDeveloperFilterOption","TOGGLE_DEVELOPER_FILTER_OPTION","toggleManagerFilterOption","TOGGLE_MANAGER_FILTER_OPTION","updateDeveloperSearchText","UPDATE_DEVELOPER_SEARCH_TEXT","updateManagerSearchText","UPDATE_MANAGER_SEARCH_TEXT","startEditManager","managerId","_getState2","managers","editableManager","find","_ref15","START_EDIT_MANAGER","saveManagerEdits","saveManager","put","_constants","makePropertyManagerEditUrl","mapEditsToManagerData","saveNewManager","addPropertyManagerUrl","parcels","manager","developersOfInterest","selected_developers","cistern","subsurface_storage","rain_garden","permeable_pavement","green_roof","stopEditManager","stopNewManager","customers","editManagerName","EDIT_MANAGER_NAME","editManagerEmail","EDIT_MANAGER_EMAIL","editManagerPhone","EDIT_MANAGER_PHONE","editManagerPreferredContact","EDIT_MANAGER_PREFERRED_CONTACT","editManagerNote","EDIT_MANAGER_NOTE","startEditDeveloper","developerId","_getState4","developers","editableDeveloper","_ref21","START_EDIT_DEVELOPER","editDeveloperCompanyName","EDIT_DEVELOPER_COMPANY_NAME","editDeveloperWebsite","EDIT_DEVELOPER_WEBSITE","editDeveloperEmail","EDIT_DEVELOPER_EMAIL","editDeveloperPhone","EDIT_DEVELOPER_PHONE","editDeveloperContactPreference","EDIT_DEVELOPER_PREFERRED_CONTACT","editDeveloperEIN","EDIT_DEVELOPER_EIN","editDeveloperCAL","EDIT_DEVELOPER_CAL","editDeveloperOtherRetrofit","EDIT_DEVELOPER_OTHER_RETROFIT","editDeveloperSpecialties","retrofit","_getState5","retrofits","filter","concat","EDIT_DEVELOPER_SPECIALTIES","editDeveloperGrantApproval","EDIT_DEVELOPER_GRANT_APPROVAL","editDeveloperSubgrantApproval","EDIT_DEVELOPER_SUBGRANT_APPROVAL","editDeveloperDesignServices","EDIT_DEVELOPER_DESIGN_SERVICES","editDeveloperConstructionServices","EDIT_DEVELOPER_CONSTRUCTION_SERVICES","editDeveloperMaintenanceServices","EDIT_DEVELOPER_MAINTENANCE_SERVICES","editDeveloperManagementServices","EDIT_DEVELOPER_MANAGEMENT_SERVICES","editDeveloperContactName","EDIT_DEVELOPER_CONTACT_NAME","editDeveloperContactEmail","EDIT_DEVELOPER_CONTACT_EMAIL","editDeveloperContactPhone","EDIT_DEVELOPER_CONTACT_PHONE","editDeveloperReasonForDenial","EDIT_DEVELOPER_REASON_FOR_DENIAL","stopEditDeveloper","stopNewDeveloper","vendors","saveDeveloperEdits","saveDeveloper","developerData","makeRetrofitDeveloperEditUrl","mapEditsToDeveloperData","saveNewDeveloper","addRetrofitDeveloperUrl","password","developer","removeDeveloperOfInterest","parcel","START_REMOVE_DEVELOPER_OF_INTEREST","delete","makeRemoveDeveloperOfInterestUrl","_getState7","COMPLETE_REMOVE_INTERESTED_MANAGER","dropRemovedDevelopers","completeRemoveDeveloperOfInterest","FAIL_REMOVE_DEVELOPER_OF_INTEREST","removeInterestedManager","START_REMOVE_INTERESTED_MANAGER","makeRemoveInterestedManagerUrl","_getState8","completeRemoveInterestedManager","FAIL_REMOVE_INTERESTED_MANAGER","removeManagerParcel","START_REMOVE_MANAGER_PARCEL","makeRemoveParcelUrl","_ref33","removedDevelopers","_getState9","updatedManagerIndex","findIndex","_ref30","_ref31","COMPLETE_REMOVE_MANAGER_PARCEL","_ref32","_toConsumableArray","completeRemoveManagerParcel","FAIL_REMOVE_MANAGER_PARCEL","hideErrorModal","HIDE_ERROR_MODAL","sortManagerDashboardName","_getState10","sortOrder","SORT_MANAGER_DASHBOARD_NAME","getNextDashboardSortDirection","sortManagerDashboardEmail","_getState11","email","SORT_MANAGER_DASHBOARD_EMAIL","sortManagerDashboardSignUpDate","_getState12","signupDate","SORT_MANAGER_DASHBOARD_SIGNUP_DATE","sortManagerDashboardPropertyCount","_getState13","propertyCount","SORT_MANAGER_DASHBOARD_PROPERTY_COUNT","sortManagerDashboardInterestedCount","_getState14","interestedCount","SORT_MANAGER_DASHBOARD_INTERESTED_COUNT","sortDeveloperDashboardCompany","_getState15","company","SORT_DEVELOPER_DASHBOARD_COMPANY","sortDeveloperDashboardWebsite","_getState16","website","SORT_DEVELOPER_DASHBOARD_WEBSITE","sortDeveloperDashboardSignUpDate","_getState17","SORT_DEVELOPER_DASHBOARD_SIGNUP_DATE","sortDeveloperDashboardInterestedCount","_getState18","SORT_DEVELOPER_DASHBOARD_INTERESTED_COUNT","sortDeveloperDashboardStatus","_getState19","SORT_DEVELOPER_DASHBOARD_STATUS","updateParcelSearchValue","UPDATE_PARCEL_SEARCH_VALUE","searchParcel","_getState20","searchText","addParcel","trimmedValue","trim","test","fetchSingleParcel","_actions2","performGeocoderSearch","startAddManagerParcel","failAddManagerParcel","completeAddManagerParcel","addManagerParcel","_ref35","Parcel","parcelData","parcel_id","ParcelID","property_manager","address","Address","building_type","BldgType","addManagerParcelUrl","_ref36","formatAddManagerParcelError","sendDeveloperPasswordResetEmail","START_SEND_DEVELOPER_PASSWORD_RESET_EMAIL","_getState22","_data$find","_ref37","resetDeveloperPasswordUrl","COMPLETE_SEND_DEVELOPER_PASSWORD_RESET_EMAIL","FAIL_SEND_DEVELOPER_PASSWORD_RESET_EMAIL","resetManagerTableFiltersAndSorts","RESET_MANAGER_TABLE_FILTERS_AND_SORTS","resetDeveloperTableFiltersAndSorts","RESET_DEVELOPER_TABLE_FILTERS_AND_SORTS","showAddParcelModal","SHOW_ADD_PARCEL_MODAL","hideAddParcelModal","HIDE_ADD_PARCEL_MODAL","updateGeocoderSearchText","UPDATE_GEOCODER_SEARCH_TEXT","updateParcelRetrofits","_getState23","_getState23$adminDash","_getState23$adminDash2","updatedRetrofits","updatedDevelopers","_ref38","devRetrofits","_ref39","UPDATE_PARCEL_RETROFITS","handleSelectAllDevelopers","UPDATE_PARCEL_DEVELOPERS","handleUnselectAllDevelopers","updateParcelDevelopers","_getState24","saveAddedParcel","START_SAVE_ADDED_PARCEL","_getState26","_getState26$adminDash","_getState26$adminDash2","_ref41","_getState25","_ref40","mapManagerParcel","reduce","acc","next","COMPLETE_SAVE_ADDED_PARCEL","warn","FAIL_SAVE_ADDED_PARCEL","failSaveAddedParcel","resetAdminDashboard","RESET_ADMIN_DASHBOARD","deleteManager","deletedManagerID","START_DELETE_MANAGER","COMPLETE_DELETE_MANAGER","completeDeleteManager","FAIL_DELETE_MANAGER","failDeleteManager","_constants2","_utils","_utils2","_csrfRequest","_constants3","START_SIGN_IN","COMPLETE_SIGN_IN","SIGN_IN","SIGN_OUT","START_UPDATE_DEVELOPER_STATUS","FAIL_UPDATE_DEVELOPER_STATUS","COMPLETE_UPDATE_DEVELOPER_STATUS","START_SAVE_MANAGER_EDITS","FAIL_SAVE_MANAGER_EDITS","COMPLETE_SAVE_MANAGER_EDITS","STOP_EDIT_MANAGER","START_SAVE_DEVELOPER_EDITS","FAIL_SAVE_DEVELOPER_EDITS","COMPLETE_SAVE_DEVELOPER_EDITS","STOP_EDIT_DEVELOPER","COMPLETE_REMOVE_DEVELOPER_OF_INTEREST","START_RESEND_EMAIL_VERIFICATION","FAIL_RESEND_EMAIL_VERIFICATION","COMPLETE_RESEND_EMAIL_VERIFICATION","START_ADD_MANAGER_PARCEL","START_SEARCH_PARCEL","FAIL_SEARCH_PARCEL","COMPLETE_SEARCH_PARCEL","FAIL_ADD_MANAGER_PARCEL","COMPLETE_ADD_MANAGER_PARCEL","_ref2","mapRetrofits","entries","_ref5","_slicedToArray","_ref7","replace","_ref9","company_name","company_email","company_phone","created_at","prefer_email","prefer_phone","ein","commercial_activity_license","phone","is_email_verified","other_retrofit","has_worked_on_grant","has_been_subgrantee","approved_at","deactivated_at","denied_at","has_admin_generated_password","_ref9$company_website","company_website","is_design_firm","is_construction_firm","is_maintenance_firm","is_management_firm","companyName","preferredContact","mapPreferredContact","commercialActivityLicense","signUpDate","approvedDate","deactivatedDate","deniedDate","isEmailVerified","otherRetrofit","contactName","contactEmail","contactPhone","hasWorkedOnGrant","hasBeenSubgrantee","hasAdminGeneratedPassword","isDesignFirm","isConstructionFirm","isMaintenanceFirm","isManagementFirm","_ref11","parcelId","buildingType","selectedDevelopers","mapManagerParcels","_ref12","note","_ref12$selected_devel","propertyManager","noteToDevelopers","_ref17","updateClientManagerData","shallowUpdateData","requestPromise","_getState3$adminDashb","editedManagerData","managerEdit","managerData","_ref18","updatedId","_ref19","customer","_ref20","_ref16$data","_ref20$response","apiError","_ref23","preferredContactTypes","telephone","updateClientDeveloperData","_getState6$adminDashb","editedDeveloperData","_ref24","_ref25","vendor","_ref26","_ref22$data","_ref26$response","_ref27","updatedParcelIndex","_ref28","priorSelectedDevelopers","numParcelsThisDeveloper","_ref29","newDevelopersOfInterest","devId","currentDirection","ascending","dashboardSortOrderEnum","descending","none","_ref34","normalizeAddParcelData","X","Y","sortManagerData","_ref8","sort","direction","sortableManagerTableColumns","sortByFields","getSignUpDate","di","sortDeveloperData","sortableDeveloperTableColumns","getStatusString","_sortBy","fields","_sortBy2","default","reverse","_Object$entries$filte","statusId","h","Date","getTime","createConfirmationModalStyle","content","freeze","overlay","position","top","left","right","bottom","backgroundColor","zIndex","display","justifyContent","alignItems","fetchPreferencesData","uuid","STORE_UUID","START_FETCH_PREFERENCES_DATA","makePreferencesUrl","COMPLETE_FETCH_PREFERENCES_DATA","FAIL_FETCH_PREFERENCES_DATA","unsubscribeParcel","START_UNSUBSCRIBE_PARCEL","_getState2$customers$","preferences","unsubscribedParcel","parcel_ids","Number","geocoder","clearGeocoderSearch","toggleGeocoder","uiSections","PreferencesForm","COMPLETE_UNSUBSCRIBE_PARCEL","FAIL_UNSUBSCRIBE_PARCEL","showConfirmUnsubscribeModal","SHOW_CONFIRM_UNSUBSCRIBE_MODAL","hideConfirmUnsubscribeModal","HIDE_CONFIRM_UNSUBSCRIBE_MODAL","showEditPreferencesModal","_getState3","SHOW_EDIT_PREFERENCES_MODAL","hideEditPreferencesModal","HIDE_EDIT_PREFERENCES_MODAL","toggleRetrofitPreference","sender","_getState4$customers","editableParcel","editPreferencesModal","main","TOGGLE_RETROFIT_PREFERENCE","allRetrofitsUnselected","_ref6","parcelWithUpdatedRetrofits","_defineProperty","val","TOGGLE_RETROFIT_PREFERENCE_AND_UPDATE_DEVELOPERS","changeSelectedDevelopers","CHANGE_SELECTED_DEVELOPERS","toggleAcceptsContacts","_getState6","accepts_contacts","TOGGLE_ACCEPTS_CONTACTS","updateEditedParcel","START_UPDATE_EDITED_PARCEL","_getState8$customers$","editedParcel","COMPLETE_UPDATE_EDITED_PARCEL","FAIL_UPDATE_EDITED_PARCEL","failUpdateEditedParcel","hideSuccessToast","HIDE_SUCCESS_TOAST","SHOW_SUCCESS_TOAST","capitalizeWord","word","_upperFirst3","toLowerCase","formatCostRange","costMin","costMax","toLocaleString","formatParcelAddress","withoutCity","capitalizedAddress","split","join","maybeGet","obj","path","_head3","_at3","normalizeText","includesQuery","query","developerMatchesQuery","developersQuery","phoneNumber","url","_axios","axios","defaults","xsrfHeaderName","xsrfCookieName","headers","makeParcelLatLngSearchAPIUrl","lat","lng","API_BASE_URL","latLngSearchPopUpID","latLngSearchPopUpClassName","_redux","_actions3","initialMainPageState","parcelFilters","groundMaxFilter","groundMinFilter","roofMaxFilter","roofMinFilter","savedPropertiesFilter","interestedFilter","enrolledFilter","eligibleFilter","nonResidentialFilter","condosFilter","capFilter","gsiFilter","bbox","roofFilterOpen","groundFilterOpen","totalFilterOpen","characteristicsFilterOpen","statusFilterOpen","mapExtentFilter","center","initialSearchMapCenter","zoom","initialSearchMapZoom","expanded","savedParcels","interestedParcels","enrolledParcels","errorMessage","deleteModalErrorMessage","highlightedParcel","displayTermsOfUseModal","displayDeleteAccountModal","visibleBasemap","basemapsEnum","cityCartoBasemap","imperviousLayerVisible","sewerLayerVisible","csv","fetchInterested","fetchSaved","initialDetailsPageState","selectedParcel","mapExpanded","parcelIdFromLoginAttempt","initialAuthState","signedIn","initialEmailConfirmationState","success","combineReducers","mainPage","RESET_RETROFIT_MAP","EXPAND_PROPERTY_SEARCH_MAP","CONTRACT_PROPERTY_SEARCH_MAP","START_FETCH_CSV","FAIL_FETCH_CSV","COMPLETE_FETCH_CSV","SHOW_IMPERVIOUS_LAYER","HIDE_IMPERVIOUS_LAYER","SHOW_SEWER_LAYER","HIDE_SEWER_LAYER","SHOW_AERIAL_BASEMAP","aerial","SHOW_CARTO_BASEMAP","RESET_FILTERS","COMPLETE_AIS_GEOCODER_SEARCH","isNotIntersection","coordinates","successfulAISGeocoderSearchZoom","SHOW_TERMS_OF_USE_MODAL","HIDE_TERMS_OF_USE_MODAL","SHOW_DELETE_ACCOUNT_MODAL","HIDE_DELETE_ACCOUNT_MODAL","COMPLETE_DELETE_ACCOUNT","FAIL_DELETE_ACCOUNT_STATUS","errorMessages","defaultErrorMessage","RESET_DELETE_ACCOUNT_STATUS","OPEN_GROUND_FILTER","OPEN_ROOF_FILTER","OPEN_TOTAL_FILTER","OPEN_CHARACTERISTICS_FILTER","OPEN_STATUS_FILTER","CLOSE_ALL_FILTERS","START_SAVE_PARCEL","Set","COMPLETE_SAVE_PARCEL","FAIL_SAVE_PARCEL","failSaveParcelMessage","START_UNSAVE_PARCEL","COMPLETE_UNSAVE_PARCEL","FAIL_UNSAVE_PARCEL","failUnsaveParcelMessage","UPDATE_MAP","bounds","_isEmpty3","CHANGE_PARCELS_QUERY_BBOX","CHANGE_GROUND_MIN","CHANGE_GROUND_MAX","CHANGE_ROOF_MIN","CHANGE_ROOF_MAX","CHANGE_TOTAL_MIN","totalMinFilter","CHANGE_TOTAL_MAX","totalMaxFilter","SELECT_ELIGIBLE_FILTER","SELECT_INTERESTED_FILTER","SELECT_ENROLLED_FILTER","CHANGE_SAVED_FILTER","CHANGE_MAP_EXTENT_FILTER","CHANGE_NONRES_FILTER","CHANGE_CONDOS_FILTER","CHANGE_CAP_FILTER","CHANGE_GSI_FILTER","START_FETCH_PARCEL_DATA","FAIL_FETCH_PARCEL_DATA","failLoadMultipleParcelsMessage","COMPLETE_FETCH_PARCEL_DATA","CLEAR_PARCEL_DATA","COMPLETE_FETCH_SAVED_PARCELS","COMPLETE_FETCH_INTERESTED_PARCELS","COMPLETE_FETCH_ENROLLED_PARCELS","HIGHLIGHT_PARCEL","UNHIGHLIGHT_PARCEL","FAIL_FETCH_INTERESTED_PARCELS","failLoadInterestedParcelsMessage","FAIL_FETCH_SAVED_PARCELS","failLoadSavedParcelsMessage","detailsPage","EXPAND_PROPERTY_DETAILS_MAP","CONTRACT_PROPERTY_DETAILS_MAP","START_FETCH_SINGLE_PARCEL","FAIL_FETCH_SINGLE_PARCEL","failLoadSingleParcelMessage","CANCEL_FETCH_SINGLE_PARCEL","COMPLETE_FETCH_SINGLE_PARCEL","DESELECT_PARCEL","FAIL_DEVELOPER_SIGN_IN","onboardingPage","auth","UPDATE_DEVELOPER_AUTH_EMAIL","UPDATE_DEVELOPER_AUTH_PASSWORD","SHOW_SIGN_IN","START_DEVELOPER_SIGN_IN","COMPLETE_DEVELOPER_SIGN_IN","isStaff","vendorInfo","START_DEVELOPER_SIGN_OUT","FAIL_DEVELOPER_SIGN_OUT","COMPLETE_DEVELOPER_SIGN_OUT","COMPLETE_RESET_PASSWORD","emailConfirmation","START_CONFIRM_EMAIL","FAIL_CONFIRM_EMAIL","COMPLETE_CONFIRM_EMAIL","resetPasswordPage","aisGeocoder","latLngParcelSearch","geocoderReducer","customersApp","_react","_reactDom","_reactRouterDom","_reactRedux","MarketingApp","lazy","PreferencesPage","DeveloperApp","EmailConfirmation","ResetPassword","OnboardingContainer","Welcome","DeveloperProfile","StayTuned","Denied","Deactivated","AdminDashboard","store","_store2","reducers","Modal","setAppElement","makeLoadableComponent","LazilyLoadedComponent","props","_react2","Suspense","fallback","LoadableMarketingApp","LoadablePreferencesPage","LoadableDeveloperApp","LoadableEmailConfirmation","LoadableOnboardingContainer","LoadableWelcome","LoadableStayTuned","LoadableDenied","LoadableDeactivated","LoadableDeveloperProfile","LoadableAdminDashboard","LoadableResetPassword","render","Provider","BrowserRouter","Fragment","Switch","Route","VENDOR_BASE_URL","component","VENDOR_SETTINGS_URL","DASHBOARD_BASE_URL","CUSTOMER_BASE_URL","exact","Redirect","from","to","BASE_URL","NotFound","getElementById","startSaveParcel","completeSaveParcel","failSaveParcel","saveParcel","changeParcelSaveStatusUrl","_noop3","startUnsaveParcel","completeUnsaveParcel","failUnsaveParcel","unsaveParcel","unhighlightParcel","highlightParcel","deselectParcel","selectParcel","SELECT_PARCEL","cancelPriorRequest","parcelFromExistingData","completeFetchSingleParcel","parcelDataApiUrl","cancelToken","CancelToken","cancelAxiosRequest","failFetchSingleParcel","thrown","isCancel","fetchSavedParcels","START_FETCH_SAVED_PARCELS","savedParcelsUrl","completeFetchSavedParcels","fetchInterestedParcels","START_FETCH_INTERESTED_PARCELS","interestedParcelsUrl","contact_email","contact_name","contact_phone","fetchEnrolledParcels","START_FETCH_ENROLLED_PARCELS","enrolledParcelsUrl","formatEnrolledParcel","FAIL_FETCH_ENROLLED_PARCELS","fetchParcels","updateMap","updateAISGeocoderFitBounds","changeParcelsQueryBbox","REDUX_NO_OP","resetFilters","clearAISGeocoderData","REFETCH_ON_EMPTY_QUERY","changeSavedFilter","changeMapExtentFilter","selectEligibleFilter","selectInterestedFilter","selectEnrolledFilter","changeNonResFilter","changeCondosFilter","changeCAPFilter","changeGSIFilter","changeGroundMin","changeGroundMax","changeRoofMin","changeRoofMax","changeTotalMin","changeTotalMax","signInDeveloper","startDeveloperSignIn","_getState3$auth","retrofitMapLoginUrl","completeDeveloperSignIn","failDeveloperSignIn","sessionSignInDeveloper","_getState4$auth","_utils3","parcelIdFromHistory","ROUTES","welcome","resetRetrofitMap","signOutDeveloper","_getState5$auth","maybeCancelPriorAISGeocoderRequest","retrofitMapLogoutUrl","resetLatLngParcelSearch","setDeveloperSignInEmail","setDeveloperSignInPassword","openRoofFilter","openGroundFilter","openTotalFilter","openStatusFilter","openCharacteristicsFilter","closeAllFilters","confirmEmail","confirmEmailUrl","showTermsOfUseModal","hideTermsOfUseModal","showDeleteAccountModal","hideDeleteAccountModal","toggleImperviousLayer","toggleSewerLayer","toggleBasemap","fetchCSV","_ref15$fetchIntereste","_ref15$fetchSaved","_getState10$mainPage","_getState10$mainPage$","previousFetchInterested","previousFetchSaved","completeFetchCSV","failFetchCSV","requestedParcels","_ref16","baseParams","querystring","stringify","nonRes","condos","apts","numParcels","phillyBbox","L","latLngBounds","latLng","parcelsAPIUrl","convertGeoJsonToAgsObject","rectangle","toGeoJSON","CSVMaker","formatParcelDataWithInterestedData","parcelDataWithInterested","createCSVStringWithHeaders","csvData","togglePropertySearchMapWidth","togglePropertyDetailsMapWidth","failDeleteVendorAccount","startDeleteVendorAccount","CANCEL_FETCH_PARCEL_DATA","TOGGLE_DETAILS","CANCEL_REQUEST_MESSAGE","parcelIds","acceptsContacts","newBounds","_getState2$mainPage","_getState2$mainPage$p","_getState2$aisGeocode","aisGeocoderResult","boundsPending","useMapExtent","esriJsonBbox","getCityLimitsBbox","imperviousGroundMin","imperviousGroundMax","imperviousRoofMin","imperviousRoofMax","impervAreaMin","impervAreaMax","cap","gsi","defaultRequestedParcelsCount","calculateRequestedParcelIDs","completeVendorSignIn","saveCSV","options","hmr","transform","insertInto","locals","urlEscape","___CSS_LOADER_URL___0___","___CSS_LOADER_URL___1___","___CSS_LOADER_URL___2___","___CSS_LOADER_URL___3___","___CSS_LOADER_URL___4___","___CSS_LOADER_URL___5___","selectGeocoderResult","_getState$geocoder","params","section","_utils5","updateSubmittingControl","updateSubmittedQuery","_utils4","first","rest","receiveGeocoderResults","failGeocoderSearch","NO_RESULTS_MESSAGE","NETWORK_ERROR_MESSAGE","_reduxThunk","middlewares","thunk","createStoreWithMiddleware","applyMiddleware","createStore","currentUnitCharge","defaultUnitCharge","userInput","retrofitsFromQueryString","contactInfo","preference","benefitEstimateParameters","benefitFields","RetrofitScope","_benefitEstimateParam","TimeHorizon","formSubmission","posting","errors","ui","geocoderQuery","submittingControl","_ui","Hero","showGeocoder","ParcelForm","Benefits","_uiSections$Benefits","Maintenance","WaterBillCredits","AnnualSavings","AggregatedSavings","resentEmailParcels","emailExists","resendingParcelEmail","_Object$assign","_Object$assign6","COMPLETE_FETCH_CURRENT_UNIT_CHARGE","FAIL_FETCH_CURRENT_UNIT_CHARGE","_concat3","START_SUBMIT_CONTACT_FORM","COMPLETE_SUBMIT_CONTACT_FORM","showConfirmationPage","unsubscribeToken","CLOSE_CONFIRMATION_PAGE","FAIL_SUBMIT_CONTACT_FORM","_uniqBy3","REMOVE_PARCEL","_without3","TOGGLE_GEOCODER","UPDATE_BENEFIT_SLIDER_VALUE","field","UPDATE_BENEFIT_ESTIMATE_VALUE","UPDATE_SUBMITTING_CONTROL","UPDATE_SUBMITTED_QUERY","SELECT_DEVELOPERS","DESELECT_DEVELOPERS","START_RESEND_MANAGER_EMAIL","FAIL_RESEND_MANAGER_EMAIL","COMPLETE_RESEND_MANAGER_EMAIL","COMPLETE_RESEND_MANAGER_EMAIL_WITHOUT_PARCEL","AVOID_RESENDING_MANAGER_EMAIL_WITHOUT_PARCEL","SELECT_RETROFITS_FROM_QUERY_STRING","HIDE_GEOCODER_ON_COMPLETING_PARCEL_SEARCH_FROM_QUERY_STRING","SET_SHOW_ALL_DEVELOPERS","showAllDevelopers","SET_DEVELOPER_QUERY","preferencesReducer","parcelAPIUrl","makeResendManagerEmailUrl","resendCustomerEmail","regulatoryAPIUrl","defaultParcelGrossArea","defaultParcelImperviousArea","RAIN_GARDEN","mapFills","_mapFills","GREEN_ROOF","PERMEABLE_PAVEMENT","SUBSURFACE_STORAGE","CISTERN","title","image","imgRainGarden","description","imgGreenRoof","imgPermeablePavement","imgSubsurfaceStorage","imgCistern","NO_IDEA","retrofitTypes","_map3","SUBMIT_PROPERTY_MANAGER_FORM_URL","mosaicSize","_mosaicSize","developerCompanyTypesEnum","showAll","design","construction","maintenance","management","feetToAcres","sqft","_round3","parseGeom","wkt","_wellknown2","geoJson","_terraformerArcgisParser","convert","geometry","validationFailed","values","searchString","str1","str2","isStr","str","String","pathname","location","startsWith","VENDOR_PROPERTY_URL","selectEligibleParcels","eligibleBldgTypes","formatItem","newOrEditedItem","items","index","itemsUpToEdited","itemsAfterEdited","createParcelsOverlay","parcelsOverlay","_esriLeaflet","dynamicMapLayer","parcelsAndImperviousLayersURL","f","layers","setDynamicLayers","JSON","source","mapLayerId","drawingInfo","renderer","symbol","style","color","outline","width","createCityCartoBasemapAndAerialLayers","leafletMap","cityCartoBasemapMap","tiledMapLayer","attribution","phlBasemapAttribution","cityCartoBasemapLabelsMap","cityCartoLabelsBasemap","aerialMap","phlAerialBasemap","maxZoom","maxAerialBasemapZoom","addTo","bringToFront","searchMapCityLimitsExtent","getParcelOrParcelsBounds","geojson","Shape","formatParcelsWKT","getBounds","formatOwner","owner1","owner2","getParcelId","geocodedParcelIDs","parseInt","savedParcelIDs","interestedParcelIDs","enrolledParcelIDs","interestedAndSavedParcels","has","enrolledAndSavedParcels","successToast","confirmUnsubscribeModal","visible","successToastMessages","remove","edit","geocoderAPIUrl","saving","filters","resetPasswordStatus","emailVerification","failLoadDevelopersMessage","failLoadManagersMessage","newData","updatedDeveloper","failEditDeveloperMessage","toggleFilter","editing","failEditManagerMessage","initManagerData","initDeveloperData","failResendEmailMessage","newUserId","specialties","initialDeveloperTableSortOrder","initialManagerTableSortOrder","aisSearchAPIURL","aisSearchAPIKey","process","validate","vendorId","validationErrors","forEach","fieldValidators","validators","skipForUpdateProfileValidation","onboardingFormFields","PASSWORD","TOS","v","formatFieldsToCamelCase","camelCaseKeys","keys","newKey","toUpperCase","required","otherField","EMAIL","_validators","CONFIRM_PASSWORD","NAME","COMPANY_NAME","COMPANY_EMAIL","COMPANY_PHONE","EIN","OTHER_RETROFIT_TEXT","makeRequiredWhenTruthyValidator","OTHER_RETROFIT","HAS_SELECTED_AT_LEAST_ONE_FIRM_TYPE","IS_DESIGN_FIRM","IS_CONSTRUCTION_FIRM","IS_MAINTENANCE_FIRM","IS_MANAGEMENT_FIRM","Boolean","baseRetrofitObject","_ref$email","_ref$name","_ref$phone","_ref$note","_ref$retrofits","Map","Owner1","Owner2","ParcelCharge","BRTAcct","FinalGross","FinalImperv","ImperviousGroundArea","ImperviousRoofArea","HasExistingGsi","IsCapApproved","interestedData","_this","this","makeParcelMapForRow","csvHeaders","row","fileName","now","toISOString","blob","Blob","navigator","msSaveOrOpenBlob","msSaveBlob","a","href","URL","createObjectURL","download","body","click","removeChild","initialPageState","submitting","showPassword","showConfirmPassword","signInBoxState","signInBoxStatesEnum","showSignUp","resetPassword","validationError","initialFieldsState","_initialFieldsState","PHONE","USE_COMPANY_CONTACT","COMPANY_WEBSITE","COMMERCIAL_ACTIVITY_LICENSE","SHOULD_EMAIL_PARCEL_UPDATES","HAS_WORKED_ON_GRANT","HAS_BEEN_SUBGRANTEE","HAS_READ_TOS","initialValidationState","_initialValidationSta","initialUpdateProfileState","unsavedChanges","fieldsSnapshot","page","showSignIn","SHOW_SIGN_UP","SHOW_FORGOT_PASSWORD","showForgotPassword","DISPLAY_FORGOT_PASSWORD_EMAIL_VALIDATION_ERROR","UPDATE_FORGOT_PASSWORD_EMAIL_ADDRESS","START_SEND_RESET_PASSWORD_EMAIL","FAIL_SEND_RESET_PASSWORD_EMAIL","COMPLETE_SEND_RESET_PASSWORD_EMAIL","START_SUBMITTING_ONBOARDING_FORM","FAIL_SUBMITTING_ONBOARDING_FORM","COMPLETE_SUBMITTING_ONBOARDING_FORM","TOGGLE_SHOW_PASSWORD","TOGGLE_SHOW_CONFIRM_PASSWORD","signInError","UPDATE_ONBOARDING_FORM_FIELD","TOGGLE_ONBOARDING_FORM_FIELD","RESET_FIELDS_TO_FIELDS_SNAPSHOT","COMPLETE_VENDOR_SIGN_IN","updateProfile","CREATE_UPDATE_FIELDS_SNAPSHOT","RESET_UPDATE_PROFILE","validation","SET_ONBOARDING_FORM_ERRORS","SET_ONBOARDING_SIGN_UP_FORM_ERRORS","SET_TOS_ERROR","SET_UID","uid","SET_TOKEN","token","SET_NEW_PASSWORD_ONE","newPasswordOne","SET_NEW_PASSWORD_TWO","newPasswordTwo","START_RESET_PASSWORD","FAIL_RESET_PASSWORD","confirmationResponse","CLEAR_RESET_PASSWORD","resetPasswordUrl","changePasswordUrl","CHANGE_AIS_GEOCODER_SEARCH_QUERY","START_AIS_GEOCODER_SEARCH","parcelsPending","userInitiated","FAIL_AIS_GEOCODER_SEARCH","UPDATE_AIS_GEOCODER_FIT_BOUNDS","CLEAR_AIS_GEOCODER_DATA","RESET_LAT_LNG_PARCEL_SEARCH","START_LAT_LNG_PARCEL_SEARCH","latlng","FAIL_LAT_LNG_PARCEL_SEARCH","COMPLETE_LAT_LNG_PARCEL_SEARCH","_propTypes","styles","flexFlow","margin","paddingBottom","heading","maxWidth","font","fontWeight","textAlign","aside","marginTop","padding","list","listStyle","listItem","marginBottom","link","textDecoration","garpMarketingUrl","vendorMapUrl","defaultProps","propTypes","connect","parcelIsEligible","both","addVendor","customerAdd","home","validationErrorPropType","arrayOf","string","validationErrorsPropType","objectOf","editableFieldTypes","dropdown","textbox","checkbox","retrofitSelection","companyTypeSelection","globalDeveloperStatusTypes","parcelDataPropType","factListLinkTypes","developerDataPropType","shape","number","isRequired","oneOf","bool","propertyTypes","managerDataPropType","rainGarden","greenRoof","permeablePavement","subsurfaceStorage","industrialAndCommercial","multifamily","parcelBuildingTypes","NonRes","Condo","closeConfirmationPage","fetchUnitCharge","START_FETCH_CURRENT_UNIT_CHARGE","unitCharge","ImperviousUnitCharge","completeFetchCurrentUnitCharge","formatAPIRetrofitDeveloperData","_shuffle3","completeFetchDeveloperData","updateBenefitEstimateValue","updateBenefitFields","fetchParcelData","fromQueryString","isNaN","failFetchParcelData","eitherGetEligibleParcelOrThrow","completeFetchParcelData","submitContactForm","startSubmitContactForm","contactPreference","selectedPreferences","_ref11$Parcel","formatPropertyManagerFormSubmission","unsubscribe_token","_ref9$data","_ref13$response","removeParcel","_includes3","_values3","updateBenefitSliderValue","selectDevelopers","deselectDevelopers","adjustDeveloperSelectionForRetrofitChange","retrofitPreferences","_getState4$customers$","newlyDeslectedDevelopers","accumulator","selectedDeveloperId","_developerData$find","avoidResendingManagerEmailWithoutParcel","resendManagerEmail","startResendManagerEmail","failResendManagerEmail","resendManagerEmailWithoutParcel","selectRetrofitsFromQueryString","Array","isArray","setShowAllDevelopers","setDeveloperQuery","annualSavings","timeHorizon","_getState$customers$m","waterBillCreditValue","retrofitScope","roundUpToNearestFiveHundredSqFt","area","Math","ceil","getBillingUnits","roundedArea","multiplyByUnitCharge","billingUnits","imperviousArea","_sum3","ImpervArea","reducedImperviousArea","calculateWaterCredits","maintenanceValue","annualSavingsValue","aggregatedSavingsValue","onboardingFormUrl","updateProfileUrl","otherRetrofitTextFieldId","CONTACT_PREFERENCE","performAISGeocoderSearch","refetchOnEmptyQuery","changeAISGeocoderSearchQuery","cancelPriorAISGeocoderRequest","searchType","_ref$features$","_ref$features$$geomet","_ref$features$$proper","search_type","features","properties","li_parcel_id","pwd_parcel_id","completeAISGeocoderSearch","initialMapCenter","initialMapZoom","parcelsAndImperviousMinimumZoomLevel","combinedSewerOverflowLayerURL","combinedSewerOverflowMinimumZoomLevel","minimumSearchMapPolygonZoomLevel","circleMarkerRadius","parcelVectorColor","highlightedParcelVectorColor","whiteVectorColor","latLngSearchCircleMarkerVectorStyle","radius","NONRES","CONDOS","CAP","GSI","pending","termsOfUseModalStyle","refinementHintEmphasisThresholdMin","refinementHintEmphasisThresholdMax","failAISGeocoderSearch","failGenerateCSV","staytuned","profile","enter","toggleSignIn","toggleSignUp","submitOnboardingForm","scrollTo","requestBody","should_email_parcel_updates_preference","formRequest","_getState$onboardingP","companyEmail","companyWebsite","userEmail","concatDefined","update","signUp","updateOnboardingField","toggleOnboardingField","toggleShowPassword","toggleShowConfirmPassword","sendResetPasswordEmail","_isEmail2","updateForgotPasswordEmailAddress","setTOSError","formattedPayload","createUpdateFieldsSnapshot","_getState4$onboarding","resetFieldsToFieldsSnapshot","resetUpdateProfile","CLEAR_FIELDS_SNAPSHOT","setUID","setToken","setNewPasswordOne","setNewPasswordTwo","startResetPassword","_getState$auth","_getState$resetPasswo","resetFromSettingsPage","changePasswordRequest","old_password","new_password1","new_password2","failResetPassword","clearResetPassword","makeLatLngParcelSearch","completeLatLngParcelSearch","failLatLngParcelSearch","unsubscribeParcelPropType","parcelViewerUrl","creditsExplorerUrl","retrofitMapUrl","parcelPropType","TenCode","GrossArea","GrossCredit","ImpervCredit","NPDESCredit","MeterCharge","WeightedCharge","BldgCode","BldgDesc","BrtWebsite","SimpleShape","ParcelBuildingStatus"],"mappings":"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","file":"garp.developer.app.bundle.e8d0c0557581eafffb56.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t9: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"garp.developer.\" + ({}[chunkId]||chunkId) + \".bundle.\" + \"e8d0c0557581eafffb56\" + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\tvar error = new Error('Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')');\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([155,10]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import {\n START_GEOCODER_SEARCH,\n RECEIVE_GEOCODER_RESULTS,\n SELECT_GEOCODER_RESULT,\n FAIL_GEOCODER_SEARCH,\n CLEAR_GEOCODER_SEARCH,\n} from './actions';\n\nconst initialState = {\n selectedResult: null,\n results: null,\n fetching: false,\n error: null,\n};\n\nexport default function geocoderReducer(\n state = initialState,\n { type, payload },\n) {\n switch (type) {\n case START_GEOCODER_SEARCH:\n return Object.assign({}, state, {\n selectedResult: null,\n results: null,\n fetching: true,\n error: null,\n });\n case RECEIVE_GEOCODER_RESULTS:\n return Object.assign({}, state, {\n selectedResult: null,\n results: payload,\n fetching: false,\n error: null,\n });\n case FAIL_GEOCODER_SEARCH: {\n return Object.assign({}, state, {\n selectedResult: null,\n results: null,\n fetching: false,\n error: payload,\n });\n }\n case SELECT_GEOCODER_RESULT:\n return Object.assign({}, state, {\n selectedResult: payload,\n results: null,\n fetching: false,\n error: null,\n });\n case CLEAR_GEOCODER_SEARCH:\n return initialState;\n default:\n return state;\n }\n}\n","import {\n loginUrl,\n logoutUrl,\n userUrl,\n propertyManagersUrl,\n retrofitDevelopersUrl,\n addRetrofitDeveloperUrl,\n addPropertyManagerUrl,\n developerStatusTypes,\n makePropertyManagerEditUrl,\n makeRetrofitDeveloperEditUrl,\n apiError,\n makeRemoveDeveloperOfInterestUrl,\n makeRemoveParcelUrl,\n makeRemoveInterestedManagerUrl,\n resendEmailUrl,\n dashboardSortOrderEnum,\n addManagerParcelUrl,\n networkError,\n forbiddenError,\n unknownError,\n DASHBOARD_ROUTES,\n} from './constants';\n\nimport { resetDeveloperPasswordUrl } from '../../constants';\n\nimport { fetchSingleParcel } from '../../actions';\n\nimport { performGeocoderSearch } from '../../../geocoder/actions';\n\nimport { shallowUpdateData } from '../../utils';\nimport { mapPreferredContact } from '../../../common/utils';\n\nimport csrfRequest from '../../../common/csrfRequest';\nimport { preferredContactTypes } from '../../../common/constants';\n\nexport const RESET_ADMIN_DASHBOARD = 'RESET_ADMIN_DASHBOARD';\nexport const START_SIGN_IN = 'START_SIGN_IN';\nexport const FAIL_SIGN_IN = 'FAIL_SIGN_IN';\nexport const COMPLETE_SIGN_IN = 'COMPLETE_SIGN_IN';\nexport const START_SIGN_OUT = 'START_SIGN_OUT';\nexport const FAIL_SIGN_OUT = 'FAIL_SIGN_OUT';\nexport const COMPLETE_SIGN_OUT = 'COMPLETE_SIGN_OUT';\nexport const SIGN_IN = 'SIGN_IN';\nexport const SIGN_OUT = 'SIGN_OUT';\nexport const START_FETCH_DEVELOPER_DATA = 'START_FETCH_DEVELOPER_DATA';\nexport const FAIL_FETCH_DEVELOPER_DATA = 'FAIL_FETCH_DEVELOPER_DATA';\nexport const COMPLETE_FETCH_DEVELOPER_DATA = 'COMPLETE_FETCH_DEVELOPER_DATA';\nexport const START_FETCH_MANAGER_DATA = 'START_FETCH_MANAGER_DATA';\nexport const FAIL_FETCH_MANAGER_DATA = 'FAIL_FETCH_MANAGER_DATA';\nexport const COMPLETE_FETCH_MANAGER_DATA = 'COMPLETE_FETCH_MANAGER_DATA';\n\nexport const START_UPDATE_DEVELOPER_STATUS = 'START_UPDATE_DEVELOPER_STATUS';\nexport const FAIL_UPDATE_DEVELOPER_STATUS = 'FAIL_UPDATE_DEVELOPER_STATUS';\nexport const COMPLETE_UPDATE_DEVELOPER_STATUS =\n 'COMPLETE_UPDATE_DEVELOPER_STATUS';\n\nexport const TOGGLE_DEVELOPER_FILTER_OPTION = 'TOGGLE_DEVELOPER_FILTER_OPTION';\nexport const TOGGLE_MANAGER_FILTER_OPTION = 'TOGGLE_MANAGER_FILTER_OPTION';\nexport const UPDATE_DEVELOPER_SEARCH_TEXT = 'UPDATE_DEVELOPER_SEARCH_TEXT';\nexport const UPDATE_MANAGER_SEARCH_TEXT = 'UPDATE_MANAGER_SEARCH_TEXT';\n\nexport const START_EDIT_MANAGER = 'BEGIN_EDIT_MANAGER';\nexport const EDIT_MANAGER_NAME = 'EDIT_MANAGER_NAME';\nexport const EDIT_MANAGER_EMAIL = 'EDIT_MANAGER_EMAIL';\nexport const EDIT_MANAGER_PHONE = 'EDIT_MANAGER_PHONE';\nexport const EDIT_MANAGER_PREFERRED_CONTACT = 'EDIT_MANAGER_PREFERRED_CONTACT';\nexport const EDIT_MANAGER_NOTE = 'EDIT_MANAGER_NOTE';\nexport const START_SAVE_MANAGER_EDITS = 'START_SAVE_MANAGER_EDITS';\nexport const FAIL_SAVE_MANAGER_EDITS = 'FAIL_SAVE_MANAGER_EDITS';\nexport const COMPLETE_SAVE_MANAGER_EDITS = 'COMPLETE_SAVE_MANAGER_EDITS';\nexport const STOP_EDIT_MANAGER = 'STOP_EDIT_MANAGER';\n\nexport const START_EDIT_DEVELOPER = 'BEGIN_EDIT_DEVELOPER';\nexport const EDIT_DEVELOPER_COMPANY_NAME = 'EDIT_DEVELOPER_COMPANY_NAME';\nexport const EDIT_DEVELOPER_EMAIL = 'EDIT_DEVELOPER_EMAIL';\nexport const EDIT_DEVELOPER_WEBSITE = 'EDIT_DEVELOPER_WEBSITE';\nexport const EDIT_DEVELOPER_PHONE = 'EDIT_DEVELOPER_PHONE';\nexport const EDIT_DEVELOPER_PREFERRED_CONTACT =\n 'EDIT_DEVELOPER_PREFERRED_CONTACT';\nexport const EDIT_DEVELOPER_EIN = 'EDIT_DEVELOPER_EIN';\nexport const EDIT_DEVELOPER_CAL = 'EDIT_DEVELOPER_CAL';\nexport const EDIT_DEVELOPER_SPECIALTIES = 'EDIT_DEVELOPER_SPECIALTIES';\nexport const EDIT_DEVELOPER_GRANT_APPROVAL = 'EDIT_DEVELOPER_GRANT_APPROVAL';\nexport const EDIT_DEVELOPER_SUBGRANT_APPROVAL =\n 'EDIT_DEVELOPER_SUBGRANT_APPROVAL';\nexport const EDIT_DEVELOPER_DESIGN_SERVICES = 'EDIT_DEVELOPER_DESIGN_SERVICES';\nexport const EDIT_DEVELOPER_CONSTRUCTION_SERVICES =\n 'EDIT_DEVELOPER_CONSTRUCTION_SERVICES';\nexport const EDIT_DEVELOPER_MAINTENANCE_SERVICES =\n 'EDIT_DEVELOPER_MAINTENANCE_SERVICES';\nexport const EDIT_DEVELOPER_MANAGEMENT_SERVICES =\n 'EDIT_DEVELOPER_MANAGEMENT_SERVICES';\nexport const EDIT_DEVELOPER_CONTACT_NAME = 'EDIT_DEVELOPER_CONTACT_NAME';\nexport const EDIT_DEVELOPER_CONTACT_EMAIL = 'EDIT_DEVELOPER_CONTACT_EMAIL';\nexport const EDIT_DEVELOPER_CONTACT_PHONE = 'EDIT_DEVELOPER_CONTACT_PHONE';\nexport const EDIT_DEVELOPER_OTHER_RETROFIT = 'EDIT_DEVELOPER_OTHER_RETROFIT';\nexport const EDIT_DEVELOPER_REASON_FOR_DENIAL =\n 'EDIT_DEVELOPER_REASON_FOR_DENIAL';\nexport const START_SAVE_DEVELOPER_EDITS = 'START_SAVE_DEVELOPER_EDITS';\nexport const FAIL_SAVE_DEVELOPER_EDITS = 'FAIL_SAVE_DEVELOPER_EDITS';\nexport const COMPLETE_SAVE_DEVELOPER_EDITS = 'COMPLETE_SAVE_DEVELOPER_EDITS';\nexport const STOP_EDIT_DEVELOPER = 'STOP_EDIT_DEVELOPER';\n\nexport const START_REMOVE_MANAGER_PARCEL = 'START_REMOVE_MANAGER_PARCEL';\nexport const FAIL_REMOVE_MANAGER_PARCEL = 'FAIL_REMOVE_MANAGER_PARCEL';\nexport const COMPLETE_REMOVE_MANAGER_PARCEL = 'COMPLETE_REMOVE_MANAGER_PARCEL';\n\nexport const START_REMOVE_DEVELOPER_OF_INTEREST =\n 'START_REMOVE_DEVELOPER_OF_INTEREST';\nexport const FAIL_REMOVE_DEVELOPER_OF_INTEREST =\n 'FAIL_REMOVE_DEVELOPER_OF_INTEREST';\nexport const COMPLETE_REMOVE_DEVELOPER_OF_INTEREST =\n 'COMPLETE_REMOVE_DEVELOPER_OF_INTEREST';\n\nexport const START_REMOVE_INTERESTED_MANAGER =\n 'START_REMOVE_INTERESTED_MANAGER';\nexport const FAIL_REMOVE_INTERESTED_MANAGER = 'FAIL_REMOVE_INTERESTED_MANAGER';\nexport const COMPLETE_REMOVE_INTERESTED_MANAGER =\n 'COMPLETE_REMOVE_INTERESTED_MANAGER';\n\nexport const START_RESEND_EMAIL_VERIFICATION =\n 'START_RESEND_EMAIL_VERIFICATION';\nexport const FAIL_RESEND_EMAIL_VERIFICATION = 'FAIL_RESEND_EMAIL_VERIFICATION';\nexport const COMPLETE_RESEND_EMAIL_VERIFICATION =\n 'COMPLETE_RESEND_EMAIL_VERIFICATION';\n\nexport const START_SEND_DEVELOPER_PASSWORD_RESET_EMAIL =\n 'START_SEND_DEVELOPER_PASSWORD_RESET_EMAIL';\nexport const FAIL_SEND_DEVELOPER_PASSWORD_RESET_EMAIL =\n 'FAIL_SEND_DEVELOPER_PASSWORD_RESET_EMAIL';\nexport const COMPLETE_SEND_DEVELOPER_PASSWORD_RESET_EMAIL =\n 'COMPLETE_SEND_DEVELOPER_PASSWORD_RESET_EMAIL';\n\nexport const HIDE_ERROR_MODAL = 'HIDE_ERROR_MODAL';\n\nexport const SORT_MANAGER_DASHBOARD_NAME = 'SORT_MANAGER_DASHBOARD_NAME';\nexport const SORT_MANAGER_DASHBOARD_EMAIL = 'SORT_MANAGER_DASHBOARD_EMAIL';\nexport const SORT_MANAGER_DASHBOARD_SIGNUP_DATE =\n 'SORT_MANAGER_DASHBOARD_SIGNUP_DATE';\nexport const SORT_MANAGER_DASHBOARD_PROPERTY_COUNT =\n 'SORT_MANAGER_DASHBOARD_PROPERTY_COUNT';\nexport const SORT_MANAGER_DASHBOARD_INTERESTED_COUNT =\n 'SORT_MANAGER_DASHBOARD_INTERESTED_COUNT';\nexport const SORT_DEVELOPER_DASHBOARD_COMPANY =\n 'SORT_DEVELOPER_DASHBOARD_COMPANY';\nexport const SORT_DEVELOPER_DASHBOARD_WEBSITE =\n 'SORT_DEVELOPER_DASHBOARD_WEBSITE';\nexport const SORT_DEVELOPER_DASHBOARD_SIGNUP_DATE =\n 'SORT_DEVELOPER_DASHBOARD_SIGNUP_DATE';\nexport const SORT_DEVELOPER_DASHBOARD_INTERESTED_COUNT =\n 'SORT_DEVELOPER_DASHBOARD_INTERESTED_COUNT';\nexport const SORT_DEVELOPER_DASHBOARD_STATUS =\n 'SORT_DEVELOPER_DASHBOARD_STATUS';\n\nexport const RESET_DEVELOPER_TABLE_FILTERS_AND_SORTS =\n 'RESET_DEVELOPER_TABLE_FILTERS_AND_SORTS';\nexport const RESET_MANAGER_TABLE_FILTERS_AND_SORTS =\n 'RESET_MANAGER_TABLE_FILTERS_AND_SORTS';\n\nexport const UPDATE_PARCEL_SEARCH_VALUE = 'UPDATE_PARCEL_SEARCH_VALUE';\nexport const START_SEARCH_PARCEL = 'START_SEARCH_PARCEL';\nexport const FAIL_SEARCH_PARCEL = 'FAIL_SEARCH_PARCEL';\nexport const COMPLETE_SEARCH_PARCEL = 'COMPLETE_SEARCH_PARCEL';\n\nexport const START_ADD_MANAGER_PARCEL = 'START_ADD_MANAGER_PARCEL';\nexport const FAIL_ADD_MANAGER_PARCEL = 'FAIL_ADD_MANAGER_PARCEL';\nexport const COMPLETE_ADD_MANAGER_PARCEL = 'COMPLETE_ADD_MANAGER_PARCEL';\n\nexport const SHOW_ADD_PARCEL_MODAL = 'SHOW_ADD_PARCEL_MODAL';\nexport const HIDE_ADD_PARCEL_MODAL = 'HIDE_ADD_PARCEL_MODAL';\nexport const UPDATE_GEOCODER_SEARCH_TEXT = 'UPDATE_GEOCODER_SEARCH_TEXT';\nexport const UPDATE_PARCEL_RETROFITS = 'UPDATE_PARCEL_RETROFITS';\nexport const UPDATE_PARCEL_DEVELOPERS = 'UPDATE_PARCEL_DEVELOPERS';\nexport const START_SAVE_ADDED_PARCEL = 'START_SAVE_ADDED_PARCEL';\nexport const FAIL_SAVE_ADDED_PARCEL = 'FAIL_SAVE_ADDED_PARCEL';\nexport const COMPLETE_SAVE_ADDED_PARCEL = 'COMPLETE_SAVE_ADDED_PARCEL';\n\nexport const START_DELETE_MANAGER = 'START_DELETE_MANAGER';\nexport const FAIL_DELETE_MANAGER = 'FAIL_DELETE_MANAGER';\nexport const COMPLETE_DELETE_MANAGER = 'COMPLETE_DELETE_MANAGER';\n\nfunction startSignIn() {\n return {\n type: START_SIGN_IN,\n };\n}\n\nfunction failSignIn({ message, response: { status } = {} }) {\n const payload = (() => {\n if (status && [400, 403].includes(status)) {\n return forbiddenError;\n }\n\n if (message && message === networkError) {\n return 'Unable to log in due to an error with the network or our servers';\n }\n\n return unknownError;\n })();\n\n return {\n type: FAIL_SIGN_IN,\n payload,\n };\n}\n\nfunction completeSignIn({ key: payload }) {\n return {\n type: COMPLETE_SIGN_IN,\n payload,\n };\n}\n\nexport function sessionSignIn(history) {\n return dispatch => {\n dispatch(startSignIn());\n return csrfRequest\n .get(loginUrl)\n .then(({ data }) => dispatch(completeSignIn(data)))\n .catch(() => history.push(DASHBOARD_ROUTES.signin));\n };\n}\n\nexport function signIn(credentials) {\n return dispatch => {\n dispatch(startSignIn());\n return csrfRequest\n .post(loginUrl, credentials)\n .then(({ data }) => dispatch(completeSignIn(data)))\n .catch(response => dispatch(failSignIn(response)));\n };\n}\n\nfunction startSignOut() {\n return {\n type: START_SIGN_OUT,\n };\n}\n\nfunction failSignOut() {\n return {\n type: FAIL_SIGN_OUT,\n };\n}\n\nfunction completeSignOut() {\n return {\n type: COMPLETE_SIGN_OUT,\n };\n}\n\nexport function signOut() {\n return dispatch => {\n dispatch(startSignOut());\n csrfRequest\n .post(logoutUrl)\n .then(() => dispatch(completeSignOut()))\n .catch(() => dispatch(failSignOut()));\n };\n}\n\nfunction startFetchDeveloperData() {\n return {\n type: START_FETCH_DEVELOPER_DATA,\n };\n}\n\nfunction failFetchDeveloperData() {\n return {\n type: FAIL_FETCH_DEVELOPER_DATA,\n };\n}\n\nfunction completeFetchDeveloperData(payload) {\n return {\n type: COMPLETE_FETCH_DEVELOPER_DATA,\n payload,\n };\n}\n\nfunction mapRetrofits(retrofits) {\n return Object.entries(retrofits)\n .filter(([, value]) => value)\n .map(([retrofit]) => retrofit.replace('_', ' '));\n}\n\nfunction formatDeveloperResult({\n id,\n company_name,\n company_email,\n company_phone,\n created_at,\n prefer_email,\n prefer_phone,\n ein,\n commercial_activity_license,\n name,\n email,\n phone,\n status,\n is_email_verified,\n green_roof,\n cistern,\n subsurface_storage,\n rain_garden,\n permeable_pavement,\n other_retrofit,\n has_worked_on_grant,\n has_been_subgrantee,\n approved_at,\n deactivated_at,\n denied_at,\n reason_for_denial: reasonForDenial,\n has_admin_generated_password,\n company_website: website = '',\n is_design_firm,\n is_construction_firm,\n is_maintenance_firm,\n is_management_firm,\n}) {\n return {\n id,\n companyName: company_name,\n website,\n email: company_email,\n phone: company_phone,\n preferredContact: mapPreferredContact({\n email: prefer_email,\n phone: prefer_phone,\n }),\n ein,\n commercialActivityLicense: commercial_activity_license,\n signUpDate: created_at,\n approvedDate: approved_at,\n deactivatedDate: deactivated_at,\n deniedDate: denied_at,\n reasonForDenial,\n status,\n isEmailVerified: is_email_verified,\n retrofits: mapRetrofits({\n green_roof,\n cistern,\n subsurface_storage,\n permeable_pavement,\n rain_garden,\n }),\n otherRetrofit: other_retrofit,\n contactName: name,\n contactEmail: email,\n contactPhone: phone,\n hasWorkedOnGrant: has_worked_on_grant,\n hasBeenSubgrantee: has_been_subgrantee,\n hasAdminGeneratedPassword: has_admin_generated_password,\n isDesignFirm: is_design_firm,\n isConstructionFirm: is_construction_firm,\n isMaintenanceFirm: is_maintenance_firm,\n isManagementFirm: is_management_firm,\n };\n}\n\nfunction formatDeveloperResults(developers) {\n return developers.map(formatDeveloperResult);\n}\n\nexport function fetchDeveloperData() {\n return dispatch => {\n dispatch(startFetchDeveloperData());\n csrfRequest\n .get(retrofitDevelopersUrl)\n .then(({ data }) => formatDeveloperResults(data))\n .then(data => dispatch(completeFetchDeveloperData(data)))\n .catch(() => dispatch(failFetchDeveloperData()));\n };\n}\n\nfunction startFetchManagerData() {\n return {\n type: START_FETCH_MANAGER_DATA,\n };\n}\n\nfunction failFetchManagerData() {\n return {\n type: FAIL_FETCH_MANAGER_DATA,\n };\n}\n\nfunction completeFetchManagerData(payload) {\n return {\n type: COMPLETE_FETCH_MANAGER_DATA,\n payload,\n };\n}\n\nfunction mapManagerParcel(\n managerId,\n { id, parcel_id, address, building_type, selected_developers },\n) {\n return {\n id,\n parcelId: parcel_id,\n managerId,\n address,\n buildingType: building_type,\n selectedDevelopers: selected_developers,\n };\n}\n\nfunction mapManagerParcels(managerId, parcels) {\n if (!parcels) {\n return [];\n }\n\n return parcels.map(parcel => mapManagerParcel(managerId, parcel));\n}\n\nfunction formatManagerResult({\n id,\n email,\n name,\n phone,\n note,\n prefer_email,\n prefer_phone,\n parcels,\n cistern,\n green_roof,\n permeable_pavement,\n subsurface_storage,\n rain_garden,\n created_at,\n selected_developers: developersOfInterest = [],\n}) {\n return {\n id,\n propertyManager: name,\n contactEmail: email,\n contactPhone: phone,\n preferredContact: mapPreferredContact({\n email: prefer_email,\n phone: prefer_phone,\n }),\n noteToDevelopers: note || '',\n parcels: mapManagerParcels(id, parcels),\n developersOfInterest,\n signUpDate: created_at,\n retrofits: mapRetrofits({\n cistern,\n green_roof,\n permeable_pavement,\n subsurface_storage,\n rain_garden,\n }),\n };\n}\n\nexport function fetchManagerData() {\n return dispatch => {\n dispatch(startFetchManagerData());\n csrfRequest\n .get(propertyManagersUrl)\n .then(({ data }) => data.map(formatManagerResult))\n .then(data => dispatch(completeFetchManagerData(data)))\n .catch(() => dispatch(failFetchManagerData()));\n };\n}\n\nexport function startUpdateDeveloperStatus() {\n return {\n type: START_UPDATE_DEVELOPER_STATUS,\n };\n}\n\nexport function failUpdateDeveloperStatus(e) {\n window.console.warn(e);\n\n return {\n type: FAIL_UPDATE_DEVELOPER_STATUS,\n };\n}\n\nexport function completeUpdateDeveloperStatus(payload) {\n return {\n type: COMPLETE_UPDATE_DEVELOPER_STATUS,\n payload,\n };\n}\n\nexport function updateDeveloperStatus(id, oldStatus, status) {\n const isNewStatusAllowed = [\n developerStatusTypes.denied,\n developerStatusTypes.active,\n developerStatusTypes.deactivated,\n ].some(s => s === status);\n\n if (!isNewStatusAllowed) {\n throw new Error(`Invalid status type for update: ${status}`);\n }\n\n return (dispatch, getState) => {\n dispatch(startUpdateDeveloperStatus());\n\n const {\n adminDashboardPage: {\n developerEdit: {\n data: { reasonForDenial },\n },\n },\n } = getState();\n\n const newStatus =\n status === developerStatusTypes.denied\n ? {\n status,\n reason_for_denial: reasonForDenial,\n }\n : { status };\n\n return csrfRequest\n .patch(`${userUrl}${id}/`, newStatus)\n .then(({ data }) => formatDeveloperResult(data))\n .then(data => dispatch(completeUpdateDeveloperStatus(data)))\n .catch(e => dispatch(failUpdateDeveloperStatus(e)));\n };\n}\n\nexport function startResendEmailVerification() {\n return {\n type: START_RESEND_EMAIL_VERIFICATION,\n };\n}\n\nexport function failResendEmailVerification() {\n return {\n type: FAIL_RESEND_EMAIL_VERIFICATION,\n };\n}\n\nexport function completeResendEmailVerification() {\n return {\n type: COMPLETE_RESEND_EMAIL_VERIFICATION,\n };\n}\n\nexport function resendEmailVerification(id) {\n return dispatch => {\n dispatch(startResendEmailVerification());\n csrfRequest\n .get(`${resendEmailUrl}?user_id=${id}`)\n .then(() => dispatch(completeResendEmailVerification()))\n .catch(() => dispatch(failResendEmailVerification()));\n };\n}\n\nexport function toggleDeveloperFilterOption(payload) {\n return {\n type: TOGGLE_DEVELOPER_FILTER_OPTION,\n payload,\n };\n}\n\nexport function toggleManagerFilterOption(payload) {\n return {\n type: TOGGLE_MANAGER_FILTER_OPTION,\n payload,\n };\n}\n\nexport function updateDeveloperSearchText(payload) {\n return {\n type: UPDATE_DEVELOPER_SEARCH_TEXT,\n payload,\n };\n}\n\nexport function updateManagerSearchText(payload) {\n return {\n type: UPDATE_MANAGER_SEARCH_TEXT,\n payload,\n };\n}\n\nexport function startEditManager(managerId) {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n managers: { data },\n },\n } = getState();\n\n const editableManager = data.find(({ id }) => id === managerId);\n\n if (!editableManager) {\n throw new Error('Invalid manager id');\n }\n\n return dispatch({\n type: START_EDIT_MANAGER,\n payload: editableManager,\n });\n };\n}\n\nfunction startSaveManagerEdits() {\n return {\n type: START_SAVE_MANAGER_EDITS,\n };\n}\n\nfunction failSaveManagerEdits({ data = apiError }) {\n return {\n type: FAIL_SAVE_MANAGER_EDITS,\n payload: data,\n };\n}\n\nfunction completeSaveManagerEdits(payload) {\n return {\n type: COMPLETE_SAVE_MANAGER_EDITS,\n payload,\n };\n}\n\nfunction mapEditsToManagerData({\n id,\n propertyManager: name,\n contactEmail: email,\n contactPhone: phone,\n preferredContact,\n noteToDevelopers,\n}) {\n return {\n id,\n name,\n email,\n phone,\n prefer_email: ['email', 'both'].includes(preferredContact),\n prefer_phone: ['telephone', 'both'].includes(preferredContact),\n note: noteToDevelopers,\n };\n}\n\nfunction mapNewToManagerData(manager) {\n const { parcels, developersOfInterest } = manager;\n return Object.assign({}, mapEditsToManagerData(manager), {\n parcels,\n selected_developers: developersOfInterest,\n cistern: true,\n subsurface_storage: true,\n rain_garden: true,\n permeable_pavement: true,\n green_roof: true,\n });\n}\n\nfunction updateClientManagerData(data, managers) {\n return shallowUpdateData(formatManagerResult, data, managers);\n}\n\n/** Save a new manager or manager edits to the server. Merge changes with\n * state on completion.\n * @param requestPromise -- a function that takes a managerData object\n * and returns a csrf request promise that resolves\n * with the response\n */\nfunction saveManager(requestPromise, history) {\n return (dispatch, getState) => {\n dispatch(startSaveManagerEdits());\n\n const {\n adminDashboardPage: {\n managerEdit: { data: editedManagerData },\n managers: { data: managerData },\n },\n } = getState();\n\n requestPromise(editedManagerData)\n .then(({ data }) => ({\n managers: updateClientManagerData(data, managerData),\n updatedId: data.id,\n }))\n .then(({ managers, updatedId }) => {\n dispatch(completeSaveManagerEdits(managers));\n history.push(`${DASHBOARD_ROUTES.customer}/${updatedId}`);\n })\n .catch(({ response = {} }) =>\n dispatch(failSaveManagerEdits(response)),\n );\n };\n}\n\nexport function saveManagerEdits(history) {\n const requestPromise = data =>\n csrfRequest.put(\n makePropertyManagerEditUrl(data.id),\n mapEditsToManagerData(data),\n );\n return saveManager(requestPromise, history);\n}\n\nexport function saveNewManager(history) {\n const requestPromise = data =>\n csrfRequest.post(addPropertyManagerUrl, mapNewToManagerData(data));\n return saveManager(requestPromise, history);\n}\n\nexport function stopEditManager() {\n return {\n type: STOP_EDIT_MANAGER,\n };\n}\n\nexport function stopNewManager(history) {\n return dispatch => {\n history.push(DASHBOARD_ROUTES.customers);\n dispatch(stopEditManager());\n };\n}\n\nexport function editManagerName(payload) {\n return {\n type: EDIT_MANAGER_NAME,\n payload,\n };\n}\n\nexport function editManagerEmail(payload) {\n return {\n type: EDIT_MANAGER_EMAIL,\n payload,\n };\n}\n\nexport function editManagerPhone(payload) {\n return {\n type: EDIT_MANAGER_PHONE,\n payload,\n };\n}\n\nexport function editManagerPreferredContact(payload) {\n return {\n type: EDIT_MANAGER_PREFERRED_CONTACT,\n payload,\n };\n}\n\nexport function editManagerNote(payload) {\n return {\n type: EDIT_MANAGER_NOTE,\n payload,\n };\n}\n\nexport function startEditDeveloper(developerId) {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n developers: { data },\n },\n } = getState();\n\n const editableDeveloper = data.find(({ id }) => id === developerId);\n\n if (!editableDeveloper) {\n throw new Error('Invalid developer id');\n }\n\n return dispatch({\n type: START_EDIT_DEVELOPER,\n payload: editableDeveloper,\n });\n };\n}\n\nexport function editDeveloperCompanyName(payload) {\n return {\n type: EDIT_DEVELOPER_COMPANY_NAME,\n payload,\n };\n}\n\nexport function editDeveloperWebsite(payload) {\n return {\n type: EDIT_DEVELOPER_WEBSITE,\n payload,\n };\n}\n\nexport function editDeveloperEmail(payload) {\n return {\n type: EDIT_DEVELOPER_EMAIL,\n payload,\n };\n}\n\nexport function editDeveloperPhone(payload) {\n return {\n type: EDIT_DEVELOPER_PHONE,\n payload,\n };\n}\n\nexport function editDeveloperContactPreference(payload) {\n return {\n type: EDIT_DEVELOPER_PREFERRED_CONTACT,\n payload,\n };\n}\n\nexport function editDeveloperEIN(payload) {\n return {\n type: EDIT_DEVELOPER_EIN,\n payload,\n };\n}\n\nexport function editDeveloperCAL(payload) {\n return {\n type: EDIT_DEVELOPER_CAL,\n payload,\n };\n}\n\nexport function editDeveloperOtherRetrofit(payload) {\n return {\n type: EDIT_DEVELOPER_OTHER_RETROFIT,\n payload,\n };\n}\n\nexport function editDeveloperSpecialties(retrofit) {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n developerEdit: {\n data: { retrofits },\n },\n },\n } = getState();\n\n const payload = retrofits.includes(retrofit)\n ? retrofits.filter(r => r !== retrofit)\n : retrofits.concat(retrofit);\n\n return dispatch({\n type: EDIT_DEVELOPER_SPECIALTIES,\n payload,\n });\n };\n}\n\nexport function editDeveloperGrantApproval() {\n return {\n type: EDIT_DEVELOPER_GRANT_APPROVAL,\n };\n}\n\nexport function editDeveloperSubgrantApproval() {\n return {\n type: EDIT_DEVELOPER_SUBGRANT_APPROVAL,\n };\n}\n\nexport function editDeveloperDesignServices() {\n return {\n type: EDIT_DEVELOPER_DESIGN_SERVICES,\n };\n}\n\nexport function editDeveloperConstructionServices() {\n return {\n type: EDIT_DEVELOPER_CONSTRUCTION_SERVICES,\n };\n}\n\nexport function editDeveloperMaintenanceServices() {\n return {\n type: EDIT_DEVELOPER_MAINTENANCE_SERVICES,\n };\n}\n\nexport function editDeveloperManagementServices() {\n return {\n type: EDIT_DEVELOPER_MANAGEMENT_SERVICES,\n };\n}\n\nexport function editDeveloperContactName(payload) {\n return {\n type: EDIT_DEVELOPER_CONTACT_NAME,\n payload,\n };\n}\n\nexport function editDeveloperContactEmail(payload) {\n return {\n type: EDIT_DEVELOPER_CONTACT_EMAIL,\n payload,\n };\n}\n\nexport function editDeveloperContactPhone(payload) {\n return {\n type: EDIT_DEVELOPER_CONTACT_PHONE,\n payload,\n };\n}\n\nexport function editDeveloperReasonForDenial(payload) {\n return {\n type: EDIT_DEVELOPER_REASON_FOR_DENIAL,\n payload,\n };\n}\n\nexport function stopEditDeveloper() {\n return {\n type: STOP_EDIT_DEVELOPER,\n };\n}\nfunction startSaveDeveloperEdits() {\n return {\n type: START_SAVE_DEVELOPER_EDITS,\n };\n}\n\nfunction failSaveDeveloperEdits({ data = apiError }) {\n return {\n type: FAIL_SAVE_DEVELOPER_EDITS,\n payload: data,\n };\n}\n\nfunction completeSaveDeveloperEdits(payload) {\n return {\n type: COMPLETE_SAVE_DEVELOPER_EDITS,\n payload,\n };\n}\n\nexport function stopNewDeveloper(history) {\n return dispatch => {\n history.push(DASHBOARD_ROUTES.vendors);\n dispatch(stopEditDeveloper());\n };\n}\n\nfunction mapEditsToDeveloperData({\n id,\n companyName,\n website,\n email,\n phone,\n preferredContact,\n ein,\n commercialActivityLicense,\n hasWorkedOnGrant,\n hasBeenSubgrantee,\n retrofits,\n contactEmail,\n contactPhone,\n contactName,\n otherRetrofit,\n reasonForDenial,\n isDesignFirm,\n isConstructionFirm,\n isMaintenanceFirm,\n isManagementFirm,\n}) {\n return {\n id,\n ein,\n company_name: companyName,\n company_email: email,\n company_phone: phone,\n company_website: website,\n prefer_email: preferredContact === preferredContactTypes.email,\n prefer_phone: preferredContact === preferredContactTypes.telephone,\n commercial_activity_license: commercialActivityLicense,\n has_worked_on_grant: hasWorkedOnGrant,\n has_been_subgrantee: hasBeenSubgrantee,\n rain_garden: retrofits.includes('rain garden'),\n subsurface_storage: retrofits.includes('subsurface storage'),\n cistern: retrofits.includes('cistern'),\n green_roof: retrofits.includes('green roof'),\n permeable_pavement: retrofits.includes('permeable pavement'),\n other_retrofit: otherRetrofit,\n email: contactEmail,\n name: contactName,\n phone: contactPhone,\n reason_for_denial: reasonForDenial,\n is_design_firm: isDesignFirm,\n is_construction_firm: isConstructionFirm,\n is_maintenance_firm: isMaintenanceFirm,\n is_management_firm: isManagementFirm,\n };\n}\n\nfunction mapNewToDeveloperData(developer) {\n const { password, status } = developer;\n return Object.assign({}, mapEditsToDeveloperData(developer), {\n password,\n status,\n });\n}\n\nfunction updateClientDeveloperData(data, developers) {\n return shallowUpdateData(formatDeveloperResult, data, developers);\n}\n\n/** Save a new developer or developer edits to the server. Merge changes with\n * state on completion.\n * @param requestPromise -- a function that takes a developerData object\n * and returns a csrf request promise that resolves\n * with the response\n */\nfunction saveDeveloper(requestPromise, history) {\n return (dispatch, getState) => {\n dispatch(startSaveDeveloperEdits(history));\n const {\n adminDashboardPage: {\n developerEdit: { data: editedDeveloperData },\n developers: { data: developerData },\n },\n } = getState();\n\n requestPromise(editedDeveloperData)\n .then(({ data }) => ({\n developers: updateClientDeveloperData(data, developerData),\n updatedId: data.id,\n }))\n .then(({ developers, updatedId }) => {\n dispatch(completeSaveDeveloperEdits(developers));\n history.push(`${DASHBOARD_ROUTES.vendor}/${updatedId}`);\n })\n .catch(({ response = {} }) =>\n dispatch(failSaveDeveloperEdits(response)),\n );\n };\n}\n\nexport function saveDeveloperEdits(history) {\n const requestPromise = developerData =>\n csrfRequest.patch(\n makeRetrofitDeveloperEditUrl(developerData.id),\n mapEditsToDeveloperData(developerData),\n );\n return saveDeveloper(requestPromise, history);\n}\n\nexport function saveNewDeveloper(history) {\n const requestPromise = developerData =>\n csrfRequest.post(\n addRetrofitDeveloperUrl,\n mapNewToDeveloperData(developerData),\n );\n return saveDeveloper(requestPromise, history);\n}\n\nfunction startRemoveDeveloperOfInterest() {\n return {\n type: START_REMOVE_DEVELOPER_OF_INTEREST,\n };\n}\n\nfunction failRemoveDeveloperOfInterest() {\n return {\n type: FAIL_REMOVE_DEVELOPER_OF_INTEREST,\n };\n}\n\nfunction dropRemovedDevelopers(parcel, manager, developer, managerData) {\n const updatedManagerIndex = managerData.findIndex(\n ({ id }) => id === manager,\n );\n\n if (updatedManagerIndex === -1) {\n throw new Error('Invalid customer id');\n }\n\n const parcelData = managerData[updatedManagerIndex].parcels;\n const updatedParcelIndex = parcelData.findIndex(({ id }) => id === parcel);\n const priorSelectedDevelopers =\n parcelData[updatedParcelIndex].selectedDevelopers;\n\n const numParcelsThisDeveloper = parcelData.filter(\n ({ selectedDevelopers }) => selectedDevelopers.includes(developer),\n ).length;\n const newDevelopersOfInterest = managerData[\n updatedManagerIndex\n ].developersOfInterest.filter(\n devId => devId !== developer || numParcelsThisDeveloper > 1,\n );\n\n return [\n ...managerData.slice(0, updatedManagerIndex),\n Object.assign({}, managerData[updatedManagerIndex], {\n parcels: [\n ...parcelData.slice(0, updatedParcelIndex),\n Object.assign({}, parcelData[updatedParcelIndex], {\n selectedDevelopers: priorSelectedDevelopers.filter(\n id => id !== developer,\n ),\n }),\n ...parcelData.slice(updatedParcelIndex + 1),\n ],\n developersOfInterest: newDevelopersOfInterest,\n }),\n ...managerData.slice(updatedManagerIndex + 1),\n ];\n}\n\nfunction completeRemoveDeveloperOfInterest(parcel, manager, developer) {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n managers: { data },\n },\n } = getState();\n\n return dispatch({\n type: COMPLETE_REMOVE_INTERESTED_MANAGER,\n payload: dropRemovedDevelopers(parcel, manager, developer, data),\n });\n };\n}\n\nexport function removeDeveloperOfInterest(parcel, manager, developer) {\n return dispatch => {\n dispatch(startRemoveDeveloperOfInterest());\n csrfRequest\n .delete(\n makeRemoveDeveloperOfInterestUrl(parcel, manager, developer),\n )\n .then(() =>\n dispatch(\n completeRemoveDeveloperOfInterest(\n parcel,\n manager,\n developer,\n ),\n ),\n )\n .catch(() => dispatch(failRemoveDeveloperOfInterest()));\n };\n}\n\nfunction startRemoveInterestedManager() {\n return {\n type: START_REMOVE_INTERESTED_MANAGER,\n };\n}\n\nfunction failRemoveInterestedManager() {\n return {\n type: FAIL_REMOVE_INTERESTED_MANAGER,\n };\n}\n\nfunction completeRemoveInterestedManager(developer, manager) {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n managers: { data },\n },\n } = getState();\n\n return dispatch({\n type: COMPLETE_REMOVE_INTERESTED_MANAGER,\n payload: dropRemovedDevelopers(manager, developer, data),\n });\n };\n}\n\nexport function removeInterestedManager(developer, manager) {\n return dispatch => {\n dispatch(startRemoveInterestedManager());\n csrfRequest\n .delete(makeRemoveInterestedManagerUrl(developer, manager))\n .then(() =>\n dispatch(completeRemoveInterestedManager(developer, manager)),\n )\n .catch(() => dispatch(failRemoveInterestedManager()));\n };\n}\n\nfunction startRemoveManagerParcel() {\n return {\n type: START_REMOVE_MANAGER_PARCEL,\n };\n}\n\nfunction failRemoveManagerParcel() {\n return {\n type: FAIL_REMOVE_MANAGER_PARCEL,\n };\n}\n\nfunction completeRemoveManagerParcel(removedDevelopers, parcel) {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n managers: { data },\n },\n } = getState();\n\n const updatedManagerIndex = data.findIndex(({ parcels }) =>\n parcels.map(({ id }) => id).includes(parcel),\n );\n\n if (updatedManagerIndex === -1) {\n throw new Error('Invalid customer id');\n }\n\n return dispatch({\n type: COMPLETE_REMOVE_MANAGER_PARCEL,\n payload: [\n ...data.slice(0, updatedManagerIndex),\n Object.assign({}, data[updatedManagerIndex], {\n developersOfInterest: data[\n updatedManagerIndex\n ].developersOfInterest.filter(\n id => !removedDevelopers.includes(id),\n ),\n parcels: data[updatedManagerIndex].parcels.filter(\n ({ id }) => id !== parcel,\n ),\n }),\n ...data.slice(updatedManagerIndex + 1),\n ],\n });\n };\n}\n\nexport function removeManagerParcel(parcel) {\n return dispatch => {\n dispatch(startRemoveManagerParcel());\n csrfRequest\n .delete(makeRemoveParcelUrl(parcel))\n .then(({ data }) =>\n dispatch(completeRemoveManagerParcel(data, parcel)),\n )\n .catch(() => dispatch(failRemoveManagerParcel()));\n };\n}\n\nexport function hideErrorModal() {\n return {\n type: HIDE_ERROR_MODAL,\n };\n}\n\nfunction getNextDashboardSortDirection(currentDirection) {\n const { ascending, descending, none } = dashboardSortOrderEnum;\n\n switch (currentDirection) {\n case none:\n case descending:\n return ascending;\n case ascending:\n return descending;\n default:\n return none;\n }\n}\n\nexport function sortManagerDashboardName() {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n managers: {\n sortOrder: { name },\n },\n },\n } = getState();\n\n return dispatch({\n type: SORT_MANAGER_DASHBOARD_NAME,\n payload: getNextDashboardSortDirection(name),\n });\n };\n}\n\nexport function sortManagerDashboardEmail() {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n managers: {\n sortOrder: { email },\n },\n },\n } = getState();\n\n return dispatch({\n type: SORT_MANAGER_DASHBOARD_EMAIL,\n payload: getNextDashboardSortDirection(email),\n });\n };\n}\n\nexport function sortManagerDashboardSignUpDate() {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n managers: {\n sortOrder: { signupDate },\n },\n },\n } = getState();\n\n return dispatch({\n type: SORT_MANAGER_DASHBOARD_SIGNUP_DATE,\n payload: getNextDashboardSortDirection(signupDate),\n });\n };\n}\n\nexport function sortManagerDashboardPropertyCount() {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n managers: {\n sortOrder: { propertyCount },\n },\n },\n } = getState();\n\n return dispatch({\n type: SORT_MANAGER_DASHBOARD_PROPERTY_COUNT,\n payload: getNextDashboardSortDirection(propertyCount),\n });\n };\n}\n\nexport function sortManagerDashboardInterestedCount() {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n managers: {\n sortOrder: { interestedCount },\n },\n },\n } = getState();\n\n return dispatch({\n type: SORT_MANAGER_DASHBOARD_INTERESTED_COUNT,\n payload: getNextDashboardSortDirection(interestedCount),\n });\n };\n}\n\nexport function sortDeveloperDashboardCompany() {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n developers: {\n sortOrder: { company },\n },\n },\n } = getState();\n\n return dispatch({\n type: SORT_DEVELOPER_DASHBOARD_COMPANY,\n payload: getNextDashboardSortDirection(company),\n });\n };\n}\n\nexport function sortDeveloperDashboardWebsite() {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n developers: {\n sortOrder: { website },\n },\n },\n } = getState();\n\n return dispatch({\n type: SORT_DEVELOPER_DASHBOARD_WEBSITE,\n payload: getNextDashboardSortDirection(website),\n });\n };\n}\n\nexport function sortDeveloperDashboardSignUpDate() {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n developers: {\n sortOrder: { signupDate },\n },\n },\n } = getState();\n\n return dispatch({\n type: SORT_DEVELOPER_DASHBOARD_SIGNUP_DATE,\n payload: getNextDashboardSortDirection(signupDate),\n });\n };\n}\n\nexport function sortDeveloperDashboardInterestedCount() {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n developers: {\n sortOrder: { interestedCount },\n },\n },\n } = getState();\n\n return dispatch({\n type: SORT_DEVELOPER_DASHBOARD_INTERESTED_COUNT,\n payload: getNextDashboardSortDirection(interestedCount),\n });\n };\n}\n\nexport function sortDeveloperDashboardStatus() {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n developers: {\n sortOrder: { status },\n },\n },\n } = getState();\n\n return dispatch({\n type: SORT_DEVELOPER_DASHBOARD_STATUS,\n payload: getNextDashboardSortDirection(status),\n });\n };\n}\n\nexport function updateParcelSearchValue(value) {\n return {\n type: UPDATE_PARCEL_SEARCH_VALUE,\n payload: value,\n };\n}\n\nexport function searchParcel() {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n addParcel: { searchText },\n },\n } = getState();\n\n if (!searchText) {\n return null;\n }\n\n const trimmedValue = searchText.trim();\n\n return /^\\d+$/.test(trimmedValue)\n ? dispatch(fetchSingleParcel(trimmedValue))\n : dispatch(performGeocoderSearch(trimmedValue));\n };\n}\n\nexport function startAddManagerParcel() {\n return {\n type: START_ADD_MANAGER_PARCEL,\n };\n}\n\nexport function failAddManagerParcel(e) {\n return {\n type: FAIL_ADD_MANAGER_PARCEL,\n payload: e,\n };\n}\n\nexport function completeAddManagerParcel(managerId, parcelData) {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n managers: { data },\n },\n } = getState();\n\n const updatedManagerIndex = data.findIndex(\n ({ id }) => id === managerId,\n );\n\n if (updatedManagerIndex === -1) {\n throw new Error('Invalid customer id');\n }\n\n return dispatch({\n type: COMPLETE_ADD_MANAGER_PARCEL,\n payload: [\n ...data.slice(0, updatedManagerIndex),\n Object.assign({}, data[updatedManagerIndex], {\n parcels: [\n ...data[updatedManagerIndex].parcels,\n mapManagerParcel(managerId, parcelData),\n ],\n }),\n ...data.slice(updatedManagerIndex + 1),\n ],\n });\n };\n}\n\nfunction formatAddManagerParcelError(e) {\n if (e.response && e.response.data && e.response.data.parcel_id) {\n return 'This property is already associated with a customer.';\n }\n return 'An unepected error occurred while attempting to add the property.';\n}\n\nexport function addManagerParcel(managerId, { Parcel: parcel }) {\n return dispatch => {\n dispatch(startAddManagerParcel());\n const parcelData = {\n parcel_id: parcel.ParcelID,\n property_manager: managerId,\n address: parcel.Address,\n building_type: parcel.BldgType,\n };\n csrfRequest\n .post(addManagerParcelUrl, parcelData)\n .then(({ data }) => {\n dispatch(completeAddManagerParcel(managerId, data));\n })\n .catch(e =>\n dispatch(failAddManagerParcel(formatAddManagerParcelError(e))),\n );\n };\n}\n\nfunction startSendDeveloperPasswordResetEmail() {\n return {\n type: START_SEND_DEVELOPER_PASSWORD_RESET_EMAIL,\n };\n}\n\nfunction failSendDeveloperPasswordResetEmail() {\n return {\n type: FAIL_SEND_DEVELOPER_PASSWORD_RESET_EMAIL,\n };\n}\n\nfunction completeSendDeveloperPasswordResetEmail() {\n return {\n type: COMPLETE_SEND_DEVELOPER_PASSWORD_RESET_EMAIL,\n };\n}\n\nexport function sendDeveloperPasswordResetEmail(id) {\n return (dispatch, getState) => {\n dispatch(startSendDeveloperPasswordResetEmail());\n\n const {\n adminDashboardPage: {\n developers: { data },\n },\n } = getState();\n\n const { email } = data.find(\n ({ id: developerId }) => developerId === id,\n );\n\n return csrfRequest\n .post(resetDeveloperPasswordUrl, {\n email,\n })\n .then(() => dispatch(completeSendDeveloperPasswordResetEmail()))\n .catch(() => dispatch(failSendDeveloperPasswordResetEmail()));\n };\n}\n\nexport function resetManagerTableFiltersAndSorts() {\n return {\n type: RESET_MANAGER_TABLE_FILTERS_AND_SORTS,\n };\n}\n\nexport function resetDeveloperTableFiltersAndSorts() {\n return {\n type: RESET_DEVELOPER_TABLE_FILTERS_AND_SORTS,\n };\n}\n\nexport function showAddParcelModal() {\n return {\n type: SHOW_ADD_PARCEL_MODAL,\n };\n}\n\nexport function hideAddParcelModal() {\n return {\n type: HIDE_ADD_PARCEL_MODAL,\n };\n}\n\nexport function updateGeocoderSearchText(payload) {\n return {\n type: UPDATE_GEOCODER_SEARCH_TEXT,\n payload,\n };\n}\n\nexport function updateParcelRetrofits(retrofit) {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n addParcel: { retrofits, developers },\n developers: { data: developerData },\n },\n } = getState();\n\n const updatedRetrofits = retrofits.includes(retrofit)\n ? retrofits.filter(r => r !== retrofit)\n : retrofits.concat(retrofit);\n\n const updatedDevelopers = developerData\n .filter(\n ({ id, retrofits: devRetrofits }) =>\n developers.includes(id) &&\n retrofits.some(r => devRetrofits.includes(r)),\n )\n .map(({ id }) => id);\n\n return dispatch({\n type: UPDATE_PARCEL_RETROFITS,\n payload: {\n updatedRetrofits,\n updatedDevelopers,\n },\n });\n };\n}\n\nexport function handleSelectAllDevelopers(payload) {\n return {\n type: UPDATE_PARCEL_DEVELOPERS,\n payload,\n };\n}\n\nexport function handleUnselectAllDevelopers() {\n return {\n type: UPDATE_PARCEL_DEVELOPERS,\n payload: [],\n };\n}\n\nexport function updateParcelDevelopers(id) {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n addParcel: { developers },\n },\n } = getState();\n\n return dispatch({\n type: UPDATE_PARCEL_DEVELOPERS,\n payload: developers.includes(id)\n ? developers.filter(developer => developer !== id)\n : developers.concat(id),\n });\n };\n}\n\nfunction startSaveAddedParcel() {\n return {\n type: START_SAVE_ADDED_PARCEL,\n };\n}\n\nfunction failSaveAddedParcel(e) {\n window.console.warn(e);\n\n return {\n type: FAIL_SAVE_ADDED_PARCEL,\n };\n}\n\nfunction completeSaveAddedParcel(parcel) {\n return (dispatch, getState) => {\n const {\n adminDashboardPage: {\n managers: { data },\n },\n } = getState();\n\n const updatedManagerIndex = data.findIndex(\n ({ id }) => id === parcel.property_manager,\n );\n\n if (updatedManagerIndex < 0) {\n throw new Error('Invalid customer id');\n }\n\n const payload = [\n ...data.slice(0, updatedManagerIndex),\n Object.assign({}, data[updatedManagerIndex], {\n parcels: [\n ...data[updatedManagerIndex].parcels,\n mapManagerParcel(parcel.property_manager, parcel),\n ],\n developersOfInterest: data[\n updatedManagerIndex\n ].developersOfInterest\n .concat(parcel.selected_developers)\n .reduce(\n (acc, next) =>\n acc.concat(acc.includes(next) ? [] : next),\n [],\n ),\n }),\n ...data.slice(updatedManagerIndex + 1),\n ];\n\n return dispatch({\n type: COMPLETE_SAVE_ADDED_PARCEL,\n payload,\n });\n };\n}\n\nexport function saveAddedParcel(managerId) {\n return (dispatch, getState) => {\n dispatch(startSaveAddedParcel());\n\n const {\n adminDashboardPage: {\n addParcel: {\n data: {\n Parcel: { Address, ParcelID, BldgType },\n },\n developers,\n retrofits,\n },\n },\n } = getState();\n\n return csrfRequest\n .post(addManagerParcelUrl, {\n address: Address,\n parcel_id: ParcelID,\n building_type: BldgType,\n property_manager: managerId,\n selected_developers: developers,\n cistern: retrofits.includes('cistern'),\n green_roof: retrofits.includes('green roof'),\n permeable_pavement: retrofits.includes('permeable pavement'),\n subsurface_storage: retrofits.includes('subsurface storage'),\n rain_garden: retrofits.includes('rain garden'),\n })\n .then(({ data }) => dispatch(completeSaveAddedParcel(data)))\n .catch(e => dispatch(failSaveAddedParcel(e)));\n };\n}\n\nexport function resetAdminDashboard() {\n return {\n type: RESET_ADMIN_DASHBOARD,\n };\n}\n\nfunction startDeleteManager() {\n return {\n type: START_DELETE_MANAGER,\n };\n}\n\nfunction failDeleteManager(e) {\n window.console.warn(e);\n\n return {\n type: FAIL_DELETE_MANAGER,\n };\n}\n\nfunction completeDeleteManager(history) {\n return dispatch => {\n history.push(DASHBOARD_ROUTES.customers);\n\n return dispatch({\n type: COMPLETE_DELETE_MANAGER,\n });\n };\n}\n\nexport function deleteManager(deletedManagerID, history) {\n return dispatch => {\n dispatch(startDeleteManager());\n\n return csrfRequest\n .delete(makePropertyManagerEditUrl(deletedManagerID))\n .then(() => dispatch(completeDeleteManager(history)))\n .catch(e => dispatch(failDeleteManager(e)));\n };\n}\n","import sortBy from 'lodash/sortBy';\nimport {\n dashboardSortOrderEnum,\n developerStatusTypes,\n sortableManagerTableColumns,\n sortableDeveloperTableColumns,\n} from './constants';\n\nexport function normalizeAddParcelData({ Parcel, X, Y }) {\n return {\n Parcel,\n X,\n Y,\n };\n}\n\nconst sortByFields = (data, fields, direction) => {\n if (direction === dashboardSortOrderEnum.ascending) {\n return sortBy(data, fields);\n }\n\n return sortBy(data, fields).reverse();\n};\n\nconst getStatusString = ({ status }) => {\n const [statusString] = Object.entries(developerStatusTypes)\n .filter(([, statusId]) => status === statusId)\n .reduce((acc, [h]) => acc.concat(h), []);\n return statusString;\n};\n\nconst getSignUpDate = ({ signUpDate }) => new Date(signUpDate).getTime();\n\nexport function sortManagerData(managerData, [sort, direction] = []) {\n if (!sort) {\n return managerData;\n }\n\n switch (sort) {\n case sortableManagerTableColumns.name:\n return sortByFields(\n managerData,\n ['propertyManager', getSignUpDate],\n direction,\n );\n case sortableManagerTableColumns.email:\n return sortByFields(\n managerData,\n ['contactEmail', getSignUpDate],\n direction,\n );\n case sortableManagerTableColumns.signupDate:\n return sortByFields(managerData, [getSignUpDate], direction);\n case sortableManagerTableColumns.interestedCount:\n return sortByFields(\n managerData,\n [({ developersOfInterest: di }) => di.length, getSignUpDate],\n direction,\n );\n case sortableManagerTableColumns.propertyCount:\n return sortByFields(\n managerData,\n [({ parcels }) => parcels.length, getSignUpDate],\n direction,\n );\n default:\n return managerData;\n }\n}\n\nexport function sortDeveloperData(\n developerData,\n managerData,\n [sort, direction] = [],\n) {\n if (!sort) {\n return developerData;\n }\n\n switch (sort) {\n case sortableDeveloperTableColumns.company:\n return sortByFields(\n developerData,\n ['companyName', getSignUpDate],\n direction,\n );\n case sortableDeveloperTableColumns.website:\n return sortByFields(\n developerData,\n ['website', getSignUpDate],\n direction,\n );\n case sortableDeveloperTableColumns.status:\n return sortByFields(\n developerData,\n [getStatusString, getSignUpDate],\n direction,\n );\n case sortableDeveloperTableColumns.signupDate:\n return sortByFields(developerData, [getSignUpDate], direction);\n case sortableDeveloperTableColumns.interestedCount:\n return sortByFields(\n developerData,\n [\n ({ id }) =>\n managerData.filter(({ developersOfInterest: di }) =>\n di.includes(id),\n ).length,\n getSignUpDate,\n ],\n direction,\n );\n default:\n return developerData;\n }\n}\n\nexport const createConfirmationModalStyle = (content = Object.freeze({})) =>\n Object.freeze({\n overlay: Object.freeze({\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(62, 69, 77, 0.65)',\n zIndex: 11000,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }),\n content: Object.assign(\n {},\n Object.freeze({\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: 'rgb(255, 255, 255) none repeat scroll 0% 0%',\n }),\n content,\n ),\n });\n","import csrfRequest from '../../../common/csrfRequest';\nimport { clearGeocoderSearch } from '../../../geocoder/actions';\nimport { toggleGeocoder } from '../../actions';\nimport { uiSections } from '../../constants';\n\nimport { makePreferencesUrl, allRetrofitsUnselected } from './constants';\n\nexport const START_FETCH_PREFERENCES_DATA = 'START_FETCH_PREFERENCES_DATA';\nexport const COMPLETE_FETCH_PREFERENCES_DATA =\n 'COMPLETE_FETCH_PREFERENCES_DATA';\nexport const FAIL_FETCH_PREFERENCES_DATA = 'FAIL_FETCH_PREFERENCES_DATA';\nexport const STORE_UUID = 'STORE_UUID';\nexport const START_UNSUBSCRIBE_PARCEL = 'START_UNSUBSCRIBE_PARCEL';\nexport const COMPLETE_UNSUBSCRIBE_PARCEL = 'COMPLETE_UNSUBSCRIBE_PARCEL';\nexport const FAIL_UNSUBSCRIBE_PARCEL = 'FAIL_UNSUBSCRIBE_PARCEL';\nexport const START_UPDATE_EDITED_PARCEL = 'START_UPDATE_EDITED_PARCEL';\nexport const COMPLETE_UPDATE_EDITED_PARCEL = 'COMPLETE_UPDATE_EDITED_PARCEL';\nexport const FAIL_UPDATE_EDITED_PARCEL = 'FAIL_UPDATE_EDITED_PARCEL';\n\nexport const SELECT_GEOCODER_RESULT = 'SELECT_GEOCODER_RESULT';\nexport const SHOW_EDIT_PREFERENCES_MODAL = 'SHOW_EDIT_PREFERENCES_MODAL';\nexport const HIDE_EDIT_PREFERENCES_MODAL = 'HIDE_EDIT_PREFERENCES_MODAL';\nexport const SHOW_CONFIRM_UNSUBSCRIBE_MODAL = 'SHOW_CONFIRM_UNSUBSCRIBE_MODAL';\nexport const HIDE_CONFIRM_UNSUBSCRIBE_MODAL = 'HIDE_CONFIRM_UNSUBSCRIBE_MODAL';\n\nexport const TOGGLE_RETROFIT_PREFERENCE = 'TOGGLE_RETROFIT_PREFERENCE';\nexport const TOGGLE_RETROFIT_PREFERENCE_AND_UPDATE_DEVELOPERS =\n 'TOGGLE_RETROFIT_PREFERENCE_AND_UPDATE_DEVELOPERS';\nexport const CHANGE_SELECTED_DEVELOPERS = 'CHANGE_SELECTED_DEVELOPERS';\nexport const TOGGLE_ACCEPTS_CONTACTS = 'TOGGLE_ACCEPTS_CONTACTS';\n\nexport const SHOW_SUCCESS_TOAST = 'SHOW_SUCCESS_TOAST';\nexport const HIDE_SUCCESS_TOAST = 'HIDE_SUCCESS_TOAST';\n\nfunction startFetchPreferencesData() {\n return {\n type: START_FETCH_PREFERENCES_DATA,\n };\n}\n\nfunction completeFetchPreferencesData(payload) {\n return {\n type: COMPLETE_FETCH_PREFERENCES_DATA,\n payload,\n };\n}\n\nfunction failFetchPreferencesData() {\n return {\n type: FAIL_FETCH_PREFERENCES_DATA,\n };\n}\n\nfunction storeUUID(payload) {\n return {\n type: STORE_UUID,\n payload,\n };\n}\n\nexport function fetchPreferencesData(uuid) {\n return dispatch => {\n dispatch(storeUUID(uuid));\n dispatch(startFetchPreferencesData());\n\n return csrfRequest\n .get(makePreferencesUrl(uuid))\n .then(({ data }) => dispatch(completeFetchPreferencesData(data)))\n .catch(() => dispatch(failFetchPreferencesData()));\n };\n}\n\nfunction startUnsubscribeParcel() {\n return {\n type: START_UNSUBSCRIBE_PARCEL,\n };\n}\n\nfunction completeUnsubscribeParcel({ parcel_id: parcelId }) {\n return (dispatch, getState) => {\n const {\n customers: {\n preferences: {\n parcels: { data },\n },\n },\n geocoder: { selectedResult },\n } = getState();\n\n const payload = data.filter(({ parcel_id: id }) => id !== parcelId);\n\n if (selectedResult) {\n dispatch(clearGeocoderSearch());\n dispatch(toggleGeocoder(uiSections.PreferencesForm));\n }\n\n return dispatch({\n type: COMPLETE_UNSUBSCRIBE_PARCEL,\n payload,\n });\n };\n}\n\nfunction failUnsubscribeParcel() {\n return {\n type: FAIL_UNSUBSCRIBE_PARCEL,\n };\n}\n\nexport function unsubscribeParcel(parcelId) {\n return (dispatch, getState) => {\n dispatch(startUnsubscribeParcel());\n const {\n customers: {\n preferences: {\n uuid,\n parcels: { data },\n },\n },\n } = getState();\n\n const unsubscribedParcel = data.find(\n ({ parcel_id: id }) => parcelId === id,\n );\n\n csrfRequest\n .delete(makePreferencesUrl(uuid), {\n data: {\n parcel_ids: [Number(parcelId)],\n },\n })\n .then(() => dispatch(completeUnsubscribeParcel(unsubscribedParcel)))\n .catch(() => dispatch(failUnsubscribeParcel()));\n };\n}\n\nexport function showConfirmUnsubscribeModal(payload) {\n return {\n type: SHOW_CONFIRM_UNSUBSCRIBE_MODAL,\n payload,\n };\n}\n\nexport function hideConfirmUnsubscribeModal() {\n return {\n type: HIDE_CONFIRM_UNSUBSCRIBE_MODAL,\n };\n}\n\nexport function showEditPreferencesModal(parcelId) {\n return (dispatch, getState) => {\n const {\n customers: {\n preferences: {\n parcels: { data },\n },\n },\n } = getState();\n\n return dispatch({\n type: SHOW_EDIT_PREFERENCES_MODAL,\n payload: data.find(({ parcel_id: id }) => parcelId === id),\n });\n };\n}\n\nexport function hideEditPreferencesModal() {\n return {\n type: HIDE_EDIT_PREFERENCES_MODAL,\n };\n}\n\nfunction mapRetrofitPreferencesToList({\n cistern,\n green_roof,\n subsurface_storage,\n permeable_pavement,\n rain_garden,\n}) {\n return Object.entries({\n cistern,\n green_roof,\n subsurface_storage,\n permeable_pavement,\n rain_garden,\n }).reduce((acc, [key, val]) => acc.concat(val ? key : []), []);\n}\n\nexport function toggleRetrofitPreference(sender = null) {\n return (dispatch, getState) => {\n const {\n customers: {\n preferences: {\n editPreferencesModal: { editableParcel },\n },\n main: {\n developers: { data: developerData },\n },\n },\n } = getState();\n\n if (!sender) {\n return dispatch({\n type: TOGGLE_RETROFIT_PREFERENCE,\n payload: Object.assign(\n {},\n ...[editableParcel, allRetrofitsUnselected],\n ),\n });\n }\n\n const parcelWithUpdatedRetrofits = Object.assign({}, editableParcel, {\n [sender]: !editableParcel[sender],\n });\n\n const updatedRetrofits = mapRetrofitPreferencesToList(\n parcelWithUpdatedRetrofits,\n );\n\n const updatedDevelopers = editableParcel.selected_developers.filter(\n developerId => {\n if (!updatedRetrofits.length) {\n return true;\n }\n\n const developer = developerData.find(\n ({ id }) => id === developerId,\n );\n\n return developer\n ? updatedRetrofits.some(r =>\n developer.retrofits.includes(r),\n )\n : false;\n },\n );\n\n const payload = Object.assign({}, parcelWithUpdatedRetrofits, {\n selected_developers: updatedDevelopers,\n });\n\n return dispatch({\n type: TOGGLE_RETROFIT_PREFERENCE_AND_UPDATE_DEVELOPERS,\n payload,\n });\n };\n}\n\nexport function changeSelectedDevelopers(id = null) {\n return (dispatch, getState) => {\n const {\n customers: {\n preferences: {\n editPreferencesModal: { editableParcel },\n },\n },\n } = getState();\n\n const payload = Object.assign({}, editableParcel, {\n selected_developers: editableParcel.selected_developers.includes(id)\n ? editableParcel.selected_developers.filter(\n developer => developer !== id,\n )\n : editableParcel.selected_developers.concat(id),\n });\n\n return dispatch({\n type: CHANGE_SELECTED_DEVELOPERS,\n payload,\n });\n };\n}\n\nexport function toggleAcceptsContacts() {\n return (dispatch, getState) => {\n const {\n customers: {\n preferences: {\n editPreferencesModal: { editableParcel },\n },\n },\n } = getState();\n\n const payload = Object.assign({}, editableParcel, {\n accepts_contacts: !editableParcel.accepts_contacts,\n });\n\n return dispatch({\n type: TOGGLE_ACCEPTS_CONTACTS,\n payload,\n });\n };\n}\n\nfunction startUpdateEditedParcel() {\n return {\n type: START_UPDATE_EDITED_PARCEL,\n };\n}\n\nfunction failUpdateEditedParcel(e) {\n window.console.warn(e);\n\n return {\n type: FAIL_UPDATE_EDITED_PARCEL,\n payload: e,\n };\n}\n\nfunction completeUpdateEditedParcel(editedParcel) {\n return (dispatch, getState) => {\n const {\n customers: {\n preferences: {\n parcels: { data: parcelData },\n },\n },\n geocoder: { selectedResult },\n } = getState();\n\n const updatedParcelIndex = parcelData.findIndex(\n ({ parcel_id: parcelId }) => parcelId === editedParcel.parcel_id,\n );\n\n const payload = [\n ...parcelData.slice(0, updatedParcelIndex),\n editedParcel,\n ...parcelData.slice(updatedParcelIndex + 1),\n ];\n\n if (selectedResult) {\n dispatch(clearGeocoderSearch());\n dispatch(toggleGeocoder(uiSections.PreferencesForm));\n }\n\n return dispatch({\n type: COMPLETE_UPDATE_EDITED_PARCEL,\n payload,\n });\n };\n}\n\nexport function updateEditedParcel() {\n return (dispatch, getState) => {\n dispatch(startUpdateEditedParcel());\n const {\n customers: {\n preferences: {\n uuid,\n editPreferencesModal: { editableParcel },\n },\n },\n } = getState();\n\n return csrfRequest\n .put(makePreferencesUrl(uuid), editableParcel)\n .then(({ data }) => dispatch(completeUpdateEditedParcel(data)))\n .catch(e => dispatch(failUpdateEditedParcel(e)));\n };\n}\n\nexport function hideSuccessToast() {\n return {\n type: HIDE_SUCCESS_TOAST,\n };\n}\n","import { at, head, upperFirst } from 'lodash';\n\nexport function formatCostRange({ costMin, costMax }) {\n return `$ ${costMin.toLocaleString()}–${costMax.toLocaleString()}`;\n}\n\nfunction capitalizeWord(word) {\n return upperFirst(word.toLowerCase());\n}\n\nexport function formatParcelAddress(address, withoutCity = false) {\n // Zip code isn't available in the parcel endpoint, but\n // we may be able to get it from the Geocoder\n\n const capitalizedAddress = address.split(' ').map(capitalizeWord).join(' ');\n\n if (withoutCity) {\n return capitalizedAddress;\n }\n\n return `${capitalizedAddress}, Philadelphia, PA`;\n}\n\nexport function maybeGet(obj, path) {\n return head(at(obj, path)) || null;\n}\n\nconst normalizeText = s => (s ? s.toLowerCase().trim() : '');\nconst normalizePhoneNumber = s =>\n s ? normalizeText(s).replace(/[^+\\d]+/g, '') : '';\nconst includesQuery = (s, query) =>\n normalizeText(s).includes(normalizeText(query));\n\nexport const developerMatchesQuery = (developer, developersQuery) =>\n includesQuery(developer.name, developersQuery) ||\n includesQuery(developer.phoneNumber, developersQuery) ||\n normalizePhoneNumber(developer.phoneNumber).includes(\n normalizeText(developersQuery),\n ) ||\n includesQuery(developer.url, developersQuery) ||\n developer.retrofits.some(retrofit =>\n includesQuery(retrofit, developersQuery),\n );\n","import axios from 'axios';\n\n// Used to make an authenticated HTTP requests to Django\naxios.defaults.xsrfHeaderName = 'X-CSRFToken';\naxios.defaults.xsrfCookieName = 'csrftoken';\nconst csrfRequest = axios.create({\n headers: {\n credentials: 'same-origin',\n },\n});\n\nexport default csrfRequest;\n","import { API_BASE_URL } from '../../constants';\n\nexport function makeParcelLatLngSearchAPIUrl({ lat, lng }) {\n return `${API_BASE_URL}/pwd/search?x=${lng}&y=${lat}`;\n}\n\nexport const latLngSearchPopUpID = 'lat-lng-search-content-id';\n\nexport const latLngSearchPopUpClassName = 'lat-lng-search-popup';\n","import { combineReducers } from 'redux';\nimport { isEmpty } from 'lodash';\n\nimport customersApp from '../marketing/reducers';\nimport adminDashboardPage from './components/admindashboard/reducers';\nimport onboardingPage from './components/onboarding/reducers';\nimport geocoderReducer from '../geocoder/reducers';\nimport resetPasswordPage from './components/resetpassword/reducers';\nimport aisGeocoder from './components/aisGeocoder/reducers';\nimport latLngParcelSearch from './components/latLngParcelSearch/reducers';\n\nimport {\n errorMessages,\n initialSearchMapCenter,\n initialSearchMapZoom,\n basemapsEnum,\n successfulAISGeocoderSearchZoom,\n} from './constants';\n\nimport { COMPLETE_AIS_GEOCODER_SEARCH } from './components/aisGeocoder/actions';\nimport { COMPLETE_RESET_PASSWORD } from './components/resetpassword/actions';\n\nimport {\n START_FETCH_CSV,\n FAIL_FETCH_CSV,\n COMPLETE_FETCH_CSV,\n CANCEL_FETCH_SINGLE_PARCEL,\n START_FETCH_SINGLE_PARCEL,\n FAIL_FETCH_SINGLE_PARCEL,\n COMPLETE_FETCH_SINGLE_PARCEL,\n START_FETCH_PARCEL_DATA,\n FAIL_FETCH_PARCEL_DATA,\n COMPLETE_FETCH_PARCEL_DATA,\n CLEAR_PARCEL_DATA,\n COMPLETE_FETCH_SAVED_PARCELS,\n FAIL_FETCH_SAVED_PARCELS,\n COMPLETE_FETCH_INTERESTED_PARCELS,\n FAIL_FETCH_INTERESTED_PARCELS,\n COMPLETE_FETCH_ENROLLED_PARCELS,\n CHANGE_PARCELS_QUERY_BBOX,\n CHANGE_GROUND_MIN,\n CHANGE_GROUND_MAX,\n CHANGE_ROOF_MIN,\n CHANGE_ROOF_MAX,\n CHANGE_TOTAL_MIN,\n CHANGE_TOTAL_MAX,\n CHANGE_NONRES_FILTER,\n CHANGE_CONDOS_FILTER,\n CHANGE_CAP_FILTER,\n CHANGE_GSI_FILTER,\n CHANGE_SAVED_FILTER,\n CHANGE_MAP_EXTENT_FILTER,\n SELECT_INTERESTED_FILTER,\n SELECT_ELIGIBLE_FILTER,\n SELECT_ENROLLED_FILTER,\n HIGHLIGHT_PARCEL,\n UNHIGHLIGHT_PARCEL,\n DESELECT_PARCEL,\n START_SAVE_PARCEL,\n COMPLETE_SAVE_PARCEL,\n FAIL_SAVE_PARCEL,\n START_UNSAVE_PARCEL,\n COMPLETE_UNSAVE_PARCEL,\n FAIL_UNSAVE_PARCEL,\n UPDATE_MAP,\n SHOW_IMPERVIOUS_LAYER,\n HIDE_IMPERVIOUS_LAYER,\n SHOW_SEWER_LAYER,\n HIDE_SEWER_LAYER,\n SHOW_AERIAL_BASEMAP,\n SHOW_CARTO_BASEMAP,\n OPEN_ROOF_FILTER,\n OPEN_GROUND_FILTER,\n OPEN_TOTAL_FILTER,\n OPEN_STATUS_FILTER,\n OPEN_CHARACTERISTICS_FILTER,\n CLOSE_ALL_FILTERS,\n RESET_FILTERS,\n SHOW_SIGN_IN,\n START_DEVELOPER_SIGN_IN,\n FAIL_DEVELOPER_SIGN_IN,\n COMPLETE_DEVELOPER_SIGN_IN,\n START_DEVELOPER_SIGN_OUT,\n FAIL_DEVELOPER_SIGN_OUT,\n COMPLETE_DEVELOPER_SIGN_OUT,\n UPDATE_DEVELOPER_AUTH_EMAIL,\n UPDATE_DEVELOPER_AUTH_PASSWORD,\n START_CONFIRM_EMAIL,\n COMPLETE_CONFIRM_EMAIL,\n FAIL_CONFIRM_EMAIL,\n SHOW_TERMS_OF_USE_MODAL,\n HIDE_TERMS_OF_USE_MODAL,\n SHOW_DELETE_ACCOUNT_MODAL,\n HIDE_DELETE_ACCOUNT_MODAL,\n COMPLETE_DELETE_ACCOUNT,\n FAIL_DELETE_ACCOUNT_STATUS,\n RESET_DELETE_ACCOUNT_STATUS,\n HIDE_ERROR_MODAL,\n RESET_RETROFIT_MAP,\n EXPAND_PROPERTY_SEARCH_MAP,\n CONTRACT_PROPERTY_SEARCH_MAP,\n EXPAND_PROPERTY_DETAILS_MAP,\n CONTRACT_PROPERTY_DETAILS_MAP,\n} from './actions';\n\nexport const initialMainPageState = {\n parcelFilters: {\n groundMaxFilter: null,\n groundMinFilter: null,\n roofMaxFilter: null,\n roofMinFilter: null,\n savedPropertiesFilter: false,\n interestedFilter: false,\n enrolledFilter: true,\n eligibleFilter: false,\n nonResidentialFilter: true,\n condosFilter: true,\n capFilter: null, // Can be true, false, or null\n gsiFilter: null, // Can be true, false, or null\n bbox: null,\n roofFilterOpen: false,\n groundFilterOpen: false,\n totalFilterOpen: false,\n characteristicsFilterOpen: false,\n statusFilterOpen: false,\n mapExtentFilter: true,\n },\n map: {\n center: initialSearchMapCenter,\n zoom: initialSearchMapZoom,\n expanded: false,\n },\n savedParcels: [],\n interestedParcels: [],\n enrolledParcels: [],\n parcels: null,\n fetching: false,\n error: false,\n errorMessage: null,\n deleteModalErrorMessage: null,\n highlightedParcel: null,\n displayTermsOfUseModal: false,\n displayDeleteAccountModal: false,\n visibleBasemap: basemapsEnum.cityCartoBasemap,\n imperviousLayerVisible: false,\n sewerLayerVisible: false,\n csv: {\n data: null,\n fetching: false,\n error: false,\n fetchInterested: false,\n fetchSaved: false,\n },\n};\n\nfunction mainPage(state = initialMainPageState, { type, payload }) {\n switch (type) {\n case RESET_RETROFIT_MAP:\n return initialMainPageState;\n case EXPAND_PROPERTY_SEARCH_MAP:\n return Object.assign({}, state, {\n map: Object.assign({}, state.map, {\n expanded: true,\n }),\n });\n case CONTRACT_PROPERTY_SEARCH_MAP:\n return Object.assign({}, state, {\n map: Object.assign({}, state.map, {\n expanded: false,\n }),\n });\n case START_FETCH_CSV:\n return Object.assign({}, state, {\n csv: Object.assign({}, state.csv, {\n fetching: true,\n error: false,\n fetchInterested: payload.fetchInterested,\n fetchSaved: payload.fetchSaved,\n }),\n });\n case FAIL_FETCH_CSV:\n return Object.assign({}, state, {\n csv: Object.assign({}, state.csv, {\n fetching: false,\n error: true,\n }),\n });\n case COMPLETE_FETCH_CSV:\n return Object.assign({}, state, {\n csv: Object.assign({}, state.csv, {\n fetching: false,\n error: false,\n data: payload,\n }),\n });\n case SHOW_IMPERVIOUS_LAYER:\n return Object.assign({}, state, {\n imperviousLayerVisible: true,\n });\n case HIDE_IMPERVIOUS_LAYER:\n return Object.assign({}, state, {\n imperviousLayerVisible: false,\n });\n case SHOW_SEWER_LAYER:\n return Object.assign({}, state, {\n sewerLayerVisible: true,\n });\n case HIDE_SEWER_LAYER:\n return Object.assign({}, state, {\n sewerLayerVisible: false,\n });\n case SHOW_AERIAL_BASEMAP:\n return Object.assign({}, state, {\n visibleBasemap: basemapsEnum.aerial,\n });\n case SHOW_CARTO_BASEMAP:\n return Object.assign({}, state, {\n visibleBasemap: basemapsEnum.cityCartoBasemap,\n });\n case RESET_FILTERS:\n return Object.assign({}, state, {\n parcelFilters: Object.assign(\n {},\n initialMainPageState.parcelFilters,\n {\n bbox: state.parcelFilters.bbox,\n },\n ),\n });\n case COMPLETE_AIS_GEOCODER_SEARCH:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n roofFilterOpen: false,\n groundFilterOpen: false,\n totalFilterOpen: false,\n characteristicsFilterOpen: false,\n statusFilterOpen: false,\n bbox: null,\n }),\n parcels: initialMainPageState.parcels,\n highlightedParcel: initialMainPageState.highlightedParcel,\n map: Object.assign({}, state.map, {\n center: payload.isNotIntersection\n ? state.map.center\n : payload.coordinates,\n zoom: payload.isNotIntersection\n ? state.map.zoom\n : successfulAISGeocoderSearchZoom,\n }),\n });\n case SHOW_TERMS_OF_USE_MODAL:\n return Object.assign({}, state, {\n displayTermsOfUseModal: true,\n });\n case HIDE_TERMS_OF_USE_MODAL:\n return Object.assign({}, state, {\n displayTermsOfUseModal: false,\n });\n case SHOW_DELETE_ACCOUNT_MODAL:\n return Object.assign({}, state, {\n displayDeleteAccountModal: true,\n });\n case HIDE_DELETE_ACCOUNT_MODAL:\n return Object.assign({}, state, {\n displayDeleteAccountModal: false,\n });\n case COMPLETE_DELETE_ACCOUNT:\n return Object.assign({}, state, {\n displayDeleteAccountModal: false,\n });\n case FAIL_DELETE_ACCOUNT_STATUS:\n return Object.assign({}, state, {\n error: true,\n deleteModalErrorMessage: errorMessages.defaultErrorMessage,\n });\n case RESET_DELETE_ACCOUNT_STATUS:\n return Object.assign({}, state, {\n error: false,\n deleteModalErrorMessage: null,\n });\n case OPEN_GROUND_FILTER:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n groundFilterOpen: true,\n }),\n });\n case OPEN_ROOF_FILTER:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n roofFilterOpen: true,\n }),\n });\n case OPEN_TOTAL_FILTER:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n totalFilterOpen: true,\n }),\n });\n case OPEN_CHARACTERISTICS_FILTER:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n characteristicsFilterOpen: true,\n }),\n });\n case OPEN_STATUS_FILTER:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n statusFilterOpen: true,\n }),\n });\n case CLOSE_ALL_FILTERS:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n roofFilterOpen: false,\n groundFilterOpen: false,\n totalFilterOpen: false,\n characteristicsFilterOpen: false,\n statusFilterOpen: false,\n }),\n });\n case START_SAVE_PARCEL:\n return Object.assign({}, state, {\n savedParcels: [\n ...new Set(state.savedParcels.concat([payload])),\n ],\n csv: initialMainPageState.csv,\n });\n case COMPLETE_SAVE_PARCEL:\n return Object.assign({}, state, {\n savedParcels: [...new Set(payload)],\n });\n case FAIL_SAVE_PARCEL:\n return Object.assign({}, state, {\n savedParcels: [\n ...new Set(state.savedParcels.filter(id => payload !== id)),\n ],\n error: true,\n errorMessage: errorMessages.failSaveParcelMessage,\n });\n case START_UNSAVE_PARCEL:\n return Object.assign({}, state, {\n savedParcels: [\n ...new Set(state.savedParcels.filter(id => payload !== id)),\n ],\n csv: initialMainPageState.csv,\n });\n case COMPLETE_UNSAVE_PARCEL:\n return Object.assign({}, state, {\n savedParcels: [...new Set(payload)],\n });\n case FAIL_UNSAVE_PARCEL:\n return Object.assign({}, state, {\n savedParcels: [\n ...new Set(state.savedParcels.concat([payload])),\n ],\n error: true,\n errorMessage: errorMessages.failUnsaveParcelMessage,\n });\n case UPDATE_MAP:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n bbox: payload.bounds,\n }),\n map: Object.assign({}, state.map, {\n center: isEmpty(payload.center)\n ? state.map.center\n : payload.center,\n zoom: payload.zoom ? payload.zoom : state.map.zoom,\n }),\n });\n case CHANGE_PARCELS_QUERY_BBOX:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n bbox: payload,\n }),\n });\n case CHANGE_GROUND_MIN:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n groundMinFilter: payload,\n }),\n });\n case CHANGE_GROUND_MAX:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n groundMaxFilter: payload,\n }),\n });\n case CHANGE_ROOF_MIN:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n roofMinFilter: payload,\n }),\n });\n case CHANGE_ROOF_MAX:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n roofMaxFilter: payload,\n }),\n });\n case CHANGE_TOTAL_MIN:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n totalMinFilter: payload,\n }),\n });\n case CHANGE_TOTAL_MAX:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n totalMaxFilter: payload,\n }),\n });\n case SELECT_ELIGIBLE_FILTER:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n interestedFilter: false,\n enrolledFilter: false,\n eligibleFilter: true,\n }),\n });\n case SELECT_INTERESTED_FILTER:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n interestedFilter: true,\n enrolledFilter: false,\n eligibleFilter: false,\n }),\n });\n case SELECT_ENROLLED_FILTER:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n enrolledFilter: true,\n interestedFilter: false,\n eligibleFilter: false,\n }),\n });\n case CHANGE_SAVED_FILTER:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n savedPropertiesFilter:\n !state.parcelFilters.savedPropertiesFilter,\n }),\n });\n case CHANGE_MAP_EXTENT_FILTER:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n mapExtentFilter: !state.parcelFilters.mapExtentFilter,\n }),\n });\n case CHANGE_NONRES_FILTER:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n nonResidentialFilter:\n !state.parcelFilters.nonResidentialFilter,\n }),\n });\n case CHANGE_CONDOS_FILTER:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n condosFilter: !state.parcelFilters.condosFilter,\n }),\n });\n case CHANGE_CAP_FILTER:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n capFilter: payload,\n }),\n });\n case CHANGE_GSI_FILTER:\n return Object.assign({}, state, {\n parcelFilters: Object.assign({}, state.parcelFilters, {\n gsiFilter: payload,\n }),\n });\n case START_FETCH_PARCEL_DATA:\n return Object.assign({}, state, {\n fetching: true,\n error: false,\n });\n case FAIL_FETCH_PARCEL_DATA:\n return Object.assign({}, state, {\n fetching: false,\n error: true,\n errorMessage: errorMessages.failLoadMultipleParcelsMessage,\n });\n case COMPLETE_FETCH_PARCEL_DATA:\n return Object.assign({}, state, {\n parcels: payload,\n fetching: false,\n error: false,\n });\n case CLEAR_PARCEL_DATA:\n return Object.assign({}, state, {\n parcels: [],\n });\n case COMPLETE_FETCH_SAVED_PARCELS:\n return Object.assign({}, state, {\n savedParcels: payload,\n });\n case COMPLETE_FETCH_INTERESTED_PARCELS:\n return Object.assign({}, state, {\n interestedParcels: payload,\n });\n case COMPLETE_FETCH_ENROLLED_PARCELS:\n return Object.assign({}, state, {\n enrolledParcels: payload,\n });\n case HIGHLIGHT_PARCEL:\n return Object.assign({}, state, {\n highlightedParcel: payload,\n });\n case UNHIGHLIGHT_PARCEL:\n return Object.assign({}, state, {\n highlightedParcel: null,\n });\n case HIDE_ERROR_MODAL:\n return Object.assign({}, state, {\n error: false,\n errorMessage: null,\n csv: Object.assign({}, state.csv, {\n error: false,\n }),\n });\n case FAIL_FETCH_INTERESTED_PARCELS:\n return Object.assign({}, state, {\n error: true,\n errorMessage: errorMessages.failLoadInterestedParcelsMessage,\n });\n case FAIL_FETCH_SAVED_PARCELS:\n return Object.assign({}, state, {\n error: true,\n errorMessage: errorMessages.failLoadSavedParcelsMessage,\n });\n default:\n return state;\n }\n}\n\nconst initialDetailsPageState = {\n selectedParcel: null,\n fetching: false,\n error: false,\n errorMessage: null,\n mapExpanded: false,\n parcelIdFromLoginAttempt: null,\n};\n\nfunction detailsPage(state = initialDetailsPageState, { type, payload }) {\n switch (type) {\n case RESET_RETROFIT_MAP:\n case COMPLETE_AIS_GEOCODER_SEARCH:\n return initialDetailsPageState;\n case EXPAND_PROPERTY_DETAILS_MAP:\n return Object.assign({}, state, {\n mapExpanded: true,\n });\n case CONTRACT_PROPERTY_DETAILS_MAP:\n return Object.assign({}, state, {\n mapExpanded: false,\n });\n case START_FETCH_SINGLE_PARCEL:\n return Object.assign({}, state, {\n fetching: true,\n error: false,\n });\n case FAIL_FETCH_SINGLE_PARCEL:\n return Object.assign({}, state, {\n fetching: false,\n error: true,\n errorMessage: errorMessages.failLoadSingleParcelMessage,\n });\n case CANCEL_FETCH_SINGLE_PARCEL:\n return Object.assign({}, state, {\n fetching: false,\n });\n case COMPLETE_FETCH_SINGLE_PARCEL:\n return Object.assign({}, state, {\n fetching: false,\n error: false,\n selectedParcel: payload,\n });\n case DESELECT_PARCEL:\n return Object.assign({}, state, {\n selectedParcel: null,\n });\n case HIDE_ERROR_MODAL:\n return Object.assign({}, state, {\n error: false,\n errorMessage: null,\n });\n case FAIL_DEVELOPER_SIGN_IN:\n return Object.assign({}, state, {\n parcelIdFromLoginAttempt: payload.parcelIdFromLoginAttempt,\n });\n default:\n return state;\n }\n}\n\nconst initialAuthState = {\n email: '',\n password: '',\n fetching: false,\n signedIn: false,\n id: null,\n error: false,\n};\n\nfunction auth(state = initialAuthState, { type, payload }) {\n switch (type) {\n case RESET_RETROFIT_MAP:\n return initialAuthState;\n case UPDATE_DEVELOPER_AUTH_EMAIL:\n return Object.assign({}, state, {\n email: payload,\n });\n case UPDATE_DEVELOPER_AUTH_PASSWORD:\n return Object.assign({}, state, {\n password: payload,\n });\n case SHOW_SIGN_IN:\n return Object.assign({}, state, {\n error: false,\n });\n case START_DEVELOPER_SIGN_IN:\n return Object.assign({}, state, {\n fetching: true,\n error: false,\n signedIn: false,\n });\n case FAIL_DEVELOPER_SIGN_IN:\n return Object.assign({}, state, {\n fetching: false,\n error: true,\n signedIn: false,\n });\n case COMPLETE_DEVELOPER_SIGN_IN:\n return Object.assign({}, state, {\n fetching: false,\n error: false,\n signedIn: true,\n status: payload.status,\n isStaff: payload.isStaff,\n id:\n !payload.isStaff &&\n payload.vendorInfo &&\n payload.vendorInfo.id,\n });\n case START_DEVELOPER_SIGN_OUT:\n return Object.assign({}, state, {\n fetching: true,\n error: false,\n });\n case FAIL_DEVELOPER_SIGN_OUT:\n return Object.assign({}, state, {\n fetching: false,\n error: true,\n });\n case COMPLETE_DEVELOPER_SIGN_OUT:\n return Object.assign({}, state, {\n fetching: false,\n error: false,\n signedIn: false,\n id: null,\n email: '',\n password: '',\n });\n case COMPLETE_DELETE_ACCOUNT:\n return Object.assign({}, state, {\n status: payload,\n });\n case COMPLETE_RESET_PASSWORD:\n return Object.assign({}, state, {\n password: payload,\n });\n default:\n return state;\n }\n}\n\nconst initialEmailConfirmationState = {\n fetching: false,\n success: false,\n error: false,\n};\n\nfunction emailConfirmation(state = initialEmailConfirmationState, { type }) {\n switch (type) {\n case RESET_RETROFIT_MAP:\n return initialEmailConfirmationState;\n case START_CONFIRM_EMAIL:\n return Object.assign({}, state, {\n fetching: true,\n error: false,\n success: false,\n });\n case FAIL_CONFIRM_EMAIL:\n return Object.assign({}, state, {\n fetching: false,\n error: true,\n success: false,\n });\n case COMPLETE_CONFIRM_EMAIL:\n return Object.assign({}, state, {\n fetching: false,\n error: false,\n success: true,\n });\n default:\n return state;\n }\n}\n\nexport default combineReducers({\n mainPage,\n detailsPage,\n onboardingPage,\n auth,\n emailConfirmation,\n adminDashboardPage,\n resetPasswordPage,\n aisGeocoder,\n latLngParcelSearch,\n geocoder: geocoderReducer,\n customers: customersApp,\n});\n","import React, { Suspense, lazy } from 'react';\nimport { render } from 'react-dom';\n\nimport { BrowserRouter, Redirect, Route, Switch } from 'react-router-dom';\nimport { Provider } from 'react-redux';\n\nimport Modal from 'react-modal';\n\nimport '../../../img/favicon.ico';\nimport '../../../node_modules/leaflet/dist/leaflet.css';\nimport '../../../sass/marketing/main.scss';\n\nimport createStoreWithMiddleware from '../common/store';\nimport reducers from './reducers';\nimport {\n BASE_URL,\n CUSTOMER_BASE_URL,\n DASHBOARD_BASE_URL,\n VENDOR_BASE_URL,\n VENDOR_SETTINGS_URL,\n} from './constants';\n\nimport NotFound from './components/NotFound';\n\nconst MarketingApp = lazy(() => import('../marketing/MarketingApp'));\nconst PreferencesPage = lazy(() =>\n import('../marketing/components/parcel_preferences/index'),\n);\nconst DeveloperApp = lazy(() => import('./DeveloperApp'));\nconst EmailConfirmation = lazy(() => import('./EmailConfirmation'));\nconst ResetPassword = lazy(() => import('./components/resetpassword/index'));\n\nconst OnboardingContainer = lazy(() =>\n import('./components/onboarding/OnboardingContainer'),\n);\nconst Welcome = lazy(() => import('./components/onboarding/Welcome'));\nconst DeveloperProfile = lazy(() =>\n import('./components/onboarding/DeveloperProfile'),\n);\nconst StayTuned = lazy(() => import('./components/onboarding/StayTuned'));\nconst Denied = lazy(() => import('./components/onboarding/Denied'));\nconst Deactivated = lazy(() => import('./components/onboarding/Deactivated'));\n\nconst AdminDashboard = lazy(() => import('./components/admindashboard/index'));\n\nconst store = createStoreWithMiddleware(reducers);\n\nModal.setAppElement('body');\n\nconst makeLoadableComponent = LazilyLoadedComponent => props =>\n (\n \n \n \n );\n\nconst LoadableMarketingApp = makeLoadableComponent(MarketingApp);\nconst LoadablePreferencesPage = makeLoadableComponent(PreferencesPage);\nconst LoadableDeveloperApp = makeLoadableComponent(DeveloperApp);\nconst LoadableEmailConfirmation = makeLoadableComponent(EmailConfirmation);\nconst LoadableOnboardingContainer = makeLoadableComponent(OnboardingContainer);\nconst LoadableWelcome = makeLoadableComponent(Welcome);\nconst LoadableStayTuned = makeLoadableComponent(StayTuned);\nconst LoadableDenied = makeLoadableComponent(Denied);\nconst LoadableDeactivated = makeLoadableComponent(Deactivated);\nconst LoadableDeveloperProfile = makeLoadableComponent(DeveloperProfile);\nconst LoadableAdminDashboard = makeLoadableComponent(AdminDashboard);\nconst LoadableResetPassword = makeLoadableComponent(ResetPassword);\n\nrender(\n \n \n \n \n {/* Vendor routes */}\n \n \n \n \n {/* see further welcome/* routes in the next Switch */}\n \n \n\n {/* Dashboard route */}\n \n\n {/* Customer routes */}\n \n \n \n \n \n \n \n \n \n \n\n {/* Welcome routes */}\n \n \n \n \n \n \n \n \n \n ,\n document.getElementById('mount'),\n);\n","import { isCancel, CancelToken } from 'axios';\nimport L from 'leaflet';\nimport { noop } from 'lodash';\nimport querystring from 'querystring';\n\nimport csrfRequest from '../common/csrfRequest';\nimport selectEligibleParcels from '../common/utils';\n\nimport {\n maybeCancelPriorAISGeocoderRequest,\n clearAISGeocoderData,\n updateAISGeocoderFitBounds,\n} from './components/aisGeocoder/actions';\n\nimport { completeVendorSignIn } from './components/onboarding/actions';\n\nimport { resetLatLngParcelSearch } from './components/latLngParcelSearch/actions';\n\nimport {\n parcelsAPIUrl,\n parcelDataApiUrl,\n retrofitMapLoginUrl,\n retrofitMapLogoutUrl,\n savedParcelsUrl,\n interestedParcelsUrl,\n enrolledParcelsUrl,\n changeParcelSaveStatusUrl,\n confirmEmailUrl,\n basemapsEnum,\n defaultRequestedParcelsCount,\n ROUTES,\n API_BASE_URL,\n developerStatusTypes,\n} from './constants';\n\nimport {\n convertGeoJsonToAgsObject,\n calculateRequestedParcelIDs,\n getCityLimitsBbox,\n parcelIdFromHistory,\n} from './utils';\n\nimport CSVMaker from './CSVMaker';\n\nexport const RESET_RETROFIT_MAP = 'RESET_RETROFIT_MAP';\nexport const CANCEL_FETCH_SINGLE_PARCEL = 'CANCEL_FETCH_SINGLE_PARCEL';\nexport const CANCEL_FETCH_PARCEL_DATA = 'CANCEL_FETCH_PARCEL_DATA';\nexport const HIDE_ERROR_MODAL = 'HIDE_ERROR_MODAL';\nexport const SHOW_TERMS_OF_USE_MODAL = 'SHOW_TERMS_OF_USE_MODAL';\nexport const HIDE_TERMS_OF_USE_MODAL = 'HIDE_TERMS_OF_USE_MODAL';\nexport const SHOW_DELETE_ACCOUNT_MODAL = 'SHOW_DELETE_ACCOUNT_MODAL';\nexport const HIDE_DELETE_ACCOUNT_MODAL = 'HIDE_DELETE_ACCOUNT_MODAL';\nexport const RESET_DELETE_ACCOUNT_STATUS = 'RESET_DELETE_ACCOUNT_STATUS';\nexport const COMPLETE_DELETE_ACCOUNT = 'COMPLETE_DELETE_ACCOUNT';\nexport const FAIL_DELETE_ACCOUNT_STATUS = 'FAIL_DELETE_ACCOUNT_STATUS';\nexport const START_FETCH_SINGLE_PARCEL = 'START_FETCH_SINGLE_PARCEL';\nexport const COMPLETE_FETCH_SINGLE_PARCEL = 'COMPLETE_FETCH_SINGLE_PARCEL';\nexport const FAIL_FETCH_SINGLE_PARCEL = 'FAIL_FETCH_SINGLE_PARCEL';\nexport const START_FETCH_INTERESTED_PARCELS = 'START_FETCH_INTERESTED_PARCELS';\nexport const COMPLETE_FETCH_INTERESTED_PARCELS =\n 'COMPLETE_FETCH_INTERESTED_PARCELS';\nexport const FAIL_FETCH_INTERESTED_PARCELS = 'FAIL_FETCH_INTERESTED_PARCELS';\nexport const START_FETCH_ENROLLED_PARCELS = 'START_FETCH_ENROLLED_PARCELS';\nexport const COMPLETE_FETCH_ENROLLED_PARCELS =\n 'COMPLETE_FETCH_ENROLLED_PARCELS';\nexport const FAIL_FETCH_ENROLLED_PARCELS = 'FAIL_FETCH_ENROLLED_PARCELS';\nexport const START_FETCH_PARCEL_DATA = 'START_FETCH_PARCEL_DATA';\nexport const COMPLETE_FETCH_PARCEL_DATA = 'COMPLETE_FETCH_PARCEL_DATA';\nexport const CLEAR_PARCEL_DATA = 'CLEAR_PARCEL_DATA';\nexport const FAIL_FETCH_PARCEL_DATA = 'FAIL_FETCH_PARCEL_DATA';\nexport const START_FETCH_SAVED_PARCELS = 'START_FETCH_SAVED_PARCELS';\nexport const COMPLETE_FETCH_SAVED_PARCELS = 'COMPLETE_FETCH_SAVED_PARCELS';\nexport const FAIL_FETCH_SAVED_PARCELS = 'FAIL_FETCH_SAVED_PARCELS';\nexport const START_SAVE_PARCEL = 'START_SAVE_PARCEL';\nexport const COMPLETE_SAVE_PARCEL = 'COMPLETE_SAVE_PARCEL';\nexport const FAIL_SAVE_PARCEL = 'FAIL_SAVE_PARCEL';\nexport const START_UNSAVE_PARCEL = 'START_UNSAVE_PARCEL';\nexport const COMPLETE_UNSAVE_PARCEL = 'COMPLETE_UNSAVE_PARCEL';\nexport const FAIL_UNSAVE_PARCEL = 'FAIL_UNSAVE_PARCEL';\nexport const UPDATE_MAP = 'UPDATE_MAP';\nexport const SELECT_PARCEL = 'SELECT_PARCEL';\nexport const DESELECT_PARCEL = 'DESELECT_PARCEL';\nexport const HIGHLIGHT_PARCEL = 'HIGHLIGHT_PARCEL';\nexport const UNHIGHLIGHT_PARCEL = 'UNHIGHLIGHT_PARCEL';\n\nexport const SHOW_IMPERVIOUS_LAYER = 'SHOW_IMPERVIOUS_LAYER';\nexport const HIDE_IMPERVIOUS_LAYER = 'HIDE_IMPERVIOUS_LAYER';\nexport const SHOW_SEWER_LAYER = 'SHOW_SEWER_LAYER';\nexport const HIDE_SEWER_LAYER = 'HIDE_SEWER_LAYER';\nexport const SHOW_CARTO_BASEMAP = 'SHOW_CARTO_BASEMAP';\nexport const SHOW_AERIAL_BASEMAP = 'SHOW_AERIAL_BASEMAP';\n\nexport const CHANGE_PARCELS_QUERY_BBOX = 'CHANGE_PARCELS_QUERY_BBOX';\n\nexport const CHANGE_GROUND_MIN = 'CHANGE_GROUND_MIN';\nexport const CHANGE_GROUND_MAX = 'CHANGE_GROUND_MAX';\nexport const CHANGE_ROOF_MIN = 'CHANGE_ROOF_MIN';\nexport const CHANGE_ROOF_MAX = 'CHANGE_ROOF_MAX';\nexport const CHANGE_TOTAL_MIN = 'CHANGE_TOTAL_MIN';\nexport const CHANGE_TOTAL_MAX = 'CHANGE_TOTAL_MAX';\n\nexport const CHANGE_NONRES_FILTER = 'CHANGE_NONRES_FILTER';\nexport const CHANGE_CONDOS_FILTER = 'CHANGE_CONDOS_FILTER';\nexport const CHANGE_CAP_FILTER = 'CHANGE_CAP_FILTER';\nexport const CHANGE_GSI_FILTER = 'CHANGE_GSI_FILTER';\nexport const CHANGE_SAVED_FILTER = 'CHANGE_SAVED_FILTER';\nexport const CHANGE_MAP_EXTENT_FILTER = 'CHANGE_MAP_EXTENT_FILTER';\nexport const SELECT_INTERESTED_FILTER = 'SELECT_INTERESTED_FILTER';\nexport const SELECT_ELIGIBLE_FILTER = 'SELECT_ELIGIBLE_FILTER';\nexport const SELECT_ENROLLED_FILTER = 'SELECT_ENROLLED_FILTER';\n\nexport const TOGGLE_DETAILS = 'TOGGLE_DETAILS';\nexport const OPEN_ROOF_FILTER = 'OPEN_ROOF_FILTER';\nexport const OPEN_GROUND_FILTER = 'OPEN_GROUND_FILTER';\nexport const OPEN_TOTAL_FILTER = 'OPEN_TOTAL_FILTER';\nexport const OPEN_STATUS_FILTER = 'OPEN_STATUS_FILTER';\nexport const OPEN_CHARACTERISTICS_FILTER = 'OPEN_CHARACTERISTICS_FILTER';\nexport const CLOSE_ALL_FILTERS = 'CLOSE_ALL_FILTERS';\nexport const RESET_FILTERS = 'RESET_FILTERS';\nexport const REFETCH_ON_EMPTY_QUERY = 'REFETCH_ON_EMPTY_QUERY';\n\nexport const SHOW_SIGN_IN = 'SHOW_SIGN_IN';\nexport const START_DEVELOPER_SIGN_IN = 'START_DEVELOPER_SIGN_IN';\nexport const COMPLETE_DEVELOPER_SIGN_IN = 'COMPLETE_DEVELOPER_SIGN_IN';\nexport const FAIL_DEVELOPER_SIGN_IN = 'FAIL_DEVELOPER_SIGN_IN';\nexport const START_DEVELOPER_SIGN_OUT = 'START_DEVELOPER_SIGN_OUT';\nexport const COMPLETE_DEVELOPER_SIGN_OUT = 'COMPLETE_DEVELOPER_SIGN_OUT';\nexport const FAIL_DEVELOPER_SIGN_OUT = 'FAIL_DEVELOPER_SIGN_OUT';\n\nexport const UPDATE_DEVELOPER_AUTH_EMAIL = 'UPDATE_DEVELOPER_AUTH_EMAIL';\nexport const UPDATE_DEVELOPER_AUTH_PASSWORD = 'UPDATE_DEVELOPER_AUTH_PASSWORD';\n\nexport const START_FETCH_CSV = 'START_FETCH_CSV';\nexport const FAIL_FETCH_CSV = 'FAIL_FETCH_CSV';\nexport const COMPLETE_FETCH_CSV = 'COMPLETE_FETCH_CSV';\n\nexport const START_CONFIRM_EMAIL = 'START_CONFIRM_EMAIL';\nexport const COMPLETE_CONFIRM_EMAIL = 'COMPLETE_CONFIRM_EMAIL';\nexport const FAIL_CONFIRM_EMAIL = 'FAIL_CONFIRM_EMAIL';\nconst REDUX_NO_OP = 'REDUX_NO_OP';\n\nexport const EXPAND_PROPERTY_SEARCH_MAP = 'EXPAND_PROPERTY_SEARCH_MAP';\nexport const CONTRACT_PROPERTY_SEARCH_MAP = 'CONTRACT_PROPERTY_SEARCH_MAP';\n\nexport const EXPAND_PROPERTY_DETAILS_MAP = 'EXPAND_PROPERTY_DETAILS_MAP';\nexport const CONTRACT_PROPERTY_DETAILS_MAP = 'CONTRACT_PROPERTY_DETAILS_MAP';\n\nconst CANCEL_REQUEST_MESSAGE = 'API request was canceled';\n\nlet cancelAxiosRequest = null;\n\nfunction cancelPriorRequest() {\n if (cancelAxiosRequest) {\n cancelAxiosRequest(CANCEL_REQUEST_MESSAGE);\n cancelAxiosRequest = null;\n }\n}\n\nexport function startSaveParcel(parcel) {\n return {\n type: START_SAVE_PARCEL,\n payload: parcel,\n };\n}\n\nexport function completeSaveParcel(parcels) {\n return {\n type: COMPLETE_SAVE_PARCEL,\n payload: parcels,\n };\n}\n\nexport function failSaveParcel(parcel) {\n return {\n type: FAIL_SAVE_PARCEL,\n payload: parcel,\n };\n}\n\nexport function saveParcel(parcel) {\n return dispatch => {\n dispatch(startSaveParcel(parcel));\n csrfRequest\n .post(changeParcelSaveStatusUrl(parcel))\n .then(({ data }) => {\n dispatch(completeSaveParcel(data));\n })\n .catch(() => dispatch(failSaveParcel(parcel)));\n\n return noop();\n };\n}\n\nexport function startUnsaveParcel(parcel) {\n return {\n type: START_UNSAVE_PARCEL,\n payload: parcel,\n };\n}\n\nexport function completeUnsaveParcel(parcelIds) {\n return {\n type: COMPLETE_UNSAVE_PARCEL,\n payload: parcelIds,\n };\n}\n\nexport function failUnsaveParcel(parcel) {\n return {\n type: FAIL_UNSAVE_PARCEL,\n payload: parcel,\n };\n}\n\nexport function unsaveParcel(parcel) {\n return dispatch => {\n dispatch(startUnsaveParcel(parcel));\n csrfRequest\n .delete(changeParcelSaveStatusUrl(parcel))\n .then(({ data }) => {\n dispatch(completeUnsaveParcel(data));\n })\n .catch(() => dispatch(failUnsaveParcel(parcel)));\n\n return noop();\n };\n}\n\nexport function unhighlightParcel() {\n return {\n type: UNHIGHLIGHT_PARCEL,\n };\n}\n\nexport function highlightParcel(payload) {\n return {\n type: HIGHLIGHT_PARCEL,\n payload,\n };\n}\n\nexport function deselectParcel() {\n return {\n type: DESELECT_PARCEL,\n };\n}\n\nexport function selectParcel(payload) {\n return {\n type: SELECT_PARCEL,\n payload,\n };\n}\n\nfunction startFetchSingleParcel() {\n return {\n type: START_FETCH_SINGLE_PARCEL,\n };\n}\n\nfunction failFetchSingleParcel() {\n return {\n type: FAIL_FETCH_SINGLE_PARCEL,\n };\n}\n\nfunction cancelFetchSingleParcel() {\n return {\n type: CANCEL_FETCH_SINGLE_PARCEL,\n };\n}\n\nfunction completeFetchSingleParcel(payload) {\n return {\n type: COMPLETE_FETCH_SINGLE_PARCEL,\n payload,\n };\n}\n\nexport function fetchSingleParcel(id) {\n return (dispatch, getState) => {\n cancelPriorRequest();\n dispatch(startFetchSingleParcel());\n\n const {\n mainPage: { parcels },\n } = getState();\n\n const parcelFromExistingData = parcels\n ? parcels.find(\n ({ Parcel: { ParcelID } }) => Number(id) === ParcelID,\n )\n : null;\n\n return parcelFromExistingData\n ? dispatch(completeFetchSingleParcel(parcelFromExistingData))\n : csrfRequest\n .get(parcelDataApiUrl(id), {\n cancelToken: new CancelToken(c => {\n cancelAxiosRequest = c;\n }),\n })\n .then(({ data }) => selectEligibleParcels([data]))\n .then(([data]) =>\n dispatch(\n data\n ? completeFetchSingleParcel(data)\n : failFetchSingleParcel(),\n ),\n )\n .catch(thrown =>\n dispatch(\n isCancel(thrown)\n ? cancelFetchSingleParcel()\n : failFetchSingleParcel(),\n ),\n );\n };\n}\n\nfunction startFetchParcelData() {\n return {\n type: START_FETCH_PARCEL_DATA,\n };\n}\n\nfunction failFetchParcelData() {\n return {\n type: FAIL_FETCH_PARCEL_DATA,\n };\n}\n\nfunction cancelFetchParcelData() {\n return {\n type: CANCEL_FETCH_PARCEL_DATA,\n };\n}\n\nfunction completeFetchParcelData(payload) {\n return dispatch => {\n dispatch(deselectParcel());\n dispatch({\n type: CLEAR_PARCEL_DATA,\n });\n\n return dispatch({\n type: COMPLETE_FETCH_PARCEL_DATA,\n payload,\n });\n };\n}\n\nfunction startFetchSavedParcels() {\n return {\n type: START_FETCH_SAVED_PARCELS,\n };\n}\n\nfunction failFetchSavedParcels() {\n return {\n type: FAIL_FETCH_SAVED_PARCELS,\n };\n}\n\nfunction completeFetchSavedParcels(data) {\n return {\n type: COMPLETE_FETCH_SAVED_PARCELS,\n payload: data,\n };\n}\n\nexport function fetchSavedParcels() {\n return dispatch => {\n dispatch(startFetchSavedParcels());\n csrfRequest\n .get(savedParcelsUrl)\n .then(({ data }) => {\n dispatch(completeFetchSavedParcels(data));\n })\n .catch(() => dispatch(failFetchSavedParcels()));\n return noop();\n };\n}\n\nfunction startFetchInterestedParcels() {\n return {\n type: START_FETCH_INTERESTED_PARCELS,\n };\n}\n\nfunction completeFetchInterestedParcels(payload) {\n return {\n type: COMPLETE_FETCH_INTERESTED_PARCELS,\n payload,\n };\n}\n\nfunction failFetchInterestedParcels() {\n return {\n type: FAIL_FETCH_INTERESTED_PARCELS,\n };\n}\n\nfunction formatInterestedParcels(interestedParcels) {\n return interestedParcels.map(\n ({\n address,\n retrofits,\n note,\n contact_email: email,\n contact_name: name,\n contact_phone: phone,\n parcel_id: parcelId,\n }) => ({\n address,\n retrofits,\n note,\n email,\n name,\n phone,\n parcelId,\n }),\n );\n}\n\nexport function fetchInterestedParcels() {\n return dispatch => {\n dispatch(startFetchInterestedParcels());\n csrfRequest\n .get(interestedParcelsUrl)\n .then(({ data }) => formatInterestedParcels(data))\n .then(data => dispatch(completeFetchInterestedParcels(data)))\n .catch(() => dispatch(failFetchInterestedParcels()));\n };\n}\n\nfunction startFetchEnrolledParcels() {\n return {\n type: START_FETCH_ENROLLED_PARCELS,\n };\n}\n\nfunction failFetchEnrolledParcels() {\n return {\n type: FAIL_FETCH_ENROLLED_PARCELS,\n };\n}\n\nfunction completeFetchEnrolledParcels(payload) {\n return {\n type: COMPLETE_FETCH_ENROLLED_PARCELS,\n payload,\n };\n}\n\nfunction formatEnrolledParcel({\n parcel_id: parcelId,\n accepts_contacts: acceptsContacts,\n address,\n retrofits,\n note,\n contact_email: email,\n contact_name: name,\n contact_phone: phone,\n}) {\n return {\n parcelId,\n acceptsContacts,\n address,\n retrofits,\n note,\n email,\n name,\n phone,\n };\n}\n\nexport function fetchEnrolledParcels() {\n return dispatch => {\n dispatch(startFetchEnrolledParcels());\n\n csrfRequest\n .get(enrolledParcelsUrl)\n .then(({ data }) => data.map(formatEnrolledParcel))\n .then(data => dispatch(completeFetchEnrolledParcels(data)))\n .catch(() => dispatch(failFetchEnrolledParcels()));\n };\n}\n\nexport function fetchParcels(newBounds = null) {\n cancelPriorRequest();\n return (dispatch, getState) => {\n dispatch(startFetchParcelData());\n const {\n mainPage: {\n interestedParcels,\n enrolledParcels,\n savedParcels,\n parcelFilters: {\n bbox,\n groundMaxFilter,\n groundMinFilter,\n roofMaxFilter,\n roofMinFilter,\n totalMinFilter,\n totalMaxFilter,\n nonResidentialFilter,\n condosFilter,\n capFilter,\n gsiFilter,\n interestedFilter,\n enrolledFilter,\n savedPropertiesFilter,\n mapExtentFilter,\n },\n },\n aisGeocoder: { data: aisGeocoderResult, boundsPending },\n } = getState();\n\n if (!bbox && !newBounds) {\n return;\n }\n\n const useMapExtent =\n (mapExtentFilter &&\n !(boundsPending && aisGeocoderResult.isNotIntersection)) ||\n (boundsPending && !aisGeocoderResult.isNotIntersection);\n\n const esriJsonBbox = convertGeoJsonToAgsObject(\n L.rectangle(\n useMapExtent ? newBounds || bbox : getCityLimitsBbox(),\n ).toGeoJSON(),\n );\n\n const baseParams = querystring.stringify({\n imperviousGroundMin: groundMinFilter,\n imperviousGroundMax: groundMaxFilter,\n imperviousRoofMin: roofMinFilter,\n imperviousRoofMax: roofMaxFilter,\n impervAreaMin: totalMinFilter,\n impervAreaMax: totalMaxFilter,\n nonRes: nonResidentialFilter,\n condos: condosFilter,\n cap: capFilter,\n gsi: gsiFilter,\n numParcels: defaultRequestedParcelsCount,\n });\n\n const requestedParcels = calculateRequestedParcelIDs({\n aisGeocoderResult,\n savedParcels,\n interestedParcels,\n enrolledParcels,\n interestedFilter,\n savedPropertiesFilter,\n enrolledFilter,\n });\n\n const url = requestedParcels\n ? `${parcelsAPIUrl}?${baseParams}&${querystring.stringify(\n requestedParcels,\n )}`\n : `${parcelsAPIUrl}?${baseParams}`;\n\n csrfRequest\n .put(url, esriJsonBbox, {\n cancelToken: new CancelToken(c => {\n cancelAxiosRequest = c;\n }),\n })\n .then(({ data }) => selectEligibleParcels(data))\n .then(data => dispatch(completeFetchParcelData(data)))\n .catch(thrown =>\n dispatch(\n isCancel(thrown)\n ? cancelFetchParcelData()\n : failFetchParcelData(),\n ),\n );\n };\n}\n\nexport function updateMap(data) {\n return dispatch => {\n dispatch({\n type: UPDATE_MAP,\n payload: data,\n });\n return dispatch(updateAISGeocoderFitBounds(data.bounds));\n };\n}\n\nexport function changeParcelsQueryBbox(bbox) {\n return {\n type: bbox ? CHANGE_PARCELS_QUERY_BBOX : REDUX_NO_OP,\n payload: bbox,\n };\n}\n\nexport function resetFilters() {\n return dispatch => {\n dispatch(clearAISGeocoderData());\n dispatch({\n type: REFETCH_ON_EMPTY_QUERY,\n });\n dispatch({\n type: RESET_FILTERS,\n });\n\n return dispatch(fetchParcels());\n };\n}\n\nexport function changeSavedFilter() {\n return dispatch => {\n dispatch({\n type: CHANGE_SAVED_FILTER,\n });\n\n return dispatch(fetchParcels());\n };\n}\n\nexport function changeMapExtentFilter() {\n return dispatch => {\n dispatch({\n type: CHANGE_MAP_EXTENT_FILTER,\n });\n\n return dispatch(fetchParcels());\n };\n}\n\nexport function selectEligibleFilter() {\n return dispatch => {\n dispatch({\n type: SELECT_ELIGIBLE_FILTER,\n });\n\n return dispatch(fetchParcels());\n };\n}\n\nexport function selectInterestedFilter() {\n return dispatch => {\n dispatch({\n type: SELECT_INTERESTED_FILTER,\n });\n\n return dispatch(fetchParcels());\n };\n}\n\nexport function selectEnrolledFilter() {\n return dispatch => {\n dispatch({\n type: SELECT_ENROLLED_FILTER,\n });\n\n return dispatch(fetchParcels());\n };\n}\n\nexport function changeNonResFilter() {\n return dispatch => {\n dispatch({\n type: CHANGE_NONRES_FILTER,\n });\n\n return dispatch(fetchParcels());\n };\n}\n\nexport function changeCondosFilter() {\n return dispatch => {\n dispatch({\n type: CHANGE_CONDOS_FILTER,\n });\n\n return dispatch(fetchParcels());\n };\n}\n\nexport function changeCAPFilter(payload) {\n return dispatch => {\n dispatch({\n type: CHANGE_CAP_FILTER,\n payload,\n });\n\n return dispatch(fetchParcels());\n };\n}\n\nexport function changeGSIFilter(payload) {\n return dispatch => {\n dispatch({\n type: CHANGE_GSI_FILTER,\n payload,\n });\n\n return dispatch(fetchParcels());\n };\n}\n\nexport function changeGroundMin(payload) {\n return dispatch => {\n dispatch({\n type: CHANGE_GROUND_MIN,\n payload,\n });\n\n return dispatch(fetchParcels());\n };\n}\n\nexport function changeGroundMax(payload) {\n return dispatch => {\n dispatch({\n type: CHANGE_GROUND_MAX,\n payload,\n });\n\n return dispatch(fetchParcels());\n };\n}\n\nexport function changeRoofMin(payload) {\n return dispatch => {\n dispatch({\n type: CHANGE_ROOF_MIN,\n payload,\n });\n\n return dispatch(fetchParcels());\n };\n}\n\nexport function changeRoofMax(payload) {\n return dispatch => {\n dispatch({\n type: CHANGE_ROOF_MAX,\n payload,\n });\n\n return dispatch(fetchParcels());\n };\n}\n\nexport function changeTotalMin(payload) {\n return dispatch => {\n dispatch({\n type: CHANGE_TOTAL_MIN,\n payload,\n });\n\n return dispatch(fetchParcels());\n };\n}\n\nexport function changeTotalMax(payload) {\n return dispatch => {\n dispatch({\n type: CHANGE_TOTAL_MAX,\n payload,\n });\n\n return dispatch(fetchParcels());\n };\n}\n\nfunction startDeveloperSignIn() {\n return {\n type: START_DEVELOPER_SIGN_IN,\n };\n}\n\nfunction failDeveloperSignIn(payload) {\n return {\n type: FAIL_DEVELOPER_SIGN_IN,\n payload,\n };\n}\n\nfunction completeDeveloperSignIn(payload) {\n return dispatch => {\n if (payload.vendorInfo) {\n dispatch(completeVendorSignIn(payload.vendorInfo));\n }\n\n return dispatch({\n type: COMPLETE_DEVELOPER_SIGN_IN,\n payload,\n });\n };\n}\n\nexport function signInDeveloper() {\n return (dispatch, getState) => {\n dispatch(startDeveloperSignIn());\n\n const {\n auth: { email, password },\n detailsPage: { parcelIdFromLoginAttempt },\n } = getState();\n\n csrfRequest\n .post(retrofitMapLoginUrl, { email, password })\n .then(({ data }) => dispatch(completeDeveloperSignIn(data)))\n .catch(() =>\n dispatch(failDeveloperSignIn({ parcelIdFromLoginAttempt })),\n );\n };\n}\n\nexport function sessionSignInDeveloper(history) {\n return (dispatch, getState) => {\n const {\n auth: { fetching, error, signedIn },\n } = getState();\n\n if (signedIn || fetching || error) {\n return;\n }\n\n const parcelIdFromLoginAttempt = parcelIdFromHistory(history);\n\n dispatch(startDeveloperSignIn());\n csrfRequest\n .get(retrofitMapLoginUrl)\n .then(({ data }) => dispatch(completeDeveloperSignIn(data)))\n .catch(() => {\n dispatch(failDeveloperSignIn({ parcelIdFromLoginAttempt }));\n history.replace(ROUTES.welcome);\n });\n };\n}\n\nexport function resetRetrofitMap() {\n return {\n type: RESET_RETROFIT_MAP,\n };\n}\n\nfunction startDeveloperSignOut() {\n return {\n type: START_DEVELOPER_SIGN_OUT,\n };\n}\n\nfunction failDeveloperSignOut() {\n return {\n type: FAIL_DEVELOPER_SIGN_OUT,\n };\n}\n\nfunction completeDeveloperSignOut() {\n return {\n type: COMPLETE_DEVELOPER_SIGN_OUT,\n };\n}\n\nexport function signOutDeveloper(history) {\n return (dispatch, getState) => {\n dispatch(startDeveloperSignOut());\n\n const {\n auth: { email, password },\n } = getState();\n\n cancelPriorRequest();\n maybeCancelPriorAISGeocoderRequest();\n\n csrfRequest\n .post(retrofitMapLogoutUrl, { email, password })\n .then(() => history.push(ROUTES.welcome))\n .then(() => dispatch(completeDeveloperSignOut()))\n .then(() => dispatch(resetRetrofitMap()))\n .then(() => dispatch(resetLatLngParcelSearch()))\n .catch(() => dispatch(failDeveloperSignOut()));\n };\n}\n\nexport function setDeveloperSignInEmail(payload) {\n return {\n type: UPDATE_DEVELOPER_AUTH_EMAIL,\n payload,\n };\n}\n\nexport function setDeveloperSignInPassword(payload) {\n return {\n type: UPDATE_DEVELOPER_AUTH_PASSWORD,\n payload,\n };\n}\n\nexport function openRoofFilter() {\n return {\n type: OPEN_ROOF_FILTER,\n };\n}\n\nexport function openGroundFilter() {\n return {\n type: OPEN_GROUND_FILTER,\n };\n}\n\nexport function openTotalFilter() {\n return {\n type: OPEN_TOTAL_FILTER,\n };\n}\n\nexport function openStatusFilter() {\n return {\n type: OPEN_STATUS_FILTER,\n };\n}\n\nexport function openCharacteristicsFilter() {\n return {\n type: OPEN_CHARACTERISTICS_FILTER,\n };\n}\n\nexport function closeAllFilters() {\n return {\n type: CLOSE_ALL_FILTERS,\n };\n}\n\nfunction startConfirmEmail() {\n return {\n type: START_CONFIRM_EMAIL,\n };\n}\n\nfunction failConfirmEmail() {\n return {\n type: FAIL_CONFIRM_EMAIL,\n };\n}\n\nfunction completeConfirmEmail() {\n return {\n type: COMPLETE_CONFIRM_EMAIL,\n };\n}\n\nexport function confirmEmail(key) {\n return dispatch => {\n dispatch(startConfirmEmail());\n csrfRequest\n .post(confirmEmailUrl, {\n key,\n })\n .then(() => dispatch(completeConfirmEmail()))\n .catch(() => dispatch(failConfirmEmail()));\n };\n}\n\nexport function showTermsOfUseModal() {\n return {\n type: SHOW_TERMS_OF_USE_MODAL,\n };\n}\n\nexport function hideTermsOfUseModal() {\n return {\n type: HIDE_TERMS_OF_USE_MODAL,\n };\n}\n\nexport function showDeleteAccountModal() {\n return {\n type: SHOW_DELETE_ACCOUNT_MODAL,\n };\n}\n\nexport function hideDeleteAccountModal() {\n return (dispatch, getState) => {\n const {\n mainPage: { deleteModalErrorMessage },\n } = getState();\n\n if (deleteModalErrorMessage) {\n dispatch({\n type: RESET_DELETE_ACCOUNT_STATUS,\n });\n }\n\n return dispatch({\n type: HIDE_DELETE_ACCOUNT_MODAL,\n });\n };\n}\n\nexport function hideErrorModal() {\n return {\n type: HIDE_ERROR_MODAL,\n };\n}\n\nexport function toggleImperviousLayer() {\n return (dispatch, getState) => {\n const {\n mainPage: { imperviousLayerVisible },\n } = getState();\n\n return dispatch({\n type: imperviousLayerVisible\n ? HIDE_IMPERVIOUS_LAYER\n : SHOW_IMPERVIOUS_LAYER,\n });\n };\n}\n\nexport function toggleSewerLayer() {\n return (dispatch, getState) => {\n const {\n mainPage: { sewerLayerVisible },\n } = getState();\n\n return dispatch({\n type: sewerLayerVisible ? HIDE_SEWER_LAYER : SHOW_SEWER_LAYER,\n });\n };\n}\n\nexport function toggleBasemap() {\n return (dispatch, getState) => {\n const {\n mainPage: { visibleBasemap },\n } = getState();\n\n return dispatch({\n type:\n visibleBasemap === basemapsEnum.cityCartoBasemap\n ? SHOW_AERIAL_BASEMAP\n : SHOW_CARTO_BASEMAP,\n });\n };\n}\n\nfunction startFetchCSV(payload) {\n return {\n type: START_FETCH_CSV,\n payload,\n };\n}\n\nfunction failFetchCSV(err) {\n window.console.warn(err);\n\n return {\n type: FAIL_FETCH_CSV,\n };\n}\n\nfunction completeFetchCSV(payload) {\n CSVMaker.saveCSV(payload);\n\n return {\n type: COMPLETE_FETCH_CSV,\n payload,\n };\n}\n\nexport function fetchCSV({ fetchInterested = false, fetchSaved = false } = {}) {\n return (dispatch, getState) => {\n const {\n mainPage: {\n savedParcels,\n interestedParcels,\n csv: {\n data,\n fetchInterested: previousFetchInterested,\n fetchSaved: previousFetchSaved,\n },\n },\n } = getState();\n\n dispatch(\n startFetchCSV({\n fetchInterested,\n fetchSaved,\n }),\n );\n\n if (\n data &&\n previousFetchInterested === fetchInterested &&\n previousFetchSaved === fetchSaved\n ) {\n return dispatch(completeFetchCSV(data));\n }\n\n if (!savedParcels.length && !interestedParcels.length) {\n return dispatch(failFetchCSV());\n }\n\n const requestedParcels = fetchInterested\n ? interestedParcels.map(({ parcelId }) => parcelId)\n : []\n .concat(fetchSaved ? savedParcels : [])\n .reduce(\n (acc, next) => acc.concat(acc.includes(next) ? [] : next),\n [],\n );\n\n const baseParams = querystring.stringify({\n nonRes: true,\n condos: true,\n apts: true,\n numParcels: requestedParcels.length,\n });\n\n const phillyBbox = L.latLngBounds(\n L.latLng(40.10538669840983, -74.82856750488283),\n L.latLng(39.7982249632104, -75.4973602294922),\n );\n\n return csrfRequest\n .put(\n `${parcelsAPIUrl}?${baseParams}&${querystring.stringify({\n requestedParcels,\n })}`,\n convertGeoJsonToAgsObject(L.rectangle(phillyBbox).toGeoJSON()),\n )\n .then(({ data: parcelData }) =>\n CSVMaker.formatParcelDataWithInterestedData(\n parcelData,\n interestedParcels,\n ),\n )\n .then(parcelDataWithInterested =>\n CSVMaker.createCSVStringWithHeaders(parcelDataWithInterested),\n )\n .then(csvData => dispatch(completeFetchCSV(csvData)))\n .catch(e => dispatch(failFetchCSV(e)));\n };\n}\n\nexport function togglePropertySearchMapWidth() {\n return (dispatch, getState) => {\n const {\n mainPage: {\n map: { expanded },\n },\n } = getState();\n\n return dispatch({\n type: expanded\n ? CONTRACT_PROPERTY_SEARCH_MAP\n : EXPAND_PROPERTY_SEARCH_MAP,\n });\n };\n}\n\nexport function togglePropertyDetailsMapWidth() {\n return (dispatch, getState) => {\n const {\n detailsPage: { mapExpanded },\n } = getState();\n\n return dispatch({\n type: mapExpanded\n ? CONTRACT_PROPERTY_DETAILS_MAP\n : EXPAND_PROPERTY_DETAILS_MAP,\n });\n };\n}\n\nexport function failDeleteVendorAccount(e) {\n window.console.warn(e);\n\n return {\n type: FAIL_DELETE_ACCOUNT_STATUS,\n };\n}\n\nexport function startDeleteVendorAccount() {\n return (dispatch, getState) => {\n const {\n auth: { id },\n } = getState();\n\n return csrfRequest\n .patch(`${API_BASE_URL}/users/${id}/`, {\n status: developerStatusTypes.deactivated,\n })\n .then(r =>\n dispatch({\n type: COMPLETE_DELETE_ACCOUNT,\n payload: r.data.status,\n }),\n )\n .then(() =>\n dispatch({\n type: COMPLETE_DEVELOPER_SIGN_OUT,\n }),\n )\n .catch(e => dispatch(failDeleteVendorAccount(e)));\n };\n}\n","module.exports = __webpack_public_path__ + \"stormwater/connect/img/favicon.ico\";","\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/resolve-url-loader/index.js!../../node_modules/postcss-loader/src/index.js??ref--7-3!../../node_modules/sass-loader/lib/loader.js??ref--7-4!./main.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/resolve-url-loader/index.js!../../node_modules/postcss-loader/src/index.js??ref--7-3!../../node_modules/sass-loader/lib/loader.js??ref--7-4!./main.scss\", function() {\n\t\tvar newContent = require(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/resolve-url-loader/index.js!../../node_modules/postcss-loader/src/index.js??ref--7-3!../../node_modules/sass-loader/lib/loader.js??ref--7-4!./main.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Imports\nexports.i(require(\"-!../../node_modules/css-loader/dist/cjs.js!../../fonts/marketing/fontello/css/pwdgrant.css\"), \"\");\nexports.i(require(\"-!../../node_modules/css-loader/dist/cjs.js!../../fonts/marketing/fontello/css/animation.css\"), \"\");\nexports.push([module.id, \"@import url(https://fonts.googleapis.com/css?family=Open+Sans:300,400,700);\", \"\"]);\n\n// Module\nexports.push([module.id, \".about-gsi-section,.costs-benefits-section,.learn-more-section{display:flex;flex-flow:column nowrap;align-items:center;justify-content:flex-start;margin-bottom:8rem;padding-right:1.6rem;padding-left:1.6rem}@media (max-width: 767px){.about-gsi-section,.costs-benefits-section,.learn-more-section{margin-bottom:4.8rem}}@media (max-width: 480px){.about-gsi-section,.costs-benefits-section,.learn-more-section{margin-bottom:2.4rem;padding-right:.8rem;padding-left:.8rem}}.about-gsi-section>.heading,.costs-benefits-section>.heading,.learn-more-section>.heading{max-width:600px;margin-bottom:1.6rem;font:3.6rem/5.4rem \\\"Open Sans\\\",sans-serif;font-weight:700;text-align:center}@media (max-width: 767px){.about-gsi-section>.heading,.costs-benefits-section>.heading,.learn-more-section>.heading{margin-bottom:.8rem;font:2.4rem/3.6rem \\\"Open Sans\\\",sans-serif;font-weight:700}}@media (max-width: 480px){.about-gsi-section>.heading,.costs-benefits-section>.heading,.learn-more-section>.heading{margin-bottom:.8rem;font:2rem/3.2rem \\\"Open Sans\\\",sans-serif;font-weight:700}}.about-gsi-section>.subhead,.costs-benefits-section>.subhead,.learn-more-section>.subhead{max-width:600px;margin-bottom:4rem;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;font-weight:400;text-align:center}@media (max-width: 767px){.about-gsi-section>.subhead,.costs-benefits-section>.subhead,.learn-more-section>.subhead{margin-bottom:2.4rem;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif}}.property-details-section,.retrofit-preferences-section,.matching-developers-section,.pwd-contact-section{display:flex;flex-flow:column nowrap;align-items:center;justify-content:flex-start;max-width:100vw;margin-bottom:8rem}.property-details-section>.heading,.retrofit-preferences-section>.heading,.matching-developers-section>.heading,.pwd-contact-section>.heading{margin-bottom:1.6rem;font:2.4rem/3.6rem \\\"Open Sans\\\",sans-serif;font-weight:700;text-align:center}.property-details-section>.subhead,.retrofit-preferences-section>.subhead,.matching-developers-section>.subhead,.pwd-contact-section>.subhead{max-width:600px;margin-bottom:4rem;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif;font-weight:400;text-align:center}.retrofit-preferences-section>.list>.listitem>.checkbox:focus+.label:before,.retrofit-preferences-section>.noidea>.item>.checkbox:focus+.label:before,.matching-developers-section>.form>.tos>.checkbox:focus+.label:before,.matching-developers>.matching-developer>.checkbox:focus+.label:before{box-shadow:0 0 2px 3px rgba(13,34,54,0.6)}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}table{border-collapse:collapse;border-spacing:0}/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}progress{vertical-align:baseline}template,[hidden]{display:none}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:bold}button,input{overflow:visible}button,select{text-transform:none}button,html [type=\\\"button\\\"],[type=\\\"reset\\\"],[type=\\\"submit\\\"]{-webkit-appearance:button}button::-moz-focus-inner,[type=\\\"button\\\"]::-moz-focus-inner,[type=\\\"reset\\\"]::-moz-focus-inner,[type=\\\"submit\\\"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=\\\"button\\\"]:-moz-focusring,[type=\\\"reset\\\"]:-moz-focusring,[type=\\\"submit\\\"]:-moz-focusring{outline:1px dotted ButtonText}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type=\\\"checkbox\\\"],[type=\\\"radio\\\"]{box-sizing:border-box;padding:0}[type=\\\"number\\\"]::-webkit-inner-spin-button,[type=\\\"number\\\"]::-webkit-outer-spin-button{height:auto}[type=\\\"search\\\"]{-webkit-appearance:textfield;outline-offset:-2px}[type=\\\"search\\\"]::-webkit-search-cancel-button,[type=\\\"search\\\"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{color:inherit;opacity:0.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}*,*::before,*::after{box-sizing:inherit}html{width:100%;font-size:62.5%;box-sizing:border-box}body{position:relative;width:100%;background-color:#fff;color:#0d2236;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif;font-weight:400}.root{position:relative;width:100%;margin:0}.root.-modal{height:100vh;overflow:hidden}._center{text-align:center}._nobreak{white-space:nowrap}input{color:#0d2236;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif;font-weight:400}em{font-style:italic}strong{font-weight:700}.button{padding:0 1em;border:0;border-radius:1px;background:none;color:#fff;text-align:center;cursor:pointer}.button:disabled{cursor:not-allowed;opacity:.3}.field{padding:0 1rem;border:1px solid #eee}.inlineicon{width:2rem;height:2rem;margin-right:.5em;vertical-align:text-bottom}.root{display:flex;flex-flow:column nowrap;align-items:stretch;justify-content:flex-start}.ReactModal__Body--open{overflow:hidden}.modal-overlay{display:flex;position:fixed;top:0;right:0;bottom:0;left:0;flex-flow:column nowrap;align-items:center;justify-content:center;background-color:rgba(62,69,77,0.65);z-index:30000}.modal-overlay>.modal-dialog{max-width:90%;max-height:90%;box-shadow:0 14px 28px rgba(0,0,0,0.25),0 10px 10px rgba(0,0,0,0.22);overflow:auto}@media (min-width: 481px){.address-search-control{min-width:320px}}.address-search-control>.form{display:flex;position:relative;flex-flow:row nowrap;align-items:stretch;justify-content:center;width:100%;height:4rem}@media (max-width: 480px){.address-search-control>.form{flex-direction:column;justify-content:flex-start;align-items:center;height:auto;margin:0 auto}}.address-search-control>.form>.icon{position:absolute;top:calc(2rem - 1.1rem);left:0.3rem;font-size:2rem;font-weight:300}.address-search-control>.form>.icon.icon-search{color:rgba(13,34,54,0.5)}.address-search-control>.form>.icon.icon-spinner{color:#007eaf}.address-search-control>.form>.field{flex:1;padding-left:3.4rem;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;font-weight:300}.address-search-control>.form>.field:focus{outline:3px solid #007eaf}@media (max-width: 480px){.address-search-control>.form>.field{flex:none;align-self:stretch;height:4rem}}.address-search-control>.form>.action{margin-left:1.6rem;border:1px solid #cc4a00;background-color:#cc4a00;color:#fff;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;font-weight:700;text-align:center;white-space:nowrap}.address-search-control>.form>.action:focus{outline:3px solid #007eaf}@media (max-width: 767px){.address-search-control>.form>.action{font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif}}@media (max-width: 480px){.address-search-control>.form>.action{flex:none;margin-top:1rem;margin-left:0;height:4rem;width:320px;max-width:100%}}.address-search-control>.error{margin-top:1.6em;padding:1.6rem;background-color:#e3d200;color:#0d2236;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;font-weight:700;text-align:center}.page-header{display:flex;flex-flow:column nowrap;align-items:center;justify-content:center}.page-header .text{max-width:60rem;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif;color:#0d2236;text-align:center}.page-header .header-control-bar{display:flex;flex-direction:row;width:100%;height:6rem;background-color:#005abd}.page-header .header-control-bar .menu-control-container{width:10%;margin:auto;color:white;text-align:center}.page-header .header-control-bar .menu-control-container .menu-control{max-width:50px;width:100%;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;font-weight:700}.page-header .header-control-bar .page-title-container{width:25%;margin-left:auto;margin-right:auto;margin-top:auto;margin-bottom:auto;color:white}.page-header .header-control-bar .page-title-container p{width:100%;text-align:left;margin-left:-5vw;font-weight:700;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif}.page-header .header-control-bar .logo-container{width:30%;margin-left:auto;margin-right:auto;margin-top:auto;margin-bottom:auto;color:white;text-align:center}.page-header .header-control-bar .right-spacer{width:35%}.page-header .sub-header{height:8rem}.page-header .sub-header p{margin-top:2rem}.hero-section{display:flex;flex-flow:column nowrap;align-items:center;justify-content:flex-start;padding:1rem 2.4rem 0;background-color:#007eaf}@media (max-width: 767px){.hero-section>.logo>.image{width:154px}}@media (max-width: 480px){.hero-section{padding:0 .8rem}}.hero-section>.heading{margin-top:-2rem;color:#fff;font:7.2rem/9.6rem \\\"Open Sans\\\",sans-serif;font-weight:300;line-height:1.4;text-align:center}@media (max-width: 767px){.hero-section>.heading{margin-top:-1rem;font:4.8rem/6.4rem \\\"Open Sans\\\",sans-serif}}@media (max-width: 480px){.hero-section>.heading{font:2.4rem/3.6rem \\\"Open Sans\\\",sans-serif;font-size:3.2rem;font-weight:700;line-height:1.4;text-transform:uppercase}}.hero-section>.subhead{max-width:600px;margin:2em auto;color:#fff;font:2rem/3.2rem \\\"Open Sans\\\",sans-serif;font-weight:400;text-align:center}@media (max-width: 767px){.hero-section>.subhead{font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif}}@media (max-width: 480px){.hero-section>.subhead{margin-top:1em;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif}}.parcel-address-section{display:flex;flex-flow:row nowrap;align-items:center;justify-content:center;padding:0 2.4rem 3.2rem;background-color:#036791}@media (max-width: 480px){.parcel-address-section{padding-right:.8rem;padding-left:.8rem}}.parcel-address-section .maskedmap{width:100%;height:100%;cursor:default;background:rgba(0,0,0,0);margin:auto}.parcel-address-section>.parcel-list-section{width:100%;background-color:#036791;color:#fff}.parcel-list-section{display:flex;flex-flow:row nowrap;align-items:center;justify-content:center;max-width:600px;padding:1.6rem 0 0}@media (min-width: 768px){.parcel-list-section.-has-parcels>.address-lookup-section{width:calc(100% - 100px)}}.parcel-list-section>.parcel-mosaic-container{display:flex;flex-flow:row wrap;margin-bottom:auto}@media (max-width: 767px){.parcel-list-section>.parcel-mosaic-container{display:none}}.parcel-list-section>.parcel-mosaic-container:empty{display:none}.parcel-address-section .parcel-list-section>.parcel-mosaic-container{width:200px;height:200px;margin-left:-100px}.learn-more-section .parcel-list-section>.parcel-mosaic-container{width:120px;height:120px;margin-left:-120px}.parcel-list-section>.parcel-mosaic-container .parcel-mosaic-branch{display:flex;flex-flow:row wrap}.parcel-list-section>.address-lookup-section{display:flex;flex-flow:column nowrap;align-items:center;justify-content:center;width:100%;max-width:600px}.parcel-list-section>.address-lookup-section>.address-search-container{width:100%}.parcel-list-section>.address-lookup-section>.address-search-container>.heading{margin-bottom:.4rem}.parcel-address-section .parcel-list-section>.address-lookup-section>.address-search-container>.heading{width:100%;font:2rem/3.2rem \\\"Open Sans\\\",sans-serif;font-weight:700;text-align:center;text-transform:uppercase}@media (max-width: 767px){.parcel-address-section .parcel-list-section>.address-lookup-section>.address-search-container>.heading{font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif}}.learn-more-section .parcel-list-section>.address-lookup-section>.address-search-container>.heading{font:2.4rem/3.6rem \\\"Open Sans\\\",sans-serif;font-weight:700;text-align:center}.parcel-list-section>.address-lookup-section>.address-search-container>.subheading{width:100%;margin-bottom:2rem;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif;font-weight:400;text-align:center}.parcel-list-section>.address-lookup-section>.search-results{width:100%;max-width:600px;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;font-weight:400;white-space:nowrap}.parcel-list-section>.address-lookup-section>.search-results+.address-search-container{margin-top:2.4rem}.parcel-list-section>.address-lookup-section>.search-results+.address-search-container .action{position:relative;width:4rem;margin-left:.8rem;padding:0;text-indent:100%;white-space:nowrap;overflow:hidden}.parcel-list-section>.address-lookup-section>.search-results+.address-search-container .action::after{content:\\\"\\\";position:absolute;font-family:\\\"pwdgrant\\\";font-style:normal;font-weight:normal;speak:none;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:flex;top:0;right:0;bottom:0;left:0;flex-flow:row nowrap;align-items:center;justify-content:center;width:100%;height:100%;margin:0;font-size:2.2rem;text-indent:initial}.parcel-list-section>.address-lookup-section>.search-results .search-results-table{width:100%;line-height:3}.parcel-list-section>.address-lookup-section>.search-results .search-results-table td:first-of-type,.parcel-list-section>.address-lookup-section>.search-results .search-results-table th:first-of-type{padding-left:.8rem;text-align:left}.parcel-list-section>.address-lookup-section>.search-results .search-results-table td:last-of-type,.parcel-list-section>.address-lookup-section>.search-results .search-results-table th:last-of-type{text-align:right}.parcel-list-section>.address-lookup-section>.search-results .search-results-table th{font:1.2rem/1.6rem \\\"Open Sans\\\",sans-serif;opacity:.8;text-transform:uppercase}.parcel-list-section>.address-lookup-section>.search-results .search-results-table .clear-parcel-btn{width:2rem;margin-left:.8rem;padding:0;border:0;background:none;color:inherit;line-height:1.2rem;opacity:.5;cursor:pointer}.parcel-list-section>.address-lookup-section>.search-results .search-results-table .future-savings{background-color:#0d84b3;font-weight:700}.parcel-list-section>.address-lookup-section>.search-results .search-results-table .future-savings td:last-of-type{padding-right:2.8rem}.parcel-list-section>.address-lookup-section>.search-results .search-results-sign-up{padding-top:1rem;text-align:center}.parcel-list-section>.address-lookup-section>.search-results .search-results-sign-up a{color:inherit;font:inherit;font-weight:700}.parcel-list-section>.address-lookup-section>.search-results .search-results-footer{display:flex;flex-flow:row nowrap;padding-top:2rem;opacity:.8;font:1.2rem/1.6rem \\\"Open Sans\\\",sans-serif;white-space:nowrap}@media (max-width: 480px){.parcel-list-section>.address-lookup-section>.search-results .search-results-footer{flex-wrap:wrap;justify-content:center;padding-top:2rem}}.parcel-list-section>.address-lookup-section>.search-results .search-results-footer button{margin:0 0 0 1em;padding:0;border:0;background:none;color:inherit;font:inherit;font-weight:700;cursor:pointer}.keep-scrolling-section{display:flex;flex-flow:column nowrap;align-items:center;justify-content:center;padding:1.6rem;color:#0d2236;font:2rem/3.2rem \\\"Open Sans\\\",sans-serif}@media (max-width: 480px){.keep-scrolling-section{padding:.8rem}}.keep-scrolling-section>.action{border:0;background:none;cursor:pointer}.keep-scrolling-section>.action i{color:rgba(13,34,54,0.14)}.about-gsi-section>.subhead{margin-bottom:20px}.about-gsi-section a{color:#005abd}.about-gsi-section>.link-blocks{width:100%;display:flex;justify-content:center;margin-bottom:20px}.about-gsi-section>.link-blocks .link-block{display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:20px;width:320px;background:#FFFFFF}.about-gsi-section>.link-blocks .link-block .link-block-details{display:flex;flex-direction:column;align-items:center}.about-gsi-section>.link-blocks .link-block .link-block-icon{font-style:normal;font-weight:400;font-size:48px;line-height:16px;text-align:center;color:#005abd;margin:20px 0px}.about-gsi-section>.link-blocks .link-block .link-block-title{font-weight:600;font-size:16px;line-height:16px;color:#4B4A4C;flex:none;flex-grow:0}.about-gsi-section>.link-blocks .link-block .link-block-desc{color:#4B4A4C;flex:none;align-self:stretch;flex-grow:0;margin:20px 0px}.about-gsi-section>.link-blocks .link-block .link-block-link{font-weight:600;font-size:16px;line-height:16px;color:#005abd;text-decoration:none}.about-gsi-section>.link-blocks .link-block .link-block-arrow-right{font-style:normal;font-weight:400;font-size:16px;line-height:16px;color:#005abd}.gsi-album{display:flex;position:relative;flex-flow:row nowrap;align-items:flex-start;justify-content:space-between;width:100%;max-width:700px;height:240px}.gsi-album>.action{flex:1;height:25%;margin:0 2px;border:0;border-top:2px solid transparent;border-bottom:3px solid rgba(13,34,54,0.3);background:#fff;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif;line-height:1.35;text-align:center;cursor:pointer}@media (max-width: 767px){.gsi-album>.action{font:1.2rem/1.6rem \\\"Open Sans\\\",sans-serif}}@media (max-width: 480px){.gsi-album>.action{margin:0 1px;padding:0;font:1rem/1.6rem \\\"Open Sans\\\",sans-serif}}.gsi-album>.action.-on{border-bottom-color:#007eaf;font-weight:700;z-index:200}.gsi-album>.action.-on+.details{opacity:1;z-index:100}.gsi-album>.action:focus{outline:0;border-bottom-color:#007eaf}.gsi-album>.action>.image{display:none;width:100%}.gsi-album>.details{display:flex;position:absolute;top:35%;right:0;left:0;flex-flow:row nowrap;align-items:flex-start;justify-content:flex-start;width:100%;transition:opacity 250ms;background-color:#fff;opacity:0}.gsi-album>.details>.name{margin-bottom:1.6rem;font:2.4rem/3.6rem \\\"Open Sans\\\",sans-serif;font-weight:700;text-align:center}@media (max-width: 767px){.gsi-album>.details>.image{width:64px}}@media (max-width: 480px){.gsi-album>.details>.image{display:none}}.gsi-album>.details>.details-text{padding-left:2rem}@media (max-width: 480px){.gsi-album>.details>.details-text{padding-left:0}}.gsi-album>.details>.details-text .credit-expl-lnk{display:flex;flex-direction:row;align-items:center;color:#cc4a00;padding-top:2rem}.gsi-album>.details>.details-text .credit-expl-lnk p{font:1.2rem/1.6rem \\\"Open Sans\\\",sans-serif;font-weight:700}.gsi-album>.details>.details-text .credit-expl-lnk i{font-size:2rem}.gsi-album>.details>.details-text>.text{max-width:100%;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif;text-align:left}@media (max-width: 767px){.gsi-album>.details>.details-text>.text{font:1.2rem/1.6rem \\\"Open Sans\\\",sans-serif}}.costs-benefits-section .property-information{margin:2rem 0;color:#0d2236;text-align:center}@media (max-width: 767px){.costs-benefits-section .property-information{margin:0}}.costs-benefits-section .property-information>.heading{margin-bottom:2rem;font:2.4rem/3.6rem \\\"Open Sans\\\",sans-serif;font-weight:700}@media (max-width: 767px){.costs-benefits-section .property-information>.heading{margin-bottom:.8rem;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;font-weight:700}}.costs-benefits-section .property-information>.heading.-on{color:#cc4a00}.costs-benefits-section .property-information>.subhead{font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif}.retrofit-estimator{display:flex;flex-flow:column nowrap;align-items:center;justify-content:center;width:100%;max-width:450px}.retrofit-estimator .line-item-progress-bar{padding-left:10px;padding-top:2px;margin-top:auto;margin-bottom:auto;display:flex;flex-flow:row nowrap}.retrofit-estimator>.line-item-group{display:flex;flex-flow:column nowrap;width:100%;padding-top:3rem}.retrofit-estimator>.line-item-group>.heading{position:relative;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;font-weight:700;text-transform:uppercase}.retrofit-estimator>.line-item-group>.heading>.icon{margin-left:.5em;color:rgba(13,34,54,0.6);font-size:1.5rem;cursor:help}.retrofit-estimator>.line-item-group>.heading>.icon:hover+.tooltip{opacity:1;pointer-events:auto}.retrofit-estimator>.line-item-group>.heading>.tooltip{opacity:0;pointer-events:none;position:absolute;bottom:10%;left:10%;max-width:300px;padding:1rem;transition:opacity 150ms 115ms;background-color:#fff;color:#0d2236;font:1.2rem/1.6rem \\\"Open Sans\\\",sans-serif;text-align:left;text-transform:none;box-shadow:0 1px 16px rgba(13,34,54,0.6);z-index:1000}.retrofit-estimator>.line-item-group>.heading>.tooltip:hover,.retrofit-estimator>.line-item-group>.heading>.tooltip:active{opacity:1;pointer-events:auto;transition:opacity 150ms 1000ms}.retrofit-estimator>.line-item-group>.line-item{display:flex;position:relative;flex-flow:row nowrap;align-items:center;justify-content:flex-start;margin-top:1rem;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif}@media (max-width: 767px){.retrofit-estimator>.line-item-group>.line-item{font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif}}.retrofit-estimator>.line-item-group>.line-item::after{position:absolute;right:0;bottom:6px;left:0;width:100%;height:0;border-bottom:1px dashed #0d2236;content:' ';opacity:.5;z-index:0}@media (max-width: 480px){.retrofit-estimator>.line-item-group>.line-item::after{display:none}}.retrofit-estimator>.line-item-group>.line-item>.label{padding-right:1.6rem;background-color:#fff;font-weight:300;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;z-index:1}.retrofit-estimator>.line-item-group>.line-item>.label>.hint{margin-left:.8em;color:rgba(13,34,54,0.6);font:1rem/1.6rem \\\"Open Sans\\\",sans-serif;font-weight:700;text-transform:uppercase}.retrofit-estimator>.line-item-group>.line-item>.value{flex:none;margin-left:auto;padding-left:.5em;background-color:#fff;font-weight:700;text-align:right;white-space:nowrap;z-index:1}.retrofit-estimator>.line-item-group>.line-item>.value.-property-details{font-weight:400}.retrofit-estimator>.line-item-group>.line-item>.value.-property-details.-on{color:#cc4a00}.retrofit-estimator>.line-item-group>.line-item>.value.-retrofit-scope{color:#005abd;display:flex;width:170px}.retrofit-estimator>.line-item-group>.line-item>.value.-retrofit-scope>.slider-control{display:flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;align-self:stretch;width:100px;padding-right:2rem;background-color:#fff;z-index:1;box-sizing:content-box}.retrofit-estimator>.line-item-group>.line-item>.value.-total-savings{color:#008a28;font:2rem/3.2rem \\\"Open Sans\\\",sans-serif}.retrofit-estimator>.line-item-group.-estimate-total{justify-content:center;height:4rem;min-height:7.2rem;margin-top:3.2rem;padding:0 1.6rem;background-color:#008a28;color:#fff;box-sizing:content-box}@media (max-width: 480px){.retrofit-estimator>.line-item-group.-estimate-total{padding-right:.8rem;padding-left:.8rem}}.retrofit-estimator>.line-item-group.-estimate-total>.line-item{margin-top:0}.retrofit-estimator>.line-item-group.-estimate-total>.line-item::after{border-bottom-color:#fff}.retrofit-estimator>.line-item-group.-estimate-total>.line-item>.label{width:7em;background-color:#008a28;color:#fff;font-weight:700}.retrofit-estimator>.line-item-group.-estimate-total>.line-item>.value{background-color:#008a28;color:#fff;font:2.4rem/3.6rem \\\"Open Sans\\\",sans-serif;font-weight:700;display:flex;width:225px}@media (max-width: 767px){.retrofit-estimator>.line-item-group.-estimate-total>.line-item>.value{font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif}}.retrofit-estimator>.line-item-group.-estimate-total>.line-item>.value>.slider-control{background-color:#008a28;display:flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;align-self:stretch;width:200px;padding-right:2rem;z-index:1;box-sizing:content-box}.retrofit-estimator>.estimate-disclaimer{max-width:100%;margin-top:3rem;font:1.2rem/1.6rem \\\"Open Sans\\\",sans-serif;color:#0d2236}.retrofit-estimator>.estimate-manual-link{display:flex;flex-flow:row nowrap;align-items:center;justify-content:center;width:100%;margin-top:4rem;padding:.8rem 2.4rem;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;font-weight:700}.retrofit-estimator>.estimate-manual-link:link,.retrofit-estimator>.estimate-manual-link:visited,.retrofit-estimator>.estimate-manual-link:focus,.retrofit-estimator>.estimate-manual-link:hover,.retrofit-estimator>.estimate-manual-link:active{color:#005abd;text-decoration:none}@media (max-width: 480px){.retrofit-estimator>.estimate-manual-link br{display:none}}.retrofit-estimator>.estimate-manual-link:hover{background-color:#005abd;color:#fff}.retrofit-estimator>.estimate-manual-link>.image{margin-right:2.4rem}.learn-more-section{margin-bottom:0;padding-top:4rem;background-color:#b8dde1}.learn-more-section>.property-details-section{width:100%;margin-top:2.4rem}.property-details-section .maskedmap{width:100%;height:100%;cursor:default;background:rgba(255,255,255,0.5) !important;margin:auto}.property-details-section>.parcel-list-section{width:100%;color:#0d2236}.property-details-section>.parcel-list-section.-has-parcels{width:auto}@media (max-width: 767px){.property-details-section>.parcel-list-section.-has-parcels{width:100%;max-width:420px}}.property-details-section>.parcel-list-section.-has-parcels .address-lookup-section{align-self:flex-start}.property-details-section>.parcel-list-section .search-results-table{font-weight:700}@media (max-width: 767px){.property-details-section>.parcel-list-section .search-results-table{background-color:rgba(13,34,54,0.14)}}.property-details-section>.parcel-list-section .search-results-table .clear-parcel-btn{margin-right:.8rem}.property-amounts{display:flex;flex-flow:row nowrap;align-items:flex-start;justify-content:space-between}.property-amounts>.property-amount{display:flex;flex-flow:column nowrap;align-items:center;justify-content:flex-start}.property-amounts>.property-amount>.amount{font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;font-weight:700;margin-bottom:.8rem}.property-amounts>.property-amount>.name{font:1.2rem/1.6rem \\\"Open Sans\\\",sans-serif;font-weight:700}.retrofit-preferences-section>.list{display:flex;flex-flow:row wrap;align-content:flex-start;align-items:flex-start;justify-content:space-between;width:100%;max-width:465px}.retrofit-preferences-section>.list>.listitem{display:flex;position:relative;flex-flow:row nowrap;align-items:center;justify-content:flex-start;width:50%;margin-bottom:1.6rem}.retrofit-preferences-section>.list>.listitem>.checkbox,.retrofit-preferences-section>.noidea>.item>.checkbox{flex:none;opacity:0}.retrofit-preferences-section>.list>.listitem>.checkbox:checked+label,.retrofit-preferences-section>.noidea>.item>.checkbox:checked+label{font-weight:700}.retrofit-preferences-section>.list>.listitem>.checkbox:checked+label:after,.retrofit-preferences-section>.noidea>.item>.checkbox:checked+label:after{content:\\\"\\\";position:absolute;font-family:\\\"pwdgrant\\\";font-style:normal;font-weight:normal;speak:none;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;bottom:calc(50% - 1rem);left:0;width:2rem;height:2rem;margin:0;padding:0;font-size:1.6rem;line-height:2rem}.retrofit-preferences-section>.list>.listitem>.label,.retrofit-preferences-section>.noidea>.item>.label{padding-left:1.6rem;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;text-overflow:ellipsis;overflow:hidden}@media (max-width: 480px){.retrofit-preferences-section>.list>.listitem>.label,.retrofit-preferences-section>.noidea>.item>.label{font:1.2rem/1.6rem \\\"Open Sans\\\",sans-serif}}.retrofit-preferences-section>.list>.listitem>.label:before,.retrofit-preferences-section>.noidea>.item>.label:before{position:absolute;bottom:calc(50% - 1rem);left:0;width:2rem;height:2rem;border:2px solid #0d2236;content:' ';overflow:hidden}.retrofit-preferences-section>.list>.listitem>.info{flex:none;padding:0;margin-left:0.5rem;border:0;background:none;color:rgba(13,34,54,0.6);cursor:help}.retrofit-preferences-section>.list>.listitem>.info:hover+.tooltip,.retrofit-preferences-section>.list>.listitem>.info:active+.tooltip{opacity:1}.retrofit-preferences-section>.list>.listitem>.info i{font-size:1.5rem;padding-top:1px;padding-bottom:1px}.retrofit-preferences-section>.list>.listitem:nth-child(odd)>.tooltip{left:0}.retrofit-preferences-section>.list>.listitem:nth-child(even)>.tooltip{right:0}.retrofit-preferences-section>.list>.listitem>.tooltip{display:flex;position:absolute;top:100%;flex-flow:row nowrap;width:200%;padding:2rem;transition:opacity 150ms 115ms;background-color:#fff;color:#0d2236;font:1.2rem/1.6rem \\\"Open Sans\\\",sans-serif;text-align:left;opacity:0;vertical-align:middle;pointer-events:none;box-shadow:5px 5px 5px rgba(13,34,54,0.14)}.retrofit-preferences-section>.list>.listitem>.tooltip .tooltip-text{display:flex;flex-direction:column;padding-left:2rem}.retrofit-preferences-section>.list>.listitem>.tooltip .tooltip-text h3{font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;font-weight:700}.retrofit-preferences-section>.list>.listitem>.tooltip .tooltip-text p{padding-top:2rem;font:1.2rem/1.6rem \\\"Open Sans\\\",sans-serif}.retrofit-preferences-section>.noidea{display:flex;flex-flow:column nowrap;align-items:center;justify-content:center;width:100%;max-width:420px;height:4.8rem;margin-top:1.6rem;background-color:rgba(255,255,255,0.3)}.retrofit-preferences-section>.noidea>.item{display:flex;position:relative;flex-flow:row nowrap;align-items:center;justify-content:flex-start}.retrofit-preferences-section>.noidea>.item>.checkbox:checked+label{white-space:nowrap}.retrofit-preferences-section>.noidea>.item>.checkbox:checked+label:before{background-color:#0d2236}.retrofit-preferences-section>.noidea>.item>.checkbox:checked+label:after{color:#fff}@media (max-width: 480px){.matching-developers-section{max-width:100vw;padding-right:.8rem;padding-left:.8rem}}.matching-developers-section>.form{display:flex;flex-flow:column nowrap;align-items:center;justify-content:flex-start;width:100%;max-width:600px}.matching-developers-section>.form>.match-by-type-developers-section>.vendor-selection{width:100%}.matching-developers-section>.form>.match-by-type-developers-section>.vendor-selection>.developer-interest{position:relative;font-size:1.6rem;font-weight:700;margin-bottom:1.6rem}.matching-developers-section>.form>.match-by-type-developers-section>.vendor-selection>.developer-interest>.icon{margin-left:.5em;color:rgba(13,34,54,0.6);font-size:1.5rem;cursor:help}.matching-developers-section>.form>.match-by-type-developers-section>.vendor-selection>.developer-interest>.icon:hover+.tooltip{opacity:1;pointer-events:auto}.matching-developers-section>.form>.match-by-type-developers-section>.vendor-selection>.developer-interest>.tooltip{opacity:0;pointer-events:none;position:absolute;top:100%;max-width:90%;padding:1rem;transition:opacity 150ms 115ms;background-color:#fff;color:#0d2236;font:1.2rem/1.6rem \\\"Open Sans\\\",sans-serif;text-align:left;text-transform:none;box-shadow:0 1px 16px rgba(13,34,54,0.6);z-index:1000}.matching-developers-section>.form>.match-by-type-developers-section>.vendor-selection>.developer-interest>.tooltip:hover,.matching-developers-section>.form>.match-by-type-developers-section>.vendor-selection>.developer-interest>.tooltip:active{opacity:1;pointer-events:auto;transition:opacity 150ms 1000ms}.matching-developers-section>.form>.match-by-type-developers-section>.developer-type-selection{width:100%;display:flex;justify-content:space-between;padding:1.2rem 1.6rem;background-color:rgba(255,255,255,0.3)}.matching-developers-section>.form>.match-by-type-developers-section>.developer-type-selection>.button{font-size:1.4rem;font-weight:400;border:none;border-bottom:3px solid transparent;background:none;padding:0;padding-bottom:0.2rem;color:#0d2236}.matching-developers-section>.form>.match-by-type-developers-section>.developer-type-selection>.button.-active{border-bottom-color:#0d2236;color:#0d2236;font-weight:700}.matching-developers-section>.form>.match-by-type-developers-section>.matching-developers{width:100%;margin-bottom:0.5rem;max-height:650px}.matching-developers-section>.form>.match-by-type-developers-section>.randomized-vendor-note{width:100%;font-size:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif;font-weight:400;font-style:italic;margin-bottom:4rem}.matching-developers-section>.form>.match-by-type-developers-section>.developer-search{display:flex;justify-content:space-between;width:inherit;margin:1rem 0}.matching-developers-section>.form>.match-by-type-developers-section>.developer-search>.search-control{position:relative;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;font-size:1.6rem;font-weight:400;display:flex;align-items:center;width:100%}.matching-developers-section>.form>.match-by-type-developers-section>.developer-search>.search-control.-search::after{content:\\\"\\\";position:absolute;font-family:\\\"pwdgrant\\\";font-style:normal;font-weight:normal;speak:none;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;left:0.8rem}.matching-developers-section>.form>.match-by-type-developers-section>.developer-search>.search-control>.input.-search{height:4rem;padding:0 1.6rem 0 3.6rem;border:1px solid #c6c4d2;line-height:4rem;width:inherit}.matching-developers-section>.form>.allow-developer-contacts{display:flex;position:relative;flex:none;flex-flow:column nowrap;align-items:left;justify-content:flex-start;width:100%;background-color:#fff;margin-bottom:4rem;padding:1rem 1rem 1rem 2rem}.matching-developers-section>.form>.allow-developer-contacts>.fieldset>.radios{align-items:flex-start;justify-content:flex-start;width:100%;margin-left:auto;margin-right:auto}.matching-developers-section>.form>.allow-developer-contacts>.fieldset>.radios .radio-container{padding-left:2rem;margin-left:auto;margin-right:auto;margin-top:20px;margin-bottom:20px}.matching-developers-section>.form>.allow-developer-contacts>.fieldset>.radios .radio-container input[type=radio]{display:none}.matching-developers-section>.form>.allow-developer-contacts>.fieldset>.radios .radio-container input[type=\\\"radio\\\"]:checked+label span.radio-btn::after{left:-1.9rem;width:.8rem;height:.8rem;background-color:#0d2236;border-radius:10px;font-weight:bold}.matching-developers-section>.form>.allow-developer-contacts>.fieldset>.radios .radio-container input[type=\\\"radio\\\"]:checked+label span.radio-btn{font-weight:bold}.matching-developers-section>.form>.allow-developer-contacts>.fieldset>.radios .radio-container>.label{flex:1;margin-right:1.6rem;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif;position:relative}.matching-developers-section>.form>.allow-developer-contacts>.fieldset>.radios .radio-container>.label span{width:2rem;height:2rem;background:none}.matching-developers-section>.form>.allow-developer-contacts>.fieldset>.radios .radio-container>.label:checked{font-weight:700}.matching-developers-section>.form>.allow-developer-contacts>.fieldset>.radios .radio-container>.label span::before,.matching-developers-section>.form>.allow-developer-contacts>.fieldset>.radios .radio-container>.label span::after{content:'';position:absolute;top:0;bottom:0;margin:auto;font-weight:700}.matching-developers-section>.form>.allow-developer-contacts>.fieldset>.radios .radio-container>.label span.radio-btn::before{left:-2.5rem;width:2rem;height:2rem;border:2px solid #0d2236;border-radius:50px}.matching-developers-section>.form>.allow-developer-contacts>.fieldset>.radios>.label>.radio{margin-right:.8rem}.matching-developers-section>.form>.note-to-developers{width:100%}.matching-developers-section>.form>.note-to-developers>.label{display:block;font-size:1.6rem;font-weight:700;margin-bottom:1.6rem}.matching-developers-section>.form>.note-to-developers>.field{display:block;width:100%;font-size:1.6rem;padding:0.75rem}.matching-developers-section>.form>.matching-developers{width:100%;margin-bottom:0.5rem;max-height:650px}.matching-developers-section>.form>.contact-form{width:100%}.matching-developers-section>.form>.contact-form .radios .radio input[type=radio]:checked ~ .check{border:2px solid #0d2236}.matching-developers-section>.form>.contact-form .radios .radio input[type=radio]:checked ~ .check::before{background:#0d2236}.matching-developers-section>.form>.contact-form .radios .radio input[type=radio]:checked ~ label{color:#0d2236}.matching-developers-section>.form>.button{width:100%;max-width:400px;height:4.8rem;margin:3.2rem 0 4.8rem;background-color:#005abd;font:2rem/3.2rem \\\"Open Sans\\\",sans-serif;font-weight:700;color:#fff}@media (max-width: 480px){.matching-developers-section>.form>.button{font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif;font-weight:700}}.matching-developers-section>.form>.text{width:100%;max-width:400px;margin-bottom:2.5rem;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif}.matching-developers-section>.form>.tos{display:flex;position:relative;align-items:center;justify-content:flex-start;height:4.8rem;margin-top:2rem}.matching-developers-section>.form>.tos>.label{font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif}.matching-developers-section>.form>.tos>.label:before{position:absolute;bottom:calc(50% - 1rem);left:-3rem;width:2rem;height:2rem;border:2px solid #0d2236;content:' ';overflow:hidden}.matching-developers-section>.form>.tos>.label>.button{color:#005abd;padding:0;font-weight:700}.matching-developers-section>.form>.tos>.required::after{position:absolute;top:1.3rem;right:-10rem;color:rgba(13,34,54,0.6);font-size:1rem;font-weight:700;content:'Required';text-align:right;text-transform:uppercase}.matching-developers-section>.form>.tos>.checkbox{position:absolute;opacity:0;pointer-events:none}.matching-developers-section>.form>.tos>.checkbox:checked+label{border-radius:2px}.matching-developers-section>.form>.tos>.checkbox:checked+label:after{content:\\\"\\\";position:absolute;font-family:\\\"pwdgrant\\\";font-style:normal;font-weight:normal;speak:none;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;bottom:calc(50% - 1rem);left:-3rem;width:2rem;height:2rem;margin:0;padding:0;font-size:1.6rem;line-height:2rem}.matching-developers-section>.subhead{text-align:left}.matching-developers{display:flex;flex-flow:column nowrap;align-items:stretch;justify-content:flex-start;max-width:600px;max-height:400px;overflow:scroll}.matching-developers>.matching-developer{display:flex;position:relative;flex-flow:column nowrap;align-items:stretch;justify-content:flex-start;margin-bottom:1px;padding:1.6rem;padding-left:6.4rem;background-color:#fff}.matching-developers>.matching-developer>div>.button{display:inline-block;text-align:center;color:#fff;background-color:#005abd;padding:0 1.5em;border-radius:8px;text-transform:uppercase;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:1rem;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif;font-weight:700;text-transform:none}.matching-developers>.matching-developer.-empty{padding-left:1.6rem;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;text-align:center}.matching-developers>.matching-developer>.checkbox{position:absolute;opacity:0;pointer-events:none}.matching-developers>.matching-developer>.checkbox:checked+label{font-weight:700;border-radius:2px}.matching-developers>.matching-developer>.checkbox:checked+label:after{content:\\\"\\\";position:absolute;font-family:\\\"pwdgrant\\\";font-style:normal;font-weight:normal;speak:none;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;top:2rem;left:1.6rem;width:2rem;height:2rem;margin:0;padding:0;font-size:1.6rem;line-height:2rem}.matching-developers>.matching-developer>.label{font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;font-weight:700}@media (max-width: 480px){.matching-developers>.matching-developer>.label{font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif;font-weight:700}}.matching-developers>.matching-developer>.label:before{position:absolute;top:2rem;left:1.6rem;width:2rem;height:2rem;border:2px solid #0d2236;border-radius:2px;content:' ';overflow:hidden}.matching-developers>.matching-developer>.developer-contact{display:flex;flex-flow:row wrap;align-items:flex-start;justify-content:flex-start;margin-top:1rem;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif}@media (max-width: 480px){.matching-developers>.matching-developer>.developer-contact{font:1.2rem/1.6rem \\\"Open Sans\\\",sans-serif}}.matching-developers>.matching-developer>.developer-contact>.middot{margin:0 1em}.matching-developers>.matching-developer>.developer-contact>.link.-web{font-weight:700}.matching-developers>.matching-developer>.developer-contact>.link.-web:link,.matching-developers>.matching-developer>.developer-contact>.link.-web:visited,.matching-developers>.matching-developer>.developer-contact>.link.-web:focus,.matching-developers>.matching-developer>.developer-contact>.link.-web:hover,.matching-developers>.matching-developer>.developer-contact>.link.-web:active{color:#005abd;text-decoration:none}.matching-developers>.matching-developer>.developer-contact>.link.-phone:link,.matching-developers>.matching-developer>.developer-contact>.link.-phone:visited,.matching-developers>.matching-developer>.developer-contact>.link.-phone:focus,.matching-developers>.matching-developer>.developer-contact>.link.-phone:hover,.matching-developers>.matching-developer>.developer-contact>.link.-phone:active{color:inherit;text-decoration:none}.matching-developers>.matching-developer>.developer-specialties{display:block;margin-top:1rem;color:rgba(13,34,54,0.6);font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif}@media (max-width: 480px){.matching-developers>.matching-developer>.developer-specialties{font:1.2rem/1.6rem \\\"Open Sans\\\",sans-serif}}.matching-developers>.matching-developer>.developer-specialties>.middot{margin:0 1em}.matching-developers-modal{background-color:#b8dde1;position:relative;width:100rem;padding:2.4rem;border-radius:0;border-width:0}.matching-developers-modal>.heading{margin-bottom:1.6rem;font:2rem/3.2rem \\\"Open Sans\\\",sans-serif;font-weight:700;text-align:center}.matching-developers-modal>.close{position:absolute;top:1.6rem;right:1.6rem;background:none;border:0;color:#0d2236;cursor:pointer;line-height:normal;overflow:visible;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:2.8rem}.matching-developers-modal>.matching-developers-section,.matching-developers-modal>.matching-developers-section .form .match-by-type-developers-section .randomized-vendor-note{margin-bottom:0}.contact-form{width:100%;max-width:400px;margin-top:4rem;margin-left:auto;margin-right:auto;padding-top:2rem}.contact-form>.heading{margin-bottom:1.6rem;font:2.4rem/3.6rem \\\"Open Sans\\\",sans-serif;font-weight:700;text-align:center}.contact-form>.label{display:block;position:relative;width:100%;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif}.contact-form>.label.-error{position:relative;color:#d0011b;font-weight:700}.contact-form>.label.-error:before{position:static;margin-right:.5em;color:#d0011b;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif;content:'★'}.contact-form>.label.-error>.field{border-color:#d0011b}.contact-form>.label.-required::after{position:absolute;top:0.1rem;right:0;color:rgba(13,34,54,0.6);font-size:1rem;font-weight:700;content:'Required';text-align:right;text-transform:uppercase}.contact-form>.label>.field{display:block;margin:.8rem 0 1.6rem;width:100%;height:4rem}.contact-form>.notes-field>.field{height:6em;padding:1rem}.contact-form>.fieldset>.label{width:100%;margin-bottom:1.6rem;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif}.contact-form>.fieldset>.radios{display:flex;flex-flow:row nowrap;align-items:flex-start;justify-content:flex-start;width:100%;margin-left:auto;margin-right:auto}.contact-form>.fieldset>.radios .radio-container{padding-left:2rem;margin-left:auto;margin-right:auto}.contact-form>.fieldset>.radios .radio-container input[type=radio]{display:none}.contact-form>.fieldset>.radios .radio-container input[type=\\\"radio\\\"]:checked+label span.radio-btn::after{left:-1.9rem;width:.8rem;height:.8rem;background-color:#0d2236;border-radius:10px}.contact-form>.fieldset>.radios .radio-container>.label{flex:1;margin-right:1.6rem;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif;position:relative}.contact-form>.fieldset>.radios .radio-container>.label span{width:2rem;height:2rem;background:none}.contact-form>.fieldset>.radios .radio-container>.label span::before,.contact-form>.fieldset>.radios .radio-container>.label span::after{content:'';position:absolute;top:0;bottom:0;margin:auto}.contact-form>.fieldset>.radios .radio-container>.label span.radio-btn::before{left:-2.5rem;width:2rem;height:2rem;border:2px solid #0d2236;border-radius:50px}.contact-form>.fieldset>.radios>.label>.radio{margin-right:.8rem}.contact-form .validation-errors{display:flex;flex-flow:column nowrap;align-items:flex-start;justify-content:flex-start;margin:2.4rem 0;padding:1.6rem;background-color:#e3d200;color:#0d2236;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif}.contact-form .validation-errors>.text{text-align:center;align-self:center}.contact-form .validation-errors>button{align-self:center}.contact-form .validation-errors>.heading{margin-bottom:.8rem;font-weight:700}.contact-form .validation-errors>.list{align-self:center;list-style:none;font-weight:700}.contact-form .validation-errors>.list .listitem+.listitem{margin-top:.8rem}.contact-form .validation-errors>.list>.listitem.-clickable{cursor:pointer}.contact-form .validation-errors>*:not(:last-child){margin-bottom:1.6rem}.pwd-contact-section{max-width:60rem;padding:2.4rem 4.8rem}.pwd-contact-section>.heading{margin-bottom:2.4rem;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;font-weight:700;text-align:center}.pwd-contact-section>.heading>.link:link,.pwd-contact-section>.heading>.link:visited,.pwd-contact-section>.heading>.link:focus,.pwd-contact-section>.heading>.link:hover,.pwd-contact-section>.heading>.link:active{color:#005abd;text-decoration:none}.pwd-contact-section>.text{font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;text-align:center}.pwd-contact-section>.text>.link.-tel{font-weight:700;white-space:nowrap}.pwd-contact-section>.text>.link.-tel:link,.pwd-contact-section>.text>.link.-tel:visited,.pwd-contact-section>.text>.link.-tel:focus,.pwd-contact-section>.text>.link.-tel:hover,.pwd-contact-section>.text>.link.-tel:active{color:#005abd;text-decoration:none}.page-footer{display:flex;flex-flow:column nowrap;align-items:center;justify-content:flex-start;padding:2.4rem;background-color:#083763;color:rgba(255,255,255,0.8);text-align:center}@media (max-width: 480px){.page-footer{padding-right:0.8rem;padding-left:0.8rem}}.page-footer .text{margin:2.4rem 0;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif}.page-footer .text>.link{font-weight:700;white-space:nowrap}.page-footer .text>.link:link,.page-footer .text>.link:visited,.page-footer .text>.link:focus,.page-footer .text>.link:hover,.page-footer .text>.link:active{color:#fff;text-decoration:none}.page-footer>.managers-cta{margin:2.4rem 0;padding:2.4rem 4.8rem 0;border:1px solid rgba(255,255,255,0.8);border-right:0;border-left:0;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif}.page-footer>.managers-cta>.heading{margin:0;font:2rem/3.2rem \\\"Open Sans\\\",sans-serif;font-weight:700}.page-footer>.managers-cta .link{white-space:nowrap}.page-footer>.list{display:flex;flex-flow:row nowrap;align-items:center;justify-content:center;margin:2.4rem 0;padding:0;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif;font-weight:700;list-style:none}.page-footer>.list>.listitem{margin:0 1em;padding:0}.page-footer>.list>.listitem>.link:link,.page-footer>.list>.listitem>.link:visited,.page-footer>.list>.listitem>.link:focus,.page-footer>.list>.listitem>.link:hover,.page-footer>.list>.listitem>.link:active{color:#fff;text-decoration:none}.page-footer>.list>.listitem>.button{background:none;border:0;color:#fff;cursor:pointer;font:inherit;line-height:normal;overflow:visible;padding:0;text-align:center;-webkit-appearance:none;-moz-appearance:none;appearance:none}.disambiguation-modal{display:flex;position:relative;flex-flow:column nowrap;align-items:center;justify-content:flex-start;width:60rem;padding:2rem 4rem;background:#fff}.disambiguation-modal>.heading{margin-bottom:1.6em;color:#0d2236;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;font-weight:700;text-align:center}.disambiguation-modal>.close-btn{position:absolute;top:2.1rem;right:1.6rem;margin:0;padding:0;border:0;background:none;color:#0d2236;font-size:1.6rem;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.disambiguation-modal>.search-results{display:flex;flex-flow:column nowrap;align-items:flex-start;justify-content:flex-start;margin:0;padding:0;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif;list-style:none}.disambiguation-modal>.search-results>.search-result{margin:0 0 1em;padding:0}.disambiguation-modal>.search-results>.search-result>.result-btn{margin:0;padding:0;border:0;background:none;color:#005abd;font:inherit;text-align:left;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.disambiguation-modal>.search-results>.search-result>.result-btn:hover,.disambiguation-modal>.search-results>.search-result>.result-btn:active{color:#007eaf}.deactivate-landing-page,.deactivate-confirmation{display:flex;flex-flow:column nowrap;align-items:center;justify-content:flex-start;background-color:#007eaf;color:#fff;min-height:100vh;height:100%;padding-bottom:60px}.deactivate-landing-page>.link:link,.deactivate-landing-page>.link:visited,.deactivate-landing-page>.link:focus,.deactivate-landing-page>.link:hover,.deactivate-landing-page>.link:active,.deactivate-confirmation>.link:link,.deactivate-confirmation>.link:visited,.deactivate-confirmation>.link:focus,.deactivate-confirmation>.link:hover,.deactivate-confirmation>.link:active{color:inherit;text-decoration:none}.deactivate-landing-page>.heading,.deactivate-confirmation>.heading{margin-bottom:2.4rem;font:2rem/3.2rem \\\"Open Sans\\\",sans-serif;font-weight:700;text-align:center}.deactivate-landing-page>.subhead,.deactivate-confirmation>.subhead{margin-bottom:2.4rem;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif}.deactivate-landing-page>.deactivate-form,.deactivate-confirmation>.deactivate-form{display:flex;flex-flow:column nowrap;align-items:center;justify-content:flex-start;margin:2.4rem}.deactivate-landing-page>.deactivate-form>.properties-list,.deactivate-confirmation>.deactivate-form>.properties-list{display:flex;flex-flow:column nowrap;justify-content:flex-start;width:45rem}.deactivate-landing-page>.deactivate-form>.properties-list>.property-item,.deactivate-confirmation>.deactivate-form>.properties-list>.property-item{display:flex;flex-flow:row nowrap;align-items:center;justify-content:space-between;margin-bottom:1.6rem}.deactivate-landing-page>.deactivate-form>.properties-list>.property-item>.property-details,.deactivate-confirmation>.deactivate-form>.properties-list>.property-item>.property-details{font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif}.deactivate-landing-page>.deactivate-form>.properties-list>.property-item>.property-details-buttons,.deactivate-confirmation>.deactivate-form>.properties-list>.property-item>.property-details-buttons{display:flex;flex-direction:row}.deactivate-landing-page>.deactivate-form>.properties-list>.property-item>.property-details-buttons>.button,.deactivate-confirmation>.deactivate-form>.properties-list>.property-item>.property-details-buttons>.button{display:inline-block;text-align:center;color:#fff;background-color:#000;padding:0 1.5em;border-radius:8px;text-transform:uppercase;border-radius:1px;margin:0 1rem;padding:0;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;text-transform:none;width:10rem;height:4rem}.deactivate-landing-page>.deactivate-form>.properties-list>.property-item>.property-details-buttons>.button.-edit,.deactivate-confirmation>.deactivate-form>.properties-list>.property-item>.property-details-buttons>.button.-edit{background-color:#005abd !important}.deactivate-landing-page>.deactivate-form>.properties-list>.property-item>.property-details-buttons>.button.-confirm,.deactivate-confirmation>.deactivate-form>.properties-list>.property-item>.property-details-buttons>.button.-confirm{background-color:#008a28 !important}.deactivate-landing-page>.deactivate-form>.properties-list>.property-item>.property-details-buttons>.button.-remove,.deactivate-confirmation>.deactivate-form>.properties-list>.property-item>.property-details-buttons>.button.-remove{background-color:rgba(13,34,54,0.6) !important}.deactivate-landing-page>.deactivate-form>.text,.deactivate-confirmation>.deactivate-form>.text{max-width:60rem;margin:3.2rem 2.4rem}.deactivate-landing-page>.deactivate-form>.button,.deactivate-confirmation>.deactivate-form>.button{display:inline-block;text-align:center;color:#fff;background-color:#005abd;padding:0 1.5em;border-radius:8px;text-transform:uppercase;border-radius:1px;margin:3.2rem;padding:.8rem 4rem;font:2rem/3.2rem \\\"Open Sans\\\",sans-serif;font-weight:700;text-transform:none}.deactivate-landing-page>.search-results-footer,.deactivate-confirmation>.search-results-footer{display:flex;flex-flow:row nowrap;padding-top:2rem;opacity:.8;font:1.2rem/1.6rem \\\"Open Sans\\\",sans-serif;white-space:nowrap}@media (max-width: 480px){.deactivate-landing-page>.search-results-footer,.deactivate-confirmation>.search-results-footer{flex-wrap:wrap;justify-content:center;padding-top:2rem}}.deactivate-landing-page>.search-results-footer button,.deactivate-confirmation>.search-results-footer button{margin:0 0 0 1em;padding:0;border:0;background:none;color:inherit;font:inherit;font-weight:700;cursor:pointer}.deactivate-landing-page>.properties-list,.deactivate-confirmation>.properties-list{display:flex;flex-flow:column nowrap;align-items:flex-start;justify-content:flex-start}.deactivate-landing-page>.properties-list>.property-details,.deactivate-confirmation>.properties-list>.property-details{justify-content:flex-start;margin-bottom:2.4rem;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif}.deactivate-landing-page>.properties-list>.property-details>.streetaddress,.deactivate-confirmation>.properties-list>.property-details>.streetaddress{font-weight:700}.deactivate-landing-page>.text,.deactivate-confirmation>.text{max-width:60rem;margin:3.2rem 2.4rem 8rem}.terms-of-use-modal{position:relative;width:100rem;padding:2.4rem;background-color:#fff;border-radius:0;border-width:0}.terms-of-use-modal>.heading{margin-bottom:1.6rem;font:2rem/3.2rem \\\"Open Sans\\\",sans-serif;font-weight:700;text-align:center}.terms-of-use-modal>.close{position:absolute;top:1.6rem;right:1.6rem;background:none;border:0;color:#0d2236;cursor:pointer;line-height:normal;overflow:visible;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:2.8rem}.terms-of-use-modal>.terms-of-use-section{font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif}.terms-of-use-modal>.terms-of-use-section>.heading{font-weight:700}.terms-of-use-modal>.terms-of-use-section>.text{margin-bottom:1em}.terms-of-use-modal>.terms-of-use-section>.list{margin:1em 0 1em 3.2rem;list-style:disc}.terms-of-use-modal>.terms-of-use-section>.list>.listitem{margin-bottom:1em}.confirmation-page{display:flex;flex-flow:column nowrap;align-items:center;justify-content:flex-start;background-color:#007eaf;color:#fff}.confirmation-page>.heading{margin:4rem;font:2.4rem/3.6rem \\\"Open Sans\\\",sans-serif;font-weight:700;text-align:center}.confirmation-page>.subhead{margin:4rem;font:2rem/3.2rem \\\"Open Sans\\\",sans-serif;text-align:center}.confirmation-page>.edit{display:inline-block;text-align:center;color:#fff;background-color:#fff;padding:0 1.5em;border-radius:8px;text-transform:uppercase;margin:8rem 4rem 4rem;padding:1em 2em;border-radius:0;font:1.2rem/1.6rem \\\"Open Sans\\\",sans-serif}.confirmation-page>.edit:link,.confirmation-page>.edit:visited,.confirmation-page>.edit:focus,.confirmation-page>.edit:hover,.confirmation-page>.edit:active{color:#007eaf;text-decoration:none}.confirm-unsubscribe-modal{position:relative;border-radius:0;border-width:0;padding:2.5rem;background-color:#fff}.confirm-unsubscribe-modal>.heading{font:2rem/3.2rem \\\"Open Sans\\\",sans-serif;font-weight:700}.confirm-unsubscribe-modal>.text{margin:1.6rem 0;font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif;font-weight:400}.confirm-unsubscribe-modal>.unsubscribe-errors{margin-top:2rem;margin-bottom:2rem;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;color:#f26c51;font-weight:700}.confirm-unsubscribe-modal>.actions{display:flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;margin-top:4rem}.confirm-unsubscribe-modal>.actions>.button{display:inline-block;text-align:center;color:#fff;background-color:#000;padding:0 1.5em;border-radius:8px;text-transform:uppercase;border-radius:1px;margin-right:2.4rem;padding:0 1.5rem;height:4rem;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;text-transform:none}.confirm-unsubscribe-modal>.actions>.button.-remove{background-color:#005abd !important}.confirm-unsubscribe-modal>.actions>.button.-cancel{background-color:rgba(13,34,54,0.14) !important;color:#0d2236 !important}.edit-preferences-modal{position:relative;width:60rem;border-radius:0;border-width:0;padding:2.4rem;background-color:#fff}.edit-preferences-modal>.heading{font:2.4rem/3.6rem \\\"Open Sans\\\",sans-serif;font-weight:700}.edit-preferences-modal>.retrofit-preferences-section{align-items:flex-start;margin:2.4rem 0 4rem}.edit-preferences-modal>.retrofit-preferences-section>.list{margin-left:1.6rem}.edit-preferences-modal>.retrofit-preferences-section>.noidea{height:unset;align-items:flex-start;background-color:#fff;margin-left:1.6rem;margin-top:0.8rem}.edit-preferences-modal>.retrofit-preferences-section>.list>.listitem>.label,.edit-preferences-modal>.retrofit-preferences-section>.noidea>.item>.label{font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif}.edit-preferences-modal>.unsubscribe-errors{margin-top:2rem;margin-bottom:2rem;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;color:#f26c51;font-weight:700}.edit-preferences-modal>.developer-selection{margin:2rem 0}.edit-preferences-modal>.developer-selection>.heading{margin-bottom:1.6rem;font:2.4rem/3.6rem \\\"Open Sans\\\",sans-serif;font-weight:700}.edit-preferences-modal>.developer-selection>.developer-interest{margin:1.6rem;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;font-weight:700}.edit-preferences-modal>.developer-selection>.match-by-type-developers-section>.developer-interest{margin:1.6rem;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;font-weight:700}.edit-preferences-modal>.developer-selection>.match-by-type-developers-section>.developer-type-selection{display:flex;margin:0 1.6rem;padding:.8rem 1.6rem;background-color:rgba(13,34,54,0.08)}.edit-preferences-modal>.developer-selection>.match-by-type-developers-section>.developer-type-selection>.button{margin-right:1.6rem;padding:0;color:rgba(13,34,54,0.6);font:1.2rem/1.6rem \\\"Open Sans\\\",sans-serif}.edit-preferences-modal>.developer-selection>.match-by-type-developers-section>.developer-type-selection>.button.-active{color:#0d2236;font-weight:700}.edit-preferences-modal>.developer-selection>.match-by-type-developers-section>.developer-search{display:flex;justify-content:space-between;width:inherit;margin:2rem}.edit-preferences-modal>.developer-selection>.match-by-type-developers-section>.developer-search>.search-control{position:relative;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;font-size:1.6rem;font-weight:400;display:flex;align-items:center;width:100%}.edit-preferences-modal>.developer-selection>.match-by-type-developers-section>.developer-search>.search-control.-search::after{content:\\\"\\\";position:absolute;font-family:\\\"pwdgrant\\\";font-style:normal;font-weight:normal;speak:none;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;left:0.8rem}.edit-preferences-modal>.developer-selection>.match-by-type-developers-section>.developer-search>.search-control>.input.-search{height:4rem;padding:0 1.6rem 0 3.6rem;border:1px solid #c6c4d2;line-height:4rem;width:inherit}.edit-preferences-modal>.developer-selection>.matching-developers>.matching-developer{padding-bottom:0}.edit-preferences-modal>.developer-selection>.matching-developers>.matching-developer>.label{font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif;font-weight:700}.edit-preferences-modal>.developer-selection>.matching-developers>.matching-developer>.developer-contact,.edit-preferences-modal>.developer-selection>.matching-developers>.matching-developer>.developer-specialties{margin-top:.6rem;font:1.2rem/1.6rem \\\"Open Sans\\\",sans-serif}.edit-preferences-modal>.developer-selection>.unselected-developers{margin:1.6rem 0;padding:1.6rem;background-color:#e3d200}.edit-preferences-modal>.developer-selection>.unselected-developers>.heading{font:1.4rem/2.2rem \\\"Open Sans\\\",sans-serif}.edit-preferences-modal>.developer-selection>.unselected-developers>.list{margin-top:.8rem;font-weight:700}.edit-preferences-modal>.developer-selection>.unselected-developers>.list>.listitem{line-height:2}.edit-preferences-modal>.developer-selection>.accepts-contacts{position:relative;margin-bottom:2.4rem;margin-left:1.6rem}.edit-preferences-modal>.developer-selection>.accepts-contacts #allow-developer-contacts{display:none}.edit-preferences-modal>.developer-selection>.accepts-contacts>.label{font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;font-weight:700;justify-content:flex-start;padding:1rem;padding-left:4.8rem;background-color:#fff;align-items:stretch}.edit-preferences-modal>.developer-selection>.accepts-contacts>.label:before{position:absolute;left:0;width:2rem;height:2rem;border:2px solid #0d2236;border-radius:2px;content:' ';overflow:hidden}.edit-preferences-modal>.developer-selection>.accepts-contacts>.label.-checked:after{content:\\\"\\\\E801\\\";position:absolute;font-family:\\\"pwdgrant\\\";font-style:normal;font-weight:normal;speak:none;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;margin-left:.2em;position:absolute;left:0;width:2rem;height:2rem;margin:0;padding:0;font-size:1.6rem;line-height:2rem}.edit-preferences-modal>.actions{display:flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;margin-top:4rem}.edit-preferences-modal>.actions>.button{display:inline-block;text-align:center;color:#fff;background-color:#000;padding:0 1.5em;border-radius:8px;text-transform:uppercase;border-radius:1px;margin-right:2.4rem;padding:0 2.2rem;height:4rem;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;text-transform:none}.edit-preferences-modal>.actions>.button.-save{background-color:#005abd !important}.edit-preferences-modal>.actions>.button.-cancel{background-color:rgba(13,34,54,0.14) !important;color:#0d2236 !important}.success-toast{display:flex;flex-direction:row;align-items:center;justify-content:flex-end}.success-toast>.success-toast.-icon{width:40px;height:40px;color:#fff;margin-right:2rem}.success-toast>.success-toast.-icon::after{content:\\\"\\\";position:absolute;font-family:\\\"pwdgrant\\\";font-style:normal;font-weight:normal;speak:none;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.success-toast>.success-toast.-message{color:#fff;font:1.6rem/2.4rem \\\"Open Sans\\\",sans-serif;font-weight:700}.preferences-error{display:flex;flex-flow:column nowrap;align-items:center;justify-content:flex-start;padding:4rem 4rem 16rem;background-color:#e3d200;color:#0d2236}.preferences-error>.link:link,.preferences-error>.link:visited,.preferences-error>.link:focus,.preferences-error>.link:hover,.preferences-error>.link:active{color:inherit;text-decoration:none}.preferences-error>.heading{margin:4rem 0;font:2.4rem/3.6rem \\\"Open Sans\\\",sans-serif;font-weight:700}.preferences-error>.subhead{font:2rem/3.2rem \\\"Open Sans\\\",sans-serif}.preferences-error>.subhead>.link{padding-bottom:0.1rem;border-bottom:1px solid #fff}.preferences-error>.subhead>.link:link,.preferences-error>.subhead>.link:visited,.preferences-error>.subhead>.link:focus,.preferences-error>.subhead>.link:hover,.preferences-error>.subhead>.link:active{color:inherit;text-decoration:none}\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Imports\nvar urlEscape = require(\"../../../../node_modules/css-loader/dist/runtime/url-escape.js\");\nvar ___CSS_LOADER_URL___0___ = urlEscape(require(\"../font/pwdgrant.eot?28769271\"));\nvar ___CSS_LOADER_URL___1___ = urlEscape(require(\"../font/pwdgrant.eot?28769271\") + \"#iefix\");\nvar ___CSS_LOADER_URL___2___ = urlEscape(require(\"../font/pwdgrant.woff2?28769271\"));\nvar ___CSS_LOADER_URL___3___ = urlEscape(require(\"../font/pwdgrant.woff?28769271\"));\nvar ___CSS_LOADER_URL___4___ = urlEscape(require(\"../font/pwdgrant.ttf?28769271\"));\nvar ___CSS_LOADER_URL___5___ = urlEscape(require(\"../font/pwdgrant.svg?28769271\") + \"#pwdgrant\");\n\n// Module\nexports.push([module.id, \"@font-face {\\n font-family: 'pwdgrant';\\n src: url(\" + ___CSS_LOADER_URL___0___ + \");\\n src: url(\" + ___CSS_LOADER_URL___1___ + \") format('embedded-opentype'),\\n url(\" + ___CSS_LOADER_URL___2___ + \") format('woff2'),\\n url(\" + ___CSS_LOADER_URL___3___ + \") format('woff'),\\n url(\" + ___CSS_LOADER_URL___4___ + \") format('truetype'),\\n url(\" + ___CSS_LOADER_URL___5___ + \") format('svg');\\n font-weight: normal;\\n font-style: normal;\\n}\\n/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */\\n/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */\\n/*\\n@media screen and (-webkit-min-device-pixel-ratio:0) {\\n @font-face {\\n font-family: 'pwdgrant';\\n src: url('../font/pwdgrant.svg?28769271#pwdgrant') format('svg');\\n }\\n}\\n*/\\n[class^=\\\"icon-\\\"]:before, [class*=\\\" icon-\\\"]:before {\\n font-family: \\\"pwdgrant\\\";\\n font-style: normal;\\n font-weight: normal;\\n speak: never;\\n\\n display: inline-block;\\n text-decoration: inherit;\\n width: 1em;\\n margin-right: .2em;\\n text-align: center;\\n /* opacity: .8; */\\n\\n /* For safety - reset parent styles, that can break glyph codes*/\\n font-variant: normal;\\n text-transform: none;\\n\\n /* fix buttons height, for twitter bootstrap */\\n line-height: 1em;\\n\\n /* Animation center compensation - margins should be symmetric */\\n /* remove if not needed */\\n margin-left: .2em;\\n\\n /* you can be more comfortable with increased icons size */\\n /* font-size: 120%; */\\n\\n /* Font smoothing. That was taken from TWBS */\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n\\n /* Uncomment for 3D effect */\\n /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */\\n}\\n\\n.icon-search:before { content: '\\\\e800'; } /* '' */\\n.icon-check:before { content: '\\\\e801'; } /* '' */\\n.icon-x:before { content: '\\\\e802'; } /* '' */\\n.icon-circle-i:before { content: '\\\\e803'; } /* '' */\\n.icon-spinner:before { content: '\\\\e804'; } /* '' */\\n.icon-pencil:before { content: '\\\\e805'; } /* '' */\\n.icon-right-big:before { content: '\\\\e806'; } /* '' */\\n.icon-bike:before { content: '\\\\e807'; } /* '' */\\n.icon-walk:before { content: '\\\\e808'; } /* '' */\\n.icon-reverse:before { content: '\\\\e809'; } /* '' */\\n.icon-transit-off:before { content: '\\\\e80a'; } /* '' */\\n.icon-transit-on:before { content: '\\\\e80b'; } /* '' */\\n.icon-transit:before { content: '\\\\e80c'; } /* '' */\\n.icon-turn-right:before { content: '\\\\e80d'; } /* '' */\\n.icon-turn-left:before { content: '\\\\e80e'; } /* '' */\\n.icon-indego:before { content: '\\\\e80f'; } /* '' */\\n.icon-leaf:before { content: '\\\\e810'; } /* '' */\\n.icon-tree:before { content: '\\\\e811'; } /* '' */\\n.icon-badge-dollar:before { content: '\\\\e812'; } /* '' */\\n.icon-elevator:before { content: '\\\\e813'; } /* '' */\\n.icon-continue:before { content: '\\\\e814'; } /* '' */\\n.icon-magnifying-glass-dollar:before { content: '\\\\e815'; } /* '' */\\n.icon-pen-ruler:before { content: '\\\\e816'; } /* '' */\\n.icon-layers:before { content: '\\\\e818'; } /* '' */\\n.icon-menu:before { content: '\\\\f0c9'; } /* '' */\\n.icon-angle-right:before { content: '\\\\f105'; } /* '' */\\n.icon-angle-down:before { content: '\\\\f107'; } /* '' */\\n.icon-circle-empty:before { content: '\\\\f10c'; } /* '' */\\n.icon-circle:before { content: '\\\\f111'; } /* '' */\\n.icon-info:before { content: '\\\\f129'; } /* '' */\\n\", \"\"]);\n\n","module.exports = __webpack_public_path__ + \"stormwater/connect/font/pwdgrant.woff2\";","module.exports = __webpack_public_path__ + \"stormwater/connect/font/pwdgrant.woff\";","module.exports = __webpack_public_path__ + \"stormwater/connect/font/pwdgrant.ttf\";","import axios, { CancelToken } from 'axios';\n\nimport selectEligibleParcels from '../common/utils';\n\nimport {\n NO_RESULTS_MESSAGE,\n NETWORK_ERROR_MESSAGE,\n CANCEL_REQUEST_MESSAGE,\n} from './constants';\n\nimport makeGeocoderUrl from './utils';\n\nimport { maybeGet } from '../marketing/utils';\n\nimport {\n updateSubmittingControl,\n updateSubmittedQuery,\n} from '../marketing/actions';\n\nlet cancelAxiosRequest = null;\n\nexport const START_GEOCODER_SEARCH = 'START_GEOCODER_SEARCH';\nexport const RECEIVE_GEOCODER_RESULTS = 'RECEIVE_GEOCODER_RESULTS';\nexport const SELECT_GEOCODER_RESULT = 'SELECT_GEOCODER_RESULT';\nexport const FAIL_GEOCODER_SEARCH = 'FAIL_GEOCODER_SEARCH';\nexport const CLEAR_GEOCODER_SEARCH = 'CLEAR_GEOCODER_SEARCH';\n\nfunction cancelPriorRequest() {\n if (cancelAxiosRequest) {\n cancelAxiosRequest(CANCEL_REQUEST_MESSAGE);\n cancelAxiosRequest = null;\n }\n}\n\nfunction startGeocoderSearch(payload) {\n return dispatch => {\n const section = maybeGet(payload, 'uiSection');\n const query = maybeGet(payload, 'query');\n if (section) {\n dispatch(updateSubmittingControl(section));\n }\n\n if (query) {\n dispatch(updateSubmittedQuery(query));\n }\n\n return dispatch({\n type: START_GEOCODER_SEARCH,\n });\n };\n}\n\nfunction receiveGeocoderResults(payload) {\n return {\n type: RECEIVE_GEOCODER_RESULTS,\n payload,\n };\n}\n\nexport function selectGeocoderResult(payload) {\n return {\n type: SELECT_GEOCODER_RESULT,\n payload,\n };\n}\n\nfunction failGeocoderSearch(payload) {\n return dispatch => {\n dispatch(updateSubmittedQuery(null));\n\n return dispatch({\n type: FAIL_GEOCODER_SEARCH,\n payload,\n });\n };\n}\n\nfunction parseGeocoderResults([first, ...rest]) {\n return dispatch => {\n if (!first) {\n return dispatch(failGeocoderSearch(NO_RESULTS_MESSAGE));\n }\n if (first && rest.length) {\n return dispatch(receiveGeocoderResults([first, ...rest]));\n }\n\n return dispatch(selectGeocoderResult(first));\n };\n}\n\nfunction clearGeocoder() {\n return {\n type: CLEAR_GEOCODER_SEARCH,\n };\n}\n\nexport function clearGeocoderSearch() {\n cancelPriorRequest();\n return (dispatch, getState) => {\n const {\n geocoder: { selectedResult, results },\n } = getState();\n\n if (selectedResult || results) {\n dispatch(clearGeocoder());\n }\n };\n}\n\nexport function performGeocoderSearch(query, params) {\n cancelPriorRequest();\n return dispatch => {\n dispatch(startGeocoderSearch(params));\n axios\n .get(makeGeocoderUrl(query), {\n cancelToken: new CancelToken(c => {\n cancelAxiosRequest = c;\n }),\n })\n .then(({ data }) => data.filter(({ Parcel }) => Parcel))\n .then(data => selectEligibleParcels(data))\n .then(results => dispatch(parseGeocoderResults(results)))\n .catch(() => dispatch(failGeocoderSearch(NETWORK_ERROR_MESSAGE)));\n };\n}\n","module.exports = __webpack_public_path__ + \"stormwater/connect/font/pwdgrant.svg\";","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"/*\\n Animation example, for spinners\\n*/\\n.animate-spin {\\n -moz-animation: spin 2s infinite linear;\\n -o-animation: spin 2s infinite linear;\\n -webkit-animation: spin 2s infinite linear;\\n animation: spin 2s infinite linear;\\n display: inline-block;\\n}\\n@-moz-keyframes spin {\\n 0% {\\n -moz-transform: rotate(0deg);\\n -o-transform: rotate(0deg);\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n\\n 100% {\\n -moz-transform: rotate(359deg);\\n -o-transform: rotate(359deg);\\n -webkit-transform: rotate(359deg);\\n transform: rotate(359deg);\\n }\\n}\\n@-webkit-keyframes spin {\\n 0% {\\n -moz-transform: rotate(0deg);\\n -o-transform: rotate(0deg);\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n\\n 100% {\\n -moz-transform: rotate(359deg);\\n -o-transform: rotate(359deg);\\n -webkit-transform: rotate(359deg);\\n transform: rotate(359deg);\\n }\\n}\\n@-o-keyframes spin {\\n 0% {\\n -moz-transform: rotate(0deg);\\n -o-transform: rotate(0deg);\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n\\n 100% {\\n -moz-transform: rotate(359deg);\\n -o-transform: rotate(359deg);\\n -webkit-transform: rotate(359deg);\\n transform: rotate(359deg);\\n }\\n}\\n@-ms-keyframes spin {\\n 0% {\\n -moz-transform: rotate(0deg);\\n -o-transform: rotate(0deg);\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n\\n 100% {\\n -moz-transform: rotate(359deg);\\n -o-transform: rotate(359deg);\\n -webkit-transform: rotate(359deg);\\n transform: rotate(359deg);\\n }\\n}\\n@keyframes spin {\\n 0% {\\n -moz-transform: rotate(0deg);\\n -o-transform: rotate(0deg);\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n\\n 100% {\\n -moz-transform: rotate(359deg);\\n -o-transform: rotate(359deg);\\n -webkit-transform: rotate(359deg);\\n transform: rotate(359deg);\\n }\\n}\\n\", \"\"]);\n\n","import { createStore, applyMiddleware } from 'redux';\nimport thunk from 'redux-thunk';\nimport { createLogger } from 'redux-logger';\n\nconst middlewares = [thunk];\n\nif (process.env.NODE_ENV === 'development') {\n const logger = createLogger({\n diff: true,\n collapsed: true,\n });\n middlewares.push(logger);\n}\n\nconst createStoreWithMiddleware = applyMiddleware(...middlewares)(createStore);\n\nexport { createStoreWithMiddleware as default };\n","import { combineReducers } from 'redux';\n\nimport { concat, uniqBy, without } from 'lodash';\n\nimport preferencesReducer from './components/parcel_preferences/reducer';\nimport geocoderReducer from '../geocoder/reducers';\n\nimport {\n START_GEOCODER_SEARCH,\n SELECT_GEOCODER_RESULT,\n} from '../geocoder/actions';\n\nimport {\n START_FETCH_DEVELOPER_DATA,\n COMPLETE_FETCH_DEVELOPER_DATA,\n FAIL_FETCH_DEVELOPER_DATA,\n START_FETCH_PARCEL_DATA,\n COMPLETE_FETCH_PARCEL_DATA,\n FAIL_FETCH_PARCEL_DATA,\n START_SUBMIT_CONTACT_FORM,\n COMPLETE_SUBMIT_CONTACT_FORM,\n FAIL_SUBMIT_CONTACT_FORM,\n REMOVE_PARCEL,\n TOGGLE_GEOCODER,\n UPDATE_SUBMITTING_CONTROL,\n UPDATE_SUBMITTED_QUERY,\n UPDATE_BENEFIT_SLIDER_VALUE,\n UPDATE_BENEFIT_ESTIMATE_VALUE,\n FAIL_FETCH_CURRENT_UNIT_CHARGE,\n COMPLETE_FETCH_CURRENT_UNIT_CHARGE,\n SELECT_DEVELOPERS,\n DESELECT_DEVELOPERS,\n SHOW_TERMS_OF_USE_MODAL,\n HIDE_TERMS_OF_USE_MODAL,\n START_RESEND_MANAGER_EMAIL,\n FAIL_RESEND_MANAGER_EMAIL,\n COMPLETE_RESEND_MANAGER_EMAIL,\n COMPLETE_RESEND_MANAGER_EMAIL_WITHOUT_PARCEL,\n AVOID_RESENDING_MANAGER_EMAIL_WITHOUT_PARCEL,\n SELECT_RETROFITS_FROM_QUERY_STRING,\n HIDE_GEOCODER_ON_COMPLETING_PARCEL_SEARCH_FROM_QUERY_STRING,\n CLOSE_CONFIRMATION_PAGE,\n SET_SHOW_ALL_DEVELOPERS,\n SET_DEVELOPER_QUERY,\n} from './actions';\n\nimport { benefitFields, defaultUnitCharge, uiSections } from './constants';\n\nconst initialState = {\n currentUnitCharge: defaultUnitCharge,\n parcel: {\n data: [],\n fetching: false,\n error: null,\n },\n developers: {\n data: null,\n fetching: false,\n error: null,\n },\n userInput: {\n retrofitsFromQueryString: [],\n developers: [],\n contactInfo: {\n name: null,\n email: null,\n phone: null,\n preference: null,\n },\n benefitEstimateParameters: {\n [benefitFields.RetrofitScope]: 1.0,\n [benefitFields.TimeHorizon]: 10,\n },\n },\n formSubmission: {\n data: null,\n posting: false,\n errors: {\n email: [],\n phone: [],\n parcels: [],\n apiError: [],\n },\n },\n ui: {\n geocoderQuery: null,\n submittingControl: null,\n [uiSections.Hero]: {\n showGeocoder: true,\n },\n [uiSections.ParcelForm]: {\n showGeocoder: true,\n },\n [uiSections.PreferencesForm]: {\n showGeocoder: false,\n },\n [uiSections.Benefits]: {\n [benefitFields.Maintenance]: 0,\n [benefitFields.WaterBillCredits]: 0,\n [benefitFields.AnnualSavings]: 0,\n [benefitFields.AggregatedSavings]: 0,\n },\n showConfirmationPage: false,\n unsubscribeToken: null,\n displayTermsOfUseModal: false,\n showAllDevelopers: false,\n developersQuery: '',\n },\n resentEmailParcels: [],\n emailExists: false,\n resendingParcelEmail: false,\n};\n\nfunction mainReducer(state = initialState, { type, payload }) {\n switch (type) {\n case COMPLETE_FETCH_CURRENT_UNIT_CHARGE: {\n return Object.assign({}, state, {\n currentUnitCharge: payload,\n });\n }\n case FAIL_FETCH_CURRENT_UNIT_CHARGE: {\n return Object.assign({}, state, {\n currentUnitCharge: defaultUnitCharge,\n });\n }\n case START_FETCH_DEVELOPER_DATA:\n return Object.assign({}, state, {\n developers: Object.assign({}, state.developers, {\n data: null,\n fetching: true,\n error: null,\n }),\n });\n case COMPLETE_FETCH_DEVELOPER_DATA:\n return Object.assign({}, state, {\n developers: Object.assign({}, state.developers, {\n data: payload,\n fetching: false,\n error: null,\n }),\n });\n case FAIL_FETCH_DEVELOPER_DATA:\n return Object.assign({}, state, {\n developers: Object.assign({}, state.developers, {\n data: null,\n fetching: false,\n error: payload,\n }),\n });\n case START_FETCH_PARCEL_DATA:\n return Object.assign({}, state, {\n parcel: Object.assign({}, state.parcel, {\n fetching: true,\n error: null,\n }),\n });\n case COMPLETE_FETCH_PARCEL_DATA:\n return Object.assign({}, state, {\n parcel: Object.assign({}, state.parcel, {\n data: concat(state.parcel.data, payload),\n fetching: false,\n error: null,\n }),\n });\n case FAIL_FETCH_PARCEL_DATA:\n return Object.assign({}, state, {\n parcel: Object.assign({}, state.parcel, {\n fetching: false,\n error: payload,\n }),\n });\n case START_SUBMIT_CONTACT_FORM:\n return Object.assign({}, state, {\n formSubmission: Object.assign({}, state.formSubmission, {\n data: payload,\n fetching: true,\n errors: initialState.formSubmission.errors,\n }),\n emailExists: false,\n });\n case COMPLETE_SUBMIT_CONTACT_FORM:\n return Object.assign({}, state, {\n formSubmission: Object.assign({}, state.formSubmission, {\n fetching: false,\n errors: initialState.formSubmission.errors,\n }),\n ui: Object.assign({}, state.ui, {\n showConfirmationPage: true,\n unsubscribeToken: payload,\n }),\n });\n case CLOSE_CONFIRMATION_PAGE:\n return Object.assign({}, state, {\n parcel: initialState.parcel,\n userInput: initialState.userInput,\n formSubmission: initialState.formSubmission,\n ui: initialState.ui,\n });\n case FAIL_SUBMIT_CONTACT_FORM:\n return Object.assign({}, state, {\n formSubmission: Object.assign({}, state.formSubmission, {\n fetching: false,\n errors: payload,\n }),\n });\n case SHOW_TERMS_OF_USE_MODAL:\n return Object.assign({}, state, {\n ui: Object.assign({}, state.ui, {\n displayTermsOfUseModal: true,\n }),\n });\n case HIDE_TERMS_OF_USE_MODAL:\n return Object.assign({}, state, {\n ui: Object.assign({}, state.ui, {\n displayTermsOfUseModal: false,\n }),\n });\n case SELECT_GEOCODER_RESULT:\n return Object.assign({}, state, {\n parcel: Object.assign({}, state.parcel, {\n data: uniqBy(\n concat(state.parcel.data, payload),\n p => p.Parcel.ParcelID,\n ),\n fetching: false,\n error: null,\n }),\n ui: Object.assign({}, state.ui, {\n geocoderQuery: null,\n submittingControl: null,\n [uiSections.Hero]: Object.assign(\n {},\n state.ui[uiSections.Hero],\n {\n showGeocoder: false,\n },\n ),\n [uiSections.ParcelForm]: Object.assign(\n {},\n state.ui[uiSections.Hero],\n {\n showGeocoder: false,\n },\n ),\n [uiSections.ParcelForm]: Object.assign(\n {},\n state.ui[uiSections.PreferencesForm],\n {\n showGeocoder: false,\n },\n ),\n }),\n });\n case REMOVE_PARCEL:\n return Object.assign({}, state, {\n parcel: Object.assign({}, state.parcel, {\n data: without(state.parcel.data, payload),\n }),\n formSubmission: initialState.formSubmission,\n });\n case TOGGLE_GEOCODER:\n return Object.assign({}, state, {\n ui: Object.assign({}, state.ui, {\n [payload]: Object.assign({}, state.ui[payload], {\n showGeocoder: !state.ui[payload].showGeocoder,\n }),\n }),\n });\n case UPDATE_BENEFIT_SLIDER_VALUE:\n return Object.assign({}, state, {\n userInput: Object.assign({}, state.userInput, {\n benefitEstimateParameters: Object.assign(\n {},\n state.userInput.benefitEstimateParameters,\n {\n [payload.field]: payload.value,\n },\n ),\n }),\n });\n case UPDATE_BENEFIT_ESTIMATE_VALUE:\n return Object.assign({}, state, {\n ui: Object.assign({}, state.ui, {\n [uiSections.Benefits]: Object.assign(\n {},\n state.ui[uiSections.Benefits],\n {\n [payload.field]: payload.value,\n },\n ),\n }),\n });\n case UPDATE_SUBMITTING_CONTROL:\n return Object.assign({}, state, {\n ui: Object.assign({}, state.ui, {\n submittingControl: payload,\n }),\n });\n case UPDATE_SUBMITTED_QUERY:\n return Object.assign({}, state, {\n ui: Object.assign({}, state.ui, {\n geocoderQuery: payload,\n }),\n });\n case SELECT_DEVELOPERS: {\n return Object.assign({}, state, {\n userInput: Object.assign({}, state.userInput, {\n developers: [\n ...new Set(state.userInput.developers.concat(payload)),\n ],\n }),\n });\n }\n case DESELECT_DEVELOPERS:\n return Object.assign({}, state, {\n userInput: Object.assign({}, state.userInput, {\n developers: [\n ...new Set(\n state.userInput.developers.filter(\n id => !payload.includes(id),\n ),\n ),\n ],\n }),\n });\n case START_RESEND_MANAGER_EMAIL:\n return Object.assign({}, state, {\n resendingParcelEmail: true,\n });\n case FAIL_RESEND_MANAGER_EMAIL:\n return Object.assign({}, state, {\n resendingParcelEmail: false,\n });\n case COMPLETE_RESEND_MANAGER_EMAIL:\n return Object.assign({}, state, {\n resentEmailParcels: state.resentEmailParcels.concat(payload),\n resendingParcelEmail: false,\n });\n case COMPLETE_RESEND_MANAGER_EMAIL_WITHOUT_PARCEL:\n return Object.assign({}, state, {\n emailExists: true,\n resendingParcelEmail: false,\n });\n case AVOID_RESENDING_MANAGER_EMAIL_WITHOUT_PARCEL:\n return Object.assign({}, state, {\n formSubmission: Object.assign({}, state.formSubmission, {\n errors: Object.assign({}, state.formSubmission.errors, {\n email: [],\n }),\n }),\n emailExists: false,\n });\n case SELECT_RETROFITS_FROM_QUERY_STRING:\n return Object.assign({}, state, {\n userInput: Object.assign({}, state.userInput, {\n retrofitsFromQueryString: payload,\n }),\n });\n case HIDE_GEOCODER_ON_COMPLETING_PARCEL_SEARCH_FROM_QUERY_STRING:\n return Object.assign({}, state, {\n ui: Object.assign({}, state.ui, {\n [uiSections.Hero]: Object.assign(\n {},\n state.ui[uiSections.Hero],\n {\n showGeocoder: false,\n },\n ),\n [uiSections.ParcelForm]: Object.assign(\n {},\n state.ui[uiSections.ParcelForm],\n {\n showGeocoder: false,\n },\n ),\n [uiSections.ParcelForm]: Object.assign(\n {},\n state.ui[uiSections.PreferencesForm],\n {\n showGeocoder: false,\n },\n ),\n }),\n });\n case START_GEOCODER_SEARCH:\n return Object.assign({}, state, {\n parcel: Object.assign({}, state.parcel, {\n error: null,\n }),\n });\n case SET_SHOW_ALL_DEVELOPERS:\n return Object.assign({}, state, {\n ui: Object.assign({}, state.ui, {\n showAllDevelopers: payload,\n }),\n });\n case SET_DEVELOPER_QUERY:\n return Object.assign({}, state, {\n ui: Object.assign({}, state.ui, {\n developersQuery: payload,\n }),\n });\n default:\n return state;\n }\n}\n\nexport default combineReducers({\n main: mainReducer,\n preferences: preferencesReducer,\n geocoder: geocoderReducer,\n});\n","import { map } from 'lodash';\n\nimport { API_BASE_URL } from '../developer/constants';\n\nimport imgRainGarden from './img/rain-garden.png';\nimport imgGreenRoof from './img/green-roof.png';\nimport imgPermeablePavement from './img/porous-pavement.png';\nimport imgSubsurfaceStorage from './img/subsurface-storage.png';\nimport imgCistern from './img/cistern.png';\n\nexport function parcelAPIUrl(parcelId) {\n return `${API_BASE_URL}/pwd/parcel/${parcelId}`;\n}\n\nexport function makeResendManagerEmailUrl(parcelId) {\n return `${API_BASE_URL}/parcels/${parcelId}/resend_customer_email/`;\n}\n\nexport const resendCustomerEmail = `${API_BASE_URL}/customers/resend_customer_email/`;\n\nexport const regulatoryAPIUrl = `${API_BASE_URL}/pwd/regulation/current_rates`;\n\nexport const retrofitDevelopersUrl = `${API_BASE_URL}/retrofitvendors/`;\n\n// API connection error formatted to match Django REST Framework sent errors\nexport const apiError = {\n apiError: ['An unknown error occurred!'],\n};\n\nexport const defaultUnitCharge = 4.75;\n\nexport const defaultParcelGrossArea = 43560;\nexport const defaultParcelImperviousArea = 21780;\n\nexport const uiSections = {\n Hero: 'hero',\n ParcelForm: 'parcel-form',\n Benefits: 'benefits',\n PreferencesForm: 'deactivate-landing-page',\n};\n\nexport const benefitFields = {\n RetrofitScope: 'retrofit-scope',\n TimeHorizon: 'time-horizon',\n Maintenance: 'maintenance',\n WaterBillCredits: 'water-bill-credits',\n AnnualSavings: 'annual-savings',\n AggregatedSavings: 'aggregated-savings',\n};\n\nexport const mapFills = {\n [uiSections.Hero]: '#036791',\n [uiSections.ParcelForm]: '#b8dde1',\n};\n\n// Snake case to match API response\nexport const RAIN_GARDEN = 'rain_garden';\nexport const GREEN_ROOF = 'green_roof';\nexport const PERMEABLE_PAVEMENT = 'permeable_pavement';\nexport const SUBSURFACE_STORAGE = 'subsurface_storage';\nexport const CISTERN = 'cistern';\n\nexport const retrofits = [\n {\n name: 'Rain garden',\n title: 'Learn more about rain gardens',\n image: imgRainGarden,\n description: `A rain garden is a landscaped low area in the\n ground designed to capture, store, and soak up\n stormwater. Rain gardens are usually planted with a\n variety of grasses, flowers, and shrubs, and may\n have special soil that helps water soak into the\n ground.`,\n type: RAIN_GARDEN,\n },\n {\n name: 'Green roof',\n title: 'Learn more about green roofs',\n image: imgGreenRoof,\n description: `Green roofs, also referred to as vegetated roofs,\n consist of a layer of vegetation that covers an\n otherwise conventional flat or moderately pitched\n roof.`,\n type: GREEN_ROOF,\n },\n {\n name: 'Permeable pavement',\n title: 'Learn more about permeable pavement',\n image: imgPermeablePavement,\n description: `Porous pavement is a type of permeable hardscape\n that allows water to filter through the surface\n into the underlying soil or gravel. Porous pavement\n can be made of concrete, asphalt, or pavers, and\n usually looks very similar to traditional types of\n pavement.`,\n type: PERMEABLE_PAVEMENT,\n },\n {\n name: 'Subsurface storage',\n title: 'Learn more about subsurface storage',\n image: imgSubsurfaceStorage,\n description: `Subsurface basins are located underneath sidewalks,\n parking, or vegetated areas and are designed to\n capture, store, and sometimes infiltrate stormwater\n underground.`,\n type: SUBSURFACE_STORAGE,\n },\n {\n name: 'Cistern',\n title: 'Learn more about cisterns',\n image: imgCistern,\n description: `Cisterns are storage tanks, located either above or\n below ground, that hold rainwater for beneficial\n reuse or detention and slow-release back to the\n sewer system.`,\n type: CISTERN,\n },\n];\n\nexport const NO_IDEA = 'no-idea';\nexport const retrofitTypes = map(retrofits, 'type');\n\nexport const SUBMIT_PROPERTY_MANAGER_FORM_URL = `${API_BASE_URL}/submitcustomerform/`;\n\nexport const mosaicSize = {\n // uom: px\n [uiSections.Hero]: 200,\n [uiSections.ParcelForm]: 120,\n};\n\nexport const developerCompanyTypesEnum = {\n showAll: 'Show all',\n design: 'Design specialists',\n construction: 'Construction specialists',\n maintenance: 'Maintenance specialists',\n management: 'Project management specialists',\n};\n","import { round } from 'lodash';\nimport parseWkt from 'wellknown';\nimport { convert } from 'terraformer-arcgis-parser';\nimport L from 'leaflet';\nimport { dynamicMapLayer, tiledMapLayer } from 'esri-leaflet';\n\nimport {\n basemapsEnum,\n cityCartoBasemap,\n cityCartoLabelsBasemap,\n parcelsAndImperviousLayersURL,\n searchMapCityLimitsExtent,\n VENDOR_PROPERTY_URL,\n} from './constants';\n\nimport {\n phlAerialBasemap,\n phlBasemapAttribution,\n maxAerialBasemapZoom,\n} from '../common/constants';\n\nexport function feetToAcres(sqft) {\n return round(sqft / 43560, 2);\n}\n\nexport function parseGeom(wkt) {\n return parseWkt(wkt);\n}\n\nexport function convertGeoJsonToAgsObject(geoJson) {\n return convert(geoJson).geometry;\n}\n\nexport function validationFailed(errors) {\n return Object.values(errors).some(e => e.length > 0);\n}\n\nexport function searchString(str1, str2) {\n const isStr = str => typeof str === 'string' || str instanceof String;\n if (!isStr(str1) || !isStr(str2)) {\n return false;\n }\n return str1.toLowerCase().trim().includes(str2.toLowerCase().trim());\n}\n\nexport function parcelIdFromHistory({ location: { pathname } }) {\n return pathname.startsWith(VENDOR_PROPERTY_URL)\n ? pathname.slice(VENDOR_PROPERTY_URL.length + 1)\n : null;\n}\n\nexport function selectEligibleParcels(data) {\n const eligibleBldgTypes = ['NonRes', 'Condo', 'Apt'];\n\n return data.filter(\n ({ Parcel }) =>\n Parcel &&\n Parcel.BldgType &&\n eligibleBldgTypes.includes(Parcel.BldgType),\n );\n}\n\n/** Given a list and an unformatted item that may or may not be in\n * the list, return a new list with the item updated or added after\n * applying a formatting function.\n * @param formatItem - a function that formats the newOrEdited\n * @param newOrEditedItem - an object with an id to format and add to the items\n * @param items - a list of formatted objects\n */\nexport function shallowUpdateData(formatItem, newOrEditedItem, items) {\n const index = items.findIndex(({ id }) => id === newOrEditedItem.id);\n const itemsUpToEdited = index >= 0 ? items.slice(0, index) : items.slice();\n const itemsAfterEdited = index >= 0 ? items.slice(index + 1) : [];\n\n return itemsUpToEdited.concat(\n formatItem(newOrEditedItem),\n itemsAfterEdited,\n );\n}\n\nexport function createParcelsOverlay() {\n const parcelsOverlay = dynamicMapLayer({\n url: parcelsAndImperviousLayersURL,\n f: 'image',\n layers: [0],\n });\n\n const dynamicLayerRequest = [\n {\n id: 12345,\n source: {\n type: 'mapLayer',\n mapLayerId: 0,\n },\n drawingInfo: {\n renderer: {\n type: 'simple',\n symbol: {\n type: 'esriSFS',\n style: 'esriSFSSolid',\n color: [0, 0, 0, 0],\n outline: {\n type: 'esriSLS',\n style: 'esriSLSSolid',\n color: [198, 218, 231, 116],\n width: 1,\n },\n },\n },\n },\n },\n ];\n\n parcelsOverlay.setDynamicLayers(JSON.stringify(dynamicLayerRequest));\n\n return parcelsOverlay;\n}\n\nexport const calculateRequestedParcelIDs = ({\n aisGeocoderResult,\n savedParcels,\n interestedParcels,\n enrolledParcels,\n interestedFilter,\n savedPropertiesFilter,\n enrolledFilter,\n}) => {\n const getParcelId = ({ parcelId }) => parcelId;\n const geocodedParcelIDs =\n aisGeocoderResult && aisGeocoderResult.parcels\n ? aisGeocoderResult.parcels.map(p => parseInt(p, 10))\n : null;\n\n const savedParcelIDs = savedParcels.filter(\n p => !geocodedParcelIDs || geocodedParcelIDs.includes(p),\n );\n const interestedParcelIDs = interestedParcels\n .map(getParcelId)\n .filter(p => !geocodedParcelIDs || geocodedParcelIDs.includes(p));\n const enrolledParcelIDs = enrolledParcels\n .map(getParcelId)\n .filter(p => !geocodedParcelIDs || geocodedParcelIDs.includes(p));\n\n if (interestedFilter && savedPropertiesFilter) {\n const interestedAndSavedParcels = [\n ...savedParcelIDs.filter(p => new Set(interestedParcelIDs).has(p)),\n ];\n\n return {\n requestedParcels: interestedAndSavedParcels.length\n ? interestedAndSavedParcels\n : null,\n };\n }\n if (enrolledFilter && savedPropertiesFilter) {\n const enrolledAndSavedParcels = [\n ...savedParcelIDs.filter(p => new Set(enrolledParcelIDs).has(p)),\n ];\n return {\n requestedParcels: enrolledAndSavedParcels.length\n ? enrolledAndSavedParcels\n : null,\n };\n }\n if (interestedFilter) {\n return {\n requestedParcels: interestedParcelIDs.length\n ? interestedParcelIDs\n : null,\n };\n }\n if (enrolledFilter) {\n return {\n requestedParcels: enrolledParcelIDs.length\n ? enrolledParcelIDs\n : null,\n };\n }\n if (savedPropertiesFilter) {\n return {\n requestedParcels: savedParcelIDs.length ? savedParcelIDs : null,\n };\n }\n if (geocodedParcelIDs) {\n return {\n requestedParcels: geocodedParcelIDs.length\n ? geocodedParcelIDs\n : null,\n };\n }\n\n return null;\n};\n\nexport function createCityCartoBasemapAndAerialLayers(leafletMap, visibleBasemap) {\n const cityCartoBasemapMap = tiledMapLayer({\n url: cityCartoBasemap,\n attribution: phlBasemapAttribution,\n });\n\n const cityCartoBasemapLabelsMap = tiledMapLayer({\n url: cityCartoLabelsBasemap,\n attribution: phlBasemapAttribution,\n });\n\n const aerialMap = tiledMapLayer({\n url: phlAerialBasemap,\n attribution: phlBasemapAttribution,\n maxZoom: maxAerialBasemapZoom,\n });\n\n switch (visibleBasemap) {\n case basemapsEnum.cityCartoBasemap:\n cityCartoBasemapMap.addTo(leafletMap);\n cityCartoBasemapLabelsMap.addTo(leafletMap);\n cityCartoBasemapLabelsMap.bringToFront();\n break;\n case basemapsEnum.aerial:\n aerialMap.addTo(leafletMap);\n break;\n default:\n window.console.warn('Invalid basemap setting');\n }\n\n return [cityCartoBasemapMap, cityCartoBasemapLabelsMap, aerialMap];\n}\n\nexport function getCityLimitsBbox() {\n return L.latLngBounds(\n L.latLng(\n searchMapCityLimitsExtent[0][1],\n searchMapCityLimitsExtent[0][0],\n ),\n L.latLng(\n searchMapCityLimitsExtent[1][1],\n searchMapCityLimitsExtent[1][0],\n ),\n );\n}\n\nfunction formatParcelsWKT(parcels) {\n if (parcels && !parcels.length) {\n return parcels.Parcel.Shape;\n }\n if (parcels.length === 1) {\n return parcels[0].Parcel.Shape;\n }\n const multipartParcelsWKT = parcels.map(p => p.Parcel.Shape).join(',');\n return `GEOMETRYCOLLECTION(${multipartParcelsWKT})`;\n}\n\nexport function getParcelOrParcelsBounds(parcels) {\n const geojson = parseWkt(formatParcelsWKT(parcels));\n return L.geoJson(geojson).getBounds();\n}\n\nexport function formatOwner(owner1, owner2) {\n return owner2 ? `${owner1} ${owner2}` : owner1;\n}\n","import {\n STORE_UUID,\n START_FETCH_PREFERENCES_DATA,\n START_UNSUBSCRIBE_PARCEL,\n FAIL_FETCH_PREFERENCES_DATA,\n FAIL_UNSUBSCRIBE_PARCEL,\n COMPLETE_FETCH_PREFERENCES_DATA,\n COMPLETE_UNSUBSCRIBE_PARCEL,\n START_UPDATE_EDITED_PARCEL,\n FAIL_UPDATE_EDITED_PARCEL,\n COMPLETE_UPDATE_EDITED_PARCEL,\n SELECT_GEOCODER_RESULT,\n SHOW_CONFIRM_UNSUBSCRIBE_MODAL,\n HIDE_CONFIRM_UNSUBSCRIBE_MODAL,\n SHOW_EDIT_PREFERENCES_MODAL,\n HIDE_EDIT_PREFERENCES_MODAL,\n TOGGLE_RETROFIT_PREFERENCE,\n TOGGLE_RETROFIT_PREFERENCE_AND_UPDATE_DEVELOPERS,\n CHANGE_SELECTED_DEVELOPERS,\n TOGGLE_ACCEPTS_CONTACTS,\n HIDE_SUCCESS_TOAST,\n} from './actions';\n\nimport { successToastMessages } from './constants';\n\nconst initialState = {\n uuid: null,\n editPreferencesModal: {\n visible: false,\n editableParcel: null,\n fetching: false,\n error: false,\n errorMessage: null,\n },\n confirmUnsubscribeModal: {\n visible: false,\n parcel: null,\n fetching: false,\n error: false,\n },\n parcels: {\n data: null,\n fetching: false,\n error: false,\n },\n successToast: {\n message: null,\n visible: false,\n },\n};\n\nexport default function preferencesReducer(\n state = initialState,\n { type, payload },\n) {\n switch (type) {\n case HIDE_SUCCESS_TOAST:\n return Object.assign({}, state, {\n successToast: initialState.successToast,\n });\n case STORE_UUID:\n return Object.assign({}, state, {\n uuid: payload,\n });\n case START_FETCH_PREFERENCES_DATA:\n return Object.assign({}, state, {\n parcels: Object.assign({}, state.parcels, {\n fetching: true,\n error: false,\n }),\n });\n case START_UNSUBSCRIBE_PARCEL:\n return Object.assign({}, state, {\n confirmUnsubscribeModal: Object.assign(\n {},\n state.confirmUnsubscribeModal,\n {\n fetching: true,\n error: false,\n },\n ),\n });\n case FAIL_FETCH_PREFERENCES_DATA:\n return Object.assign({}, state, {\n parcels: Object.assign({}, state.parcels, {\n fetching: false,\n error: true,\n }),\n });\n case FAIL_UNSUBSCRIBE_PARCEL:\n return Object.assign({}, state, {\n confirmUnsubscribeModal: Object.assign(\n {},\n state.confirmUnsubscribeModal,\n {\n fetching: false,\n error: true,\n },\n ),\n });\n case COMPLETE_FETCH_PREFERENCES_DATA:\n return Object.assign({}, state, {\n parcels: Object.assign({}, state.parcels, {\n fetching: false,\n error: false,\n data: payload,\n }),\n });\n case COMPLETE_UNSUBSCRIBE_PARCEL:\n return Object.assign({}, state, {\n confirmUnsubscribeModal: initialState.confirmUnsubscribeModal,\n parcels: Object.assign({}, state.parcels, {\n data: payload,\n }),\n successToast: Object.assign({}, state.successToast, {\n visible: true,\n message: successToastMessages.remove,\n }),\n });\n case SHOW_CONFIRM_UNSUBSCRIBE_MODAL:\n return Object.assign({}, state, {\n confirmUnsubscribeModal: Object.assign(\n {},\n state.confirmUnsubscribeModal,\n {\n visible: true,\n parcel: payload,\n },\n ),\n editPreferencesModal: initialState.editPreferencesModal,\n });\n case HIDE_CONFIRM_UNSUBSCRIBE_MODAL:\n return Object.assign({}, state, {\n confirmUnsubscribeModal: initialState.confirmUnsubscribeModal,\n });\n case SELECT_GEOCODER_RESULT:\n if (\n !state.parcels.data ||\n state.parcels.data.filter(\n parcel => parcel.parcel_id === payload.Parcel.ParcelID,\n ).length > 0\n ) {\n return state;\n }\n return Object.assign({}, state, {\n parcels: Object.assign({}, state.parcels, {\n data: state.parcels.data\n .filter(parcel => !!parcel.id)\n .concat({\n id: null,\n parcel_id: payload.Parcel.ParcelID,\n property_manager:\n state.parcels.data &&\n state.parcels.data.length > 0\n ? state.parcels.data[0].property_manager\n : null,\n accepts_contacts: false,\n address: payload.Parcel.Address,\n building_type: payload.Parcel.BldgType,\n note: '',\n cistern: false,\n green_roof: false,\n permeable_pavement: false,\n rain_garden: false,\n subsurface_storage: false,\n selected_developers: [],\n }),\n }),\n });\n case SHOW_EDIT_PREFERENCES_MODAL:\n return Object.assign({}, state, {\n confirmUnsubscribeModal: initialState.confirmUnsubscribeModal,\n editPreferencesModal: Object.assign(\n {},\n state.editPreferencesModal,\n {\n visible: true,\n editableParcel: payload,\n },\n ),\n });\n case HIDE_EDIT_PREFERENCES_MODAL:\n return Object.assign({}, state, {\n editPreferencesModal: initialState.editPreferencesModal,\n });\n case TOGGLE_ACCEPTS_CONTACTS:\n case TOGGLE_RETROFIT_PREFERENCE:\n case TOGGLE_RETROFIT_PREFERENCE_AND_UPDATE_DEVELOPERS:\n case CHANGE_SELECTED_DEVELOPERS:\n return Object.assign({}, state, {\n editPreferencesModal: Object.assign(\n {},\n state.editPreferencesModal,\n {\n editableParcel: payload,\n },\n ),\n });\n case START_UPDATE_EDITED_PARCEL:\n return Object.assign({}, state, {\n editPreferencesModal: Object.assign(\n {},\n state.editPreferencesModal,\n {\n fetching: true,\n error: false,\n },\n ),\n });\n case FAIL_UPDATE_EDITED_PARCEL:\n return Object.assign({}, state, {\n editPreferencesModal: Object.assign(\n {},\n state.editPreferencesModal,\n {\n fetching: false,\n error: true,\n errorMessage: payload.response.data.parcels[0],\n },\n ),\n });\n case COMPLETE_UPDATE_EDITED_PARCEL:\n return Object.assign({}, state, {\n editPreferencesModal: initialState.editPreferencesModal,\n parcels: Object.assign({}, state.parcels, {\n data: payload,\n }),\n successToast: Object.assign({}, state.successToast, {\n visible: true,\n message: successToastMessages.edit,\n }),\n });\n default:\n return state;\n }\n}\n","import { geocoderAPIUrl } from './constants';\n\nexport default function makeGeocoderUrl(query) {\n return `${geocoderAPIUrl}?q=${query}`;\n}\n","module.exports = __webpack_public_path__ + \"stormwater/connect/img/rain-garden.png\";","module.exports = __webpack_public_path__ + \"stormwater/connect/img/green-roof.png\";","module.exports = __webpack_public_path__ + \"stormwater/connect/img/porous-pavement.png\";","module.exports = __webpack_public_path__ + \"stormwater/connect/img/subsurface-storage.png\";","module.exports = __webpack_public_path__ + \"stormwater/connect/img/cistern.png\";","import {\n START_SIGN_IN,\n FAIL_SIGN_IN,\n COMPLETE_SIGN_IN,\n COMPLETE_SIGN_OUT,\n START_FETCH_DEVELOPER_DATA,\n COMPLETE_FETCH_DEVELOPER_DATA,\n FAIL_FETCH_DEVELOPER_DATA,\n START_FETCH_MANAGER_DATA,\n COMPLETE_FETCH_MANAGER_DATA,\n FAIL_FETCH_MANAGER_DATA,\n START_UPDATE_DEVELOPER_STATUS,\n FAIL_UPDATE_DEVELOPER_STATUS,\n COMPLETE_UPDATE_DEVELOPER_STATUS,\n TOGGLE_DEVELOPER_FILTER_OPTION,\n TOGGLE_MANAGER_FILTER_OPTION,\n UPDATE_DEVELOPER_SEARCH_TEXT,\n UPDATE_MANAGER_SEARCH_TEXT,\n START_EDIT_MANAGER,\n EDIT_MANAGER_NAME,\n EDIT_MANAGER_EMAIL,\n EDIT_MANAGER_PHONE,\n EDIT_MANAGER_PREFERRED_CONTACT,\n EDIT_MANAGER_NOTE,\n START_SAVE_MANAGER_EDITS,\n FAIL_SAVE_MANAGER_EDITS,\n COMPLETE_SAVE_MANAGER_EDITS,\n STOP_EDIT_MANAGER,\n START_EDIT_DEVELOPER,\n EDIT_DEVELOPER_REASON_FOR_DENIAL,\n EDIT_DEVELOPER_COMPANY_NAME,\n EDIT_DEVELOPER_WEBSITE,\n EDIT_DEVELOPER_PHONE,\n EDIT_DEVELOPER_EMAIL,\n EDIT_DEVELOPER_PREFERRED_CONTACT,\n EDIT_DEVELOPER_CONTACT_NAME,\n EDIT_DEVELOPER_CONTACT_EMAIL,\n EDIT_DEVELOPER_CONTACT_PHONE,\n EDIT_DEVELOPER_CAL,\n EDIT_DEVELOPER_OTHER_RETROFIT,\n EDIT_DEVELOPER_EIN,\n EDIT_DEVELOPER_GRANT_APPROVAL,\n EDIT_DEVELOPER_SUBGRANT_APPROVAL,\n EDIT_DEVELOPER_DESIGN_SERVICES,\n EDIT_DEVELOPER_CONSTRUCTION_SERVICES,\n EDIT_DEVELOPER_MAINTENANCE_SERVICES,\n EDIT_DEVELOPER_MANAGEMENT_SERVICES,\n EDIT_DEVELOPER_SPECIALTIES,\n START_SAVE_DEVELOPER_EDITS,\n FAIL_SAVE_DEVELOPER_EDITS,\n COMPLETE_SAVE_DEVELOPER_EDITS,\n STOP_EDIT_DEVELOPER,\n START_REMOVE_DEVELOPER_OF_INTEREST,\n FAIL_REMOVE_DEVELOPER_OF_INTEREST,\n COMPLETE_REMOVE_DEVELOPER_OF_INTEREST,\n START_RESEND_EMAIL_VERIFICATION,\n FAIL_RESEND_EMAIL_VERIFICATION,\n COMPLETE_RESEND_EMAIL_VERIFICATION,\n START_REMOVE_INTERESTED_MANAGER,\n FAIL_REMOVE_INTERESTED_MANAGER,\n COMPLETE_REMOVE_INTERESTED_MANAGER,\n START_REMOVE_MANAGER_PARCEL,\n FAIL_REMOVE_MANAGER_PARCEL,\n COMPLETE_REMOVE_MANAGER_PARCEL,\n HIDE_ERROR_MODAL,\n SORT_MANAGER_DASHBOARD_EMAIL,\n SORT_MANAGER_DASHBOARD_NAME,\n SORT_MANAGER_DASHBOARD_SIGNUP_DATE,\n SORT_MANAGER_DASHBOARD_INTERESTED_COUNT,\n SORT_MANAGER_DASHBOARD_PROPERTY_COUNT,\n SORT_DEVELOPER_DASHBOARD_COMPANY,\n SORT_DEVELOPER_DASHBOARD_WEBSITE,\n SORT_DEVELOPER_DASHBOARD_SIGNUP_DATE,\n SORT_DEVELOPER_DASHBOARD_INTERESTED_COUNT,\n SORT_DEVELOPER_DASHBOARD_STATUS,\n RESET_MANAGER_TABLE_FILTERS_AND_SORTS,\n RESET_DEVELOPER_TABLE_FILTERS_AND_SORTS,\n START_SEND_DEVELOPER_PASSWORD_RESET_EMAIL,\n FAIL_SEND_DEVELOPER_PASSWORD_RESET_EMAIL,\n COMPLETE_SEND_DEVELOPER_PASSWORD_RESET_EMAIL,\n SHOW_ADD_PARCEL_MODAL,\n HIDE_ADD_PARCEL_MODAL,\n UPDATE_GEOCODER_SEARCH_TEXT,\n UPDATE_PARCEL_RETROFITS,\n UPDATE_PARCEL_DEVELOPERS,\n START_SAVE_ADDED_PARCEL,\n FAIL_SAVE_ADDED_PARCEL,\n COMPLETE_SAVE_ADDED_PARCEL,\n RESET_ADMIN_DASHBOARD,\n START_DELETE_MANAGER,\n FAIL_DELETE_MANAGER,\n COMPLETE_DELETE_MANAGER,\n} from './actions';\n\nimport {\n START_FETCH_SINGLE_PARCEL,\n FAIL_FETCH_SINGLE_PARCEL,\n COMPLETE_FETCH_SINGLE_PARCEL,\n} from '../../actions';\n\nimport {\n START_GEOCODER_SEARCH,\n FAIL_GEOCODER_SEARCH,\n SELECT_GEOCODER_RESULT,\n} from '../../../geocoder/actions';\n\nimport {\n errorMessages,\n developerStatusTypes,\n newUserId,\n initialDeveloperTableSortOrder,\n initialManagerTableSortOrder,\n dashboardSortOrderEnum,\n} from './constants';\n\nimport { preferredContactTypes } from '../../../common/constants';\n\nimport { normalizeAddParcelData } from './utils';\n\nfunction updateDeveloper(developers, id, newData) {\n const developer = developers.find(d => d.id === id);\n const updatedDeveloper = Object.assign({}, developer, newData);\n return developers.filter(d => d.id !== id).concat(updatedDeveloper);\n}\n\nfunction toggleFilter(filters, filter) {\n if (filters.some(f => f === filter)) {\n return filters.filter(f => f !== filter);\n }\n\n return filters.concat(filter);\n}\n\nconst initDeveloperData = {\n id: newUserId,\n companyName: '',\n website: '',\n email: '',\n phone: '',\n preferredContact: preferredContactTypes.email,\n ein: '',\n commercialActivityLicense: '',\n signUpDate: '',\n approvedDate: '',\n deactivatedDate: '',\n deniedDate: '',\n reasonForDenial: '',\n isEmailVerified: true,\n contactName: '',\n contactEmail: '',\n contactPhone: '',\n retrofits: [],\n otherRetrofit: '',\n hasWorkedOnGrant: false,\n hasBeenSubgrantee: false,\n specialties: '',\n status: developerStatusTypes.active,\n password: 'temporary_password',\n isDesignFirm: false,\n isConstructionFirm: false,\n isMaintenanceFirm: false,\n isManagementFirm: false,\n};\n\nconst initManagerData = {\n id: newUserId,\n propertyManager: '',\n contactEmail: '',\n contactPhone: '',\n preferredContact: preferredContactTypes.email,\n noteToDevelopers: '',\n parcels: [],\n developersOfInterest: [],\n};\n\nconst initialState = {\n signIn: {\n signedIn: false,\n fetching: false,\n error: false,\n },\n errorMessage: null,\n developers: {\n data: [],\n fetching: false,\n error: false,\n filters: [],\n searchText: '',\n sortOrder: initialDeveloperTableSortOrder,\n },\n managers: {\n data: [],\n fetching: false,\n error: false,\n filters: [],\n searchText: '',\n sortOrder: initialManagerTableSortOrder,\n },\n managerEdit: {\n editing: false,\n data: initManagerData,\n saving: false,\n errors: null,\n error: false,\n },\n developerEdit: {\n editing: false,\n data: initDeveloperData,\n saving: false,\n errors: null,\n error: false,\n },\n emailVerification: {\n fetching: false,\n error: false,\n },\n addParcel: {\n visible: false,\n searchText: '',\n fetching: false,\n error: false,\n data: null,\n retrofits: [],\n developers: [],\n },\n resetPasswordStatus: {\n fetching: false,\n error: false,\n },\n};\n\nexport default function adminDashboardPage(\n state = initialState,\n { type, payload },\n) {\n switch (type) {\n case RESET_ADMIN_DASHBOARD:\n return initialState;\n case START_DELETE_MANAGER:\n return Object.assign({}, state, {\n managerEdit: Object.assign({}, state.managerEdit, {\n saving: true,\n error: false,\n }),\n });\n case FAIL_DELETE_MANAGER:\n return Object.assign({}, state, {\n managerEdit: Object.assign({}, state.managerEdit, {\n saving: false,\n error: true,\n }),\n });\n case COMPLETE_DELETE_MANAGER:\n return Object.assign({}, state, {\n managerEdit: initialState.managerEdit,\n });\n case START_SAVE_ADDED_PARCEL:\n return Object.assign({}, state, {\n addParcel: Object.assign({}, state.addParcel, {\n fetching: true,\n error: false,\n }),\n });\n case FAIL_SAVE_ADDED_PARCEL:\n return Object.assign({}, state, {\n addParcel: Object.assign({}, state.addParcel, {\n fetching: false,\n error: true,\n }),\n });\n case COMPLETE_SAVE_ADDED_PARCEL:\n return Object.assign({}, state, {\n addParcel: initialState.addParcel,\n managers: Object.assign({}, state.managers, {\n data: payload,\n }),\n });\n case UPDATE_PARCEL_RETROFITS:\n return Object.assign({}, state, {\n addParcel: Object.assign({}, state.addParcel, {\n retrofits: payload.updatedRetrofits,\n developers: payload.updatedDevelopers,\n }),\n });\n case UPDATE_PARCEL_DEVELOPERS:\n return Object.assign({}, state, {\n addParcel: Object.assign({}, state.addParcel, {\n developers: payload,\n }),\n });\n case SHOW_ADD_PARCEL_MODAL:\n return Object.assign({}, state, {\n addParcel: Object.assign({}, state.addParcel, {\n visible: true,\n }),\n });\n case HIDE_ADD_PARCEL_MODAL:\n return Object.assign({}, state, {\n addParcel: initialState.addParcel,\n });\n case UPDATE_GEOCODER_SEARCH_TEXT:\n return Object.assign({}, state, {\n addParcel: Object.assign({}, state.addParcel, {\n searchText: payload,\n data: null,\n error: false,\n }),\n });\n case START_FETCH_SINGLE_PARCEL:\n case START_GEOCODER_SEARCH:\n return Object.assign({}, state, {\n addParcel: Object.assign({}, state.addParcel, {\n fetching: true,\n error: false,\n data: null,\n }),\n });\n case FAIL_FETCH_SINGLE_PARCEL:\n case FAIL_GEOCODER_SEARCH:\n return Object.assign({}, state, {\n addParcel: Object.assign({}, state.addParcel, {\n fetching: false,\n error: true,\n }),\n });\n case COMPLETE_FETCH_SINGLE_PARCEL:\n case SELECT_GEOCODER_RESULT:\n return Object.assign({}, state, {\n addParcel: Object.assign({}, state.addParcel, {\n fetching: false,\n error: false,\n data: normalizeAddParcelData(payload),\n }),\n });\n case RESET_MANAGER_TABLE_FILTERS_AND_SORTS:\n return Object.assign({}, state, {\n managers: Object.assign({}, state.managers, {\n sortOrder: initialState.managers.sortOrder,\n filters: initialState.managers.filters,\n searchText: initialState.managers.searchText,\n }),\n });\n case RESET_DEVELOPER_TABLE_FILTERS_AND_SORTS:\n return Object.assign({}, state, {\n developers: Object.assign({}, state.developers, {\n sortOrder: initialState.developers.sortOrder,\n filters: initialState.developers.filters,\n searchText: initialState.developers.searchText,\n }),\n });\n case SORT_MANAGER_DASHBOARD_NAME:\n return Object.assign({}, state, {\n managers: Object.assign({}, state.managers, {\n sortOrder: Object.assign(\n {},\n initialState.managers.sortOrder,\n {\n name: payload,\n signupDate: dashboardSortOrderEnum.none,\n },\n ),\n }),\n });\n case SORT_MANAGER_DASHBOARD_EMAIL:\n return Object.assign({}, state, {\n managers: Object.assign({}, state.managers, {\n sortOrder: Object.assign(\n {},\n initialState.managers.sortOrder,\n {\n email: payload,\n signupDate: dashboardSortOrderEnum.none,\n },\n ),\n }),\n });\n case SORT_MANAGER_DASHBOARD_SIGNUP_DATE:\n return Object.assign({}, state, {\n managers: Object.assign({}, state.managers, {\n sortOrder: Object.assign(\n {},\n initialState.managers.sortOrder,\n {\n signupDate: payload,\n },\n ),\n }),\n });\n case SORT_MANAGER_DASHBOARD_INTERESTED_COUNT:\n return Object.assign({}, state, {\n managers: Object.assign({}, state.managers, {\n sortOrder: Object.assign(\n {},\n initialState.managers.sortOrder,\n {\n interestedCount: payload,\n signupDate: dashboardSortOrderEnum.none,\n },\n ),\n }),\n });\n case SORT_MANAGER_DASHBOARD_PROPERTY_COUNT:\n return Object.assign({}, state, {\n managers: Object.assign({}, state.managers, {\n sortOrder: Object.assign(\n {},\n initialState.managers.sortOrder,\n {\n propertyCount: payload,\n signupDate: dashboardSortOrderEnum.none,\n },\n ),\n }),\n });\n case SORT_DEVELOPER_DASHBOARD_COMPANY:\n return Object.assign({}, state, {\n developers: Object.assign({}, state.developers, {\n sortOrder: Object.assign(\n {},\n initialState.developers.sortOrder,\n {\n company: payload,\n signupDate: dashboardSortOrderEnum.none,\n },\n ),\n }),\n });\n case SORT_DEVELOPER_DASHBOARD_WEBSITE:\n return Object.assign({}, state, {\n developers: Object.assign({}, state.developers, {\n sortOrder: Object.assign(\n {},\n initialState.developers.sortOrder,\n {\n website: payload,\n signupDate: dashboardSortOrderEnum.none,\n },\n ),\n }),\n });\n case SORT_DEVELOPER_DASHBOARD_INTERESTED_COUNT:\n return Object.assign({}, state, {\n developers: Object.assign({}, state.developers, {\n sortOrder: Object.assign(\n {},\n initialState.developers.sortOrder,\n {\n interestedCount: payload,\n signupDate: dashboardSortOrderEnum.none,\n },\n ),\n }),\n });\n case SORT_DEVELOPER_DASHBOARD_SIGNUP_DATE:\n return Object.assign({}, state, {\n developers: Object.assign({}, state.developers, {\n sortOrder: Object.assign(\n {},\n initialState.developers.sortOrder,\n {\n signupDate: payload,\n },\n ),\n }),\n });\n case SORT_DEVELOPER_DASHBOARD_STATUS:\n return Object.assign({}, state, {\n developers: Object.assign({}, state.developers, {\n sortOrder: Object.assign(\n {},\n initialState.developers.sortOrder,\n {\n status: payload,\n signupDate: dashboardSortOrderEnum.none,\n },\n ),\n }),\n });\n case START_SEND_DEVELOPER_PASSWORD_RESET_EMAIL:\n return Object.assign({}, state, {\n resetPasswordStatus: Object.assign(\n {},\n state.resetPasswordStatus,\n {\n fetching: true,\n error: false,\n },\n ),\n });\n case FAIL_SEND_DEVELOPER_PASSWORD_RESET_EMAIL:\n return Object.assign({}, state, {\n resetPasswordStatus: Object.assign(\n {},\n state.resetPasswordStatus,\n {\n fetching: false,\n error: true,\n },\n ),\n });\n case COMPLETE_SEND_DEVELOPER_PASSWORD_RESET_EMAIL:\n return Object.assign({}, state, {\n resetPasswordStatus: Object.assign(\n {},\n state.resetPasswordStatus,\n {\n fetching: false,\n error: false,\n },\n ),\n });\n case HIDE_ERROR_MODAL:\n return Object.assign({}, state, {\n errorMessage: null,\n signIn: Object.assign({}, state.signIn, {\n error: false,\n }),\n developers: Object.assign({}, state.developers, {\n error: false,\n }),\n managers: Object.assign({}, state.managers, {\n error: false,\n }),\n managerEdit: Object.assign({}, state.managerEdit, {\n error: false,\n }),\n developerEdit: Object.assign({}, state.developerEdit, {\n error: false,\n }),\n emailVerification: Object.assign({}, state.emailVerification, {\n error: false,\n }),\n resetPasswordStatus: Object.assign(\n {},\n state.resetPasswordStatus,\n {\n error: false,\n },\n ),\n });\n case START_SIGN_IN:\n return Object.assign({}, state, {\n errorMessage: null,\n signIn: Object.assign({}, state.signIn, {\n fetching: true,\n error: false,\n }),\n });\n case FAIL_SIGN_IN:\n return Object.assign({}, state, {\n errorMessage: payload,\n signIn: Object.assign({}, state.signIn, {\n fetching: false,\n error: true,\n }),\n });\n case COMPLETE_SIGN_IN:\n return Object.assign({}, state, {\n errorMessage: null,\n signIn: Object.assign({}, state.signIn, {\n signedIn: true,\n fetching: false,\n error: false,\n }),\n });\n case COMPLETE_SIGN_OUT:\n return Object.assign({}, state, {\n signIn: initialState.signIn,\n });\n case START_FETCH_DEVELOPER_DATA:\n return Object.assign({}, state, {\n developers: Object.assign({}, state.developers, {\n data: [],\n fetching: true,\n error: false,\n }),\n });\n case COMPLETE_FETCH_DEVELOPER_DATA:\n return Object.assign({}, state, {\n developers: Object.assign({}, state.developers, {\n fetching: false,\n data: payload,\n error: false,\n }),\n });\n case FAIL_FETCH_DEVELOPER_DATA:\n return Object.assign({}, state, {\n errorMessage: errorMessages.failLoadDevelopersMessage,\n developers: Object.assign({}, state.developers, {\n fetching: false,\n error: true,\n }),\n });\n case START_FETCH_MANAGER_DATA:\n return Object.assign({}, state, {\n managers: Object.assign({}, state.managers, {\n data: [],\n fetching: true,\n error: false,\n }),\n });\n case COMPLETE_FETCH_MANAGER_DATA:\n return Object.assign({}, state, {\n managers: Object.assign({}, state.managers, {\n fetching: false,\n data: payload,\n error: false,\n }),\n });\n case FAIL_FETCH_MANAGER_DATA:\n return Object.assign({}, state, {\n errorMessage: errorMessages.failLoadManagersMessage,\n managers: Object.assign({}, state.managers, {\n fetching: false,\n error: true,\n }),\n });\n case START_UPDATE_DEVELOPER_STATUS:\n return Object.assign({}, state, {\n errorMessage: initialState.errorMessage,\n developerEdit: Object.assign({}, state.developerEdit, {\n saving: true,\n error: false,\n }),\n });\n case COMPLETE_UPDATE_DEVELOPER_STATUS:\n return Object.assign({}, state, {\n developers: Object.assign({}, state.developers, {\n data: updateDeveloper(\n state.developers.data,\n payload.id,\n payload,\n ),\n }),\n developerEdit: initialState.developerEdit,\n });\n case FAIL_UPDATE_DEVELOPER_STATUS:\n return Object.assign({}, state, {\n errorMessage: errorMessages.failEditDeveloperMessage,\n developerEdit: Object.assign({}, state.developerEdit, {\n saving: false,\n error: true,\n }),\n });\n case TOGGLE_DEVELOPER_FILTER_OPTION:\n return Object.assign({}, state, {\n developers: Object.assign({}, state.developers, {\n filters: toggleFilter(state.developers.filters, payload),\n }),\n });\n case TOGGLE_MANAGER_FILTER_OPTION:\n return Object.assign({}, state, {\n managers: Object.assign({}, state.managers, {\n filters: toggleFilter(state.managers.filters, payload),\n }),\n });\n case UPDATE_DEVELOPER_SEARCH_TEXT:\n return Object.assign({}, state, {\n developers: Object.assign({}, state.developers, {\n searchText: payload,\n }),\n });\n case UPDATE_MANAGER_SEARCH_TEXT:\n return Object.assign({}, state, {\n managers: Object.assign({}, state.managers, {\n searchText: payload,\n }),\n });\n case START_EDIT_MANAGER:\n return Object.assign({}, state, {\n managerEdit: Object.assign({}, state.managerEdit, {\n editing: true,\n data: payload,\n }),\n });\n case EDIT_MANAGER_NAME:\n return Object.assign({}, state, {\n managerEdit: Object.assign({}, state.managerEdit, {\n data: Object.assign({}, state.managerEdit.data, {\n propertyManager: payload,\n }),\n }),\n });\n case EDIT_MANAGER_EMAIL:\n return Object.assign({}, state, {\n managerEdit: Object.assign({}, state.managerEdit, {\n data: Object.assign({}, state.managerEdit.data, {\n contactEmail: payload,\n }),\n }),\n });\n case EDIT_MANAGER_PHONE:\n return Object.assign({}, state, {\n managerEdit: Object.assign({}, state.managerEdit, {\n data: Object.assign({}, state.managerEdit.data, {\n contactPhone: payload,\n }),\n }),\n });\n case EDIT_MANAGER_PREFERRED_CONTACT:\n return Object.assign({}, state, {\n managerEdit: Object.assign({}, state.managerEdit, {\n data: Object.assign({}, state.managerEdit.data, {\n preferredContact: payload,\n }),\n }),\n });\n case EDIT_MANAGER_NOTE:\n return Object.assign({}, state, {\n managerEdit: Object.assign({}, state.managerEdit, {\n data: Object.assign({}, state.managerEdit.data, {\n noteToDevelopers: payload,\n }),\n }),\n });\n case START_SAVE_MANAGER_EDITS:\n return Object.assign({}, state, {\n errorMessage: null,\n managerEdit: Object.assign({}, state.managerEdit, {\n saving: true,\n errors: null,\n error: false,\n }),\n });\n case FAIL_SAVE_MANAGER_EDITS:\n return Object.assign({}, state, {\n errorMessage: errorMessages.failEditManagerMessage,\n managerEdit: Object.assign({}, state.managerEdit, {\n saving: false,\n errors: payload,\n error: true,\n }),\n });\n case COMPLETE_SAVE_MANAGER_EDITS:\n return Object.assign({}, state, {\n managerEdit: Object.assign({}, state.managerEdit, {\n saving: false,\n errors: null,\n editing: false,\n data: initManagerData,\n }),\n managers: Object.assign({}, state.managers, {\n data: payload,\n }),\n });\n case STOP_EDIT_MANAGER:\n return Object.assign({}, state, {\n managerEdit: Object.assign({}, state.managerEdit, {\n editing: false,\n data: initManagerData,\n errors: null,\n }),\n });\n case START_EDIT_DEVELOPER:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n editing: true,\n data: payload,\n }),\n });\n case EDIT_DEVELOPER_REASON_FOR_DENIAL:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n data: Object.assign({}, state.developerEdit.data, {\n reasonForDenial: payload,\n }),\n }),\n });\n case EDIT_DEVELOPER_COMPANY_NAME:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n data: Object.assign({}, state.developerEdit.data, {\n companyName: payload,\n }),\n }),\n });\n case EDIT_DEVELOPER_WEBSITE:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n data: Object.assign({}, state.developerEdit.data, {\n website: payload,\n }),\n }),\n });\n case EDIT_DEVELOPER_EMAIL:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n data: Object.assign({}, state.developerEdit.data, {\n email: payload,\n }),\n }),\n });\n case EDIT_DEVELOPER_PHONE:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n data: Object.assign({}, state.developerEdit.data, {\n phone: payload,\n }),\n }),\n });\n case EDIT_DEVELOPER_PREFERRED_CONTACT:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n data: Object.assign({}, state.developerEdit.data, {\n preferredContact: payload,\n }),\n }),\n });\n case EDIT_DEVELOPER_EIN:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n data: Object.assign({}, state.developerEdit.data, {\n ein: payload,\n }),\n }),\n });\n case EDIT_DEVELOPER_CAL:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n data: Object.assign({}, state.developerEdit.data, {\n commercialActivityLicense: payload,\n }),\n }),\n });\n case EDIT_DEVELOPER_OTHER_RETROFIT:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n data: Object.assign({}, state.developerEdit.data, {\n otherRetrofit: payload,\n }),\n }),\n });\n case EDIT_DEVELOPER_GRANT_APPROVAL:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n data: Object.assign({}, state.developerEdit.data, {\n hasWorkedOnGrant:\n !state.developerEdit.data.hasWorkedOnGrant,\n }),\n }),\n });\n case EDIT_DEVELOPER_SUBGRANT_APPROVAL:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n data: Object.assign({}, state.developerEdit.data, {\n hasBeenSubgrantee:\n !state.developerEdit.data.hasBeenSubgrantee,\n }),\n }),\n });\n case EDIT_DEVELOPER_DESIGN_SERVICES:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n data: Object.assign({}, state.developerEdit.data, {\n isDesignFirm: !state.developerEdit.data.isDesignFirm,\n }),\n }),\n });\n case EDIT_DEVELOPER_CONSTRUCTION_SERVICES:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n data: Object.assign({}, state.developerEdit.data, {\n isConstructionFirm:\n !state.developerEdit.data.isConstructionFirm,\n }),\n }),\n });\n case EDIT_DEVELOPER_MAINTENANCE_SERVICES:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n data: Object.assign({}, state.developerEdit.data, {\n isMaintenanceFirm:\n !state.developerEdit.data.isMaintenanceFirm,\n }),\n }),\n });\n case EDIT_DEVELOPER_MANAGEMENT_SERVICES:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n data: Object.assign({}, state.developerEdit.data, {\n isManagementFirm:\n !state.developerEdit.data.isManagementFirm,\n }),\n }),\n });\n case EDIT_DEVELOPER_SPECIALTIES:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n data: Object.assign({}, state.developerEdit.data, {\n retrofits: payload,\n }),\n }),\n });\n case EDIT_DEVELOPER_CONTACT_NAME:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n data: Object.assign({}, state.developerEdit.data, {\n contactName: payload,\n }),\n }),\n });\n case EDIT_DEVELOPER_CONTACT_EMAIL:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n data: Object.assign({}, state.developerEdit.data, {\n contactEmail: payload,\n }),\n }),\n });\n case EDIT_DEVELOPER_CONTACT_PHONE:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n data: Object.assign({}, state.developerEdit.data, {\n contactPhone: payload,\n }),\n }),\n });\n case START_REMOVE_INTERESTED_MANAGER:\n case START_SAVE_DEVELOPER_EDITS:\n return Object.assign({}, state, {\n errorMessage: null,\n developerEdit: Object.assign({}, state.developerEdit, {\n saving: true,\n errors: null,\n error: false,\n }),\n });\n case FAIL_SAVE_DEVELOPER_EDITS:\n return Object.assign({}, state, {\n errorMessage: errorMessages.failEditDeveloperMessage,\n developerEdit: Object.assign({}, state.developerEdit, {\n saving: false,\n errors: payload,\n error: true,\n }),\n });\n case FAIL_REMOVE_INTERESTED_MANAGER:\n return Object.assign({}, state, {\n errorMessage: errorMessages.failEditDeveloperMessage,\n developerEdit: Object.assign({}, state.developerEdit, {\n saving: false,\n error: true,\n }),\n });\n case COMPLETE_SAVE_DEVELOPER_EDITS:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n saving: false,\n errors: null,\n editing: false,\n data: initDeveloperData,\n }),\n developers: Object.assign({}, state.developers, {\n data: payload,\n }),\n });\n case STOP_EDIT_DEVELOPER:\n return Object.assign({}, state, {\n developerEdit: Object.assign({}, state.developerEdit, {\n editing: false,\n data: initDeveloperData,\n errors: null,\n }),\n });\n case START_RESEND_EMAIL_VERIFICATION:\n return Object.assign({}, state, {\n emailVerification: Object.assign({}, state.emailVerification, {\n fetching: true,\n error: false,\n }),\n });\n case FAIL_RESEND_EMAIL_VERIFICATION:\n return Object.assign({}, state, {\n errorMessage: errorMessages.failResendEmailMessage,\n emailVerification: Object.assign({}, state.emailVerification, {\n fetching: false,\n error: true,\n }),\n });\n case COMPLETE_RESEND_EMAIL_VERIFICATION:\n return Object.assign({}, state, {\n emailVerification: Object.assign({}, state.emailVerification, {\n fetching: false,\n }),\n });\n case COMPLETE_REMOVE_MANAGER_PARCEL:\n case COMPLETE_REMOVE_INTERESTED_MANAGER:\n case COMPLETE_REMOVE_DEVELOPER_OF_INTEREST:\n return Object.assign({}, state, {\n managers: Object.assign({}, state.managers, {\n data: payload,\n }),\n });\n case START_REMOVE_DEVELOPER_OF_INTEREST:\n case START_REMOVE_MANAGER_PARCEL:\n return Object.assign({}, state, {\n managerEdit: Object.assign({}, state.managerEdit, {\n saving: true,\n }),\n });\n case FAIL_REMOVE_DEVELOPER_OF_INTEREST:\n case FAIL_REMOVE_MANAGER_PARCEL:\n return Object.assign({}, state, {\n errorMessage: errorMessages.failEditManagerMessage,\n managerEdit: Object.assign({}, state.managerEdit, {\n saving: false,\n error: true,\n }),\n });\n default:\n return state;\n }\n}\n","const aisSearchAPIURL = 'https://api.phila.gov/ais/v1/search/';\nconst aisSearchAPIKey = process.env.AIS_SEARCH_KEY;\n\nexport default function makeAISSearchURL(query) {\n return `${aisSearchAPIURL}${query}?gatekeeperKey=${aisSearchAPIKey}`;\n}\n","import { onboardingFormFields } from './constants';\n\nfunction required(state, field) {\n if (!state[field]) {\n return 'This field is required';\n }\n return null;\n}\n\nfunction makeRequiredWhenTruthyValidator(otherField) {\n return (state, field) => {\n if (\n (state[field] && !state[otherField]) ||\n (!state[field] && state[otherField])\n ) {\n return 'This field is required';\n }\n return null;\n };\n}\n\nfunction makeRequiredEqualityValidator(otherField) {\n return (state, field) => {\n if (state[field] !== state[otherField]) {\n return `This field must match the ${otherField} field`;\n }\n return null;\n };\n}\n\nfunction makeAtLeastOneFirmTypeOptionSelectedValidator({\n [onboardingFormFields.IS_DESIGN_FIRM]: isDesignFirm,\n [onboardingFormFields.IS_CONSTRUCTION_FIRM]: isConstructionFirm,\n [onboardingFormFields.IS_MAINTENANCE_FIRM]: isMaintenanceFirm,\n [onboardingFormFields.IS_MANAGEMENT_FIRM]: isManagementFirm,\n}) {\n return [\n isDesignFirm,\n isConstructionFirm,\n isMaintenanceFirm,\n isManagementFirm,\n ].some(Boolean)\n ? null\n : 'At least one selection is required';\n}\n\nconst validators = {\n [onboardingFormFields.EMAIL]: [required],\n [onboardingFormFields.PASSWORD]: [required],\n [onboardingFormFields.CONFIRM_PASSWORD]: [\n makeRequiredEqualityValidator(onboardingFormFields.PASSWORD),\n ],\n [onboardingFormFields.NAME]: [required],\n [onboardingFormFields.TOS]: [required],\n [onboardingFormFields.COMPANY_NAME]: [required],\n [onboardingFormFields.COMPANY_EMAIL]: [required],\n [onboardingFormFields.COMPANY_PHONE]: [required],\n [onboardingFormFields.EIN]: [required],\n [onboardingFormFields.OTHER_RETROFIT_TEXT]: [\n makeRequiredWhenTruthyValidator(onboardingFormFields.OTHER_RETROFIT),\n ],\n [onboardingFormFields.HAS_SELECTED_AT_LEAST_ONE_FIRM_TYPE]: [\n makeAtLeastOneFirmTypeOptionSelectedValidator,\n ],\n};\n\n/* eslint-disable import/prefer-default-export */\n/**\n Run the validation functions for a set of onboarding form\n fields. Return the results for each field in a map of the\n field and its errors.\n\n @param {object} state - the current state of the fields, a\n map of field name and value\n @param {arrayOf(string)} - the fields you want to validate,\n should match keys in the `state` param\n @return\n {\n [onboardingFormFields.FIELD]: ['I am an error', 'I am another error'],\n [onboardingFormFields.OTHER_FIELD]: [] // <-- valid field, no errors\n }\n*/\nexport function validate(state, fields, vendorId) {\n const validationErrors = {};\n fields.forEach(field => {\n const fieldValidators = validators[field];\n const skipForUpdateProfileValidation =\n vendorId &&\n (field === onboardingFormFields.PASSWORD ||\n field === onboardingFormFields.TOS);\n\n if (!fieldValidators || skipForUpdateProfileValidation) {\n validationErrors[field] = [];\n return;\n }\n\n validationErrors[field] = fieldValidators\n .map(v => v(state, field))\n .filter(v => v);\n });\n return validationErrors;\n}\n\nexport function formatFieldsToCamelCase(fields) {\n const camelCaseKeys = Object.keys(fields).map(key => {\n const newKey = onboardingFormFields[key.toUpperCase()];\n return { [newKey]: fields[key] };\n });\n return Object.assign({}, ...camelCaseKeys);\n}\n","import { formatOwner } from './utils';\n\nconst baseRetrofitObject = {\n cistern: null,\n green_roof: null,\n permeable_pavement: null,\n subsurface_storage: null,\n rain_garden: null,\n};\n\nexport default class CSVMaker {\n static makeParcelMapForRow(\n parcel,\n {\n email = null,\n name = null,\n phone = null,\n note = null,\n retrofits = baseRetrofitObject,\n } = {},\n ) {\n return new Map([\n ['parcel_id', parcel.Parcel.ParcelID],\n ['address', parcel.Parcel.Address],\n ['bldg_type', parcel.Parcel.BldgType],\n ['owner', formatOwner(parcel.Parcel.Owner1, parcel.Parcel.Owner2)],\n ['monthly_stormwater_charge', parcel.Parcel.ParcelCharge],\n ['brt_account', parcel.Parcel.BRTAcct],\n ['gross_area', parcel.Parcel.FinalGross],\n ['impervious_area', parcel.Parcel.FinalImperv],\n ['impervious_ground_area', parcel.ImperviousGroundArea],\n ['impervious_roof_area', parcel.ImperviousRoofArea],\n ['existing_gsi', parcel.HasExistingGsi],\n ['cap_approved', parcel.IsCapApproved],\n ['interested', !!email],\n ['interested_name', name],\n ['interested_email', email],\n ['interested_phone', phone],\n ['interested_note', note],\n ['interested_cistern', retrofits.cistern],\n ['interested_green_roof', retrofits.green_roof],\n ['interested_permeable_pavement', retrofits.permeable_pavement],\n ['interested_rain_garden', retrofits.rain_garden],\n ['interested_subsurface_storage', retrofits.subsurface_storage],\n ]);\n }\n\n static formatParcelDataWithInterestedData(parcelData, interestedData) {\n return parcelData.map(parcel =>\n this.makeParcelMapForRow(\n parcel,\n interestedData.find(\n ({ parcelId }) => parcelId === parcel.Parcel.ParcelID,\n ),\n ),\n );\n }\n\n static createCSVStringWithHeaders(parcelDataWithInterested) {\n const csvHeaders = [...parcelDataWithInterested[0].keys()];\n const csvData = parcelDataWithInterested\n .map(row => [...row.values()])\n .slice()\n .sort(([first], [second]) => first - second);\n\n return [csvHeaders, ...csvData].map(row => row.join(',')).join('\\n');\n }\n\n static saveCSV(data) {\n const fileName = `retrofitmap-data-${new Date(\n Date.now(),\n ).toISOString()}.csv`;\n const blob = new Blob([data]);\n\n if (window.navigator.msSaveOrOpenBlob) {\n window.navigator.msSaveBlob(blob, fileName);\n return null;\n }\n\n const type = { type: 'text/csv' };\n const a = window.document.createElement('a');\n\n a.href = window.URL.createObjectURL(blob, type);\n a.download = fileName;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n\n return null;\n }\n}\n","import { combineReducers } from 'redux';\n\nimport {\n START_DEVELOPER_SIGN_IN,\n FAIL_DEVELOPER_SIGN_IN,\n COMPLETE_DEVELOPER_SIGN_IN,\n COMPLETE_DEVELOPER_SIGN_OUT,\n RESET_RETROFIT_MAP,\n} from '../../actions';\n\nimport {\n SHOW_SIGN_IN,\n SHOW_SIGN_UP,\n SHOW_FORGOT_PASSWORD,\n START_SUBMITTING_ONBOARDING_FORM,\n FAIL_SUBMITTING_ONBOARDING_FORM,\n COMPLETE_SUBMITTING_ONBOARDING_FORM,\n UPDATE_ONBOARDING_FORM_FIELD,\n SET_ONBOARDING_FORM_ERRORS,\n SET_ONBOARDING_SIGN_UP_FORM_ERRORS,\n TOGGLE_ONBOARDING_FORM_FIELD,\n TOGGLE_SHOW_PASSWORD,\n TOGGLE_SHOW_CONFIRM_PASSWORD,\n SHOW_TERMS_OF_USE_MODAL,\n HIDE_TERMS_OF_USE_MODAL,\n UPDATE_DEVELOPER_AUTH_EMAIL,\n UPDATE_DEVELOPER_AUTH_PASSWORD,\n START_SEND_RESET_PASSWORD_EMAIL,\n FAIL_SEND_RESET_PASSWORD_EMAIL,\n COMPLETE_SEND_RESET_PASSWORD_EMAIL,\n UPDATE_FORGOT_PASSWORD_EMAIL_ADDRESS,\n DISPLAY_FORGOT_PASSWORD_EMAIL_VALIDATION_ERROR,\n SET_TOS_ERROR,\n COMPLETE_VENDOR_SIGN_IN,\n CREATE_UPDATE_FIELDS_SNAPSHOT,\n RESET_FIELDS_TO_FIELDS_SNAPSHOT,\n RESET_UPDATE_PROFILE,\n} from './actions';\n\nimport {\n onboardingFormFields,\n signInError,\n signInBoxStatesEnum,\n} from './constants';\n\nconst initialPageState = {\n submitting: false,\n error: null,\n showPassword: false,\n showConfirmPassword: false,\n displayTermsOfUseModal: false,\n signInBoxState: signInBoxStatesEnum.showSignUp,\n resetPassword: {\n validationError: false,\n fetching: false,\n error: false,\n success: false,\n email: '',\n },\n};\n\nconst initialFieldsState = {\n [onboardingFormFields.EMAIL]: '',\n [onboardingFormFields.PASSWORD]: '',\n [onboardingFormFields.CONFIRM_PASSWORD]: '',\n [onboardingFormFields.TOS]: false,\n [onboardingFormFields.NAME]: '',\n [onboardingFormFields.PHONE]: '',\n [onboardingFormFields.USE_COMPANY_CONTACT]: true,\n [onboardingFormFields.COMPANY_NAME]: '',\n [onboardingFormFields.COMPANY_EMAIL]: '',\n [onboardingFormFields.COMPANY_PHONE]: '',\n [onboardingFormFields.COMPANY_WEBSITE]: '',\n [onboardingFormFields.RAIN_GARDEN]: false,\n [onboardingFormFields.SUBSURFACE_STORAGE]: false,\n [onboardingFormFields.GREEN_ROOF]: false,\n [onboardingFormFields.PERMEABLE_PAVEMENT]: false,\n [onboardingFormFields.CISTERN]: false,\n [onboardingFormFields.OTHER_RETROFIT]: false,\n [onboardingFormFields.OTHER_RETROFIT_TEXT]: '',\n [onboardingFormFields.EIN]: '',\n [onboardingFormFields.COMMERCIAL_ACTIVITY_LICENSE]: '',\n [onboardingFormFields.SHOULD_EMAIL_PARCEL_UPDATES]: false,\n [onboardingFormFields.HAS_WORKED_ON_GRANT]: false,\n [onboardingFormFields.HAS_BEEN_SUBGRANTEE]: false,\n [onboardingFormFields.IS_DESIGN_FIRM]: false,\n [onboardingFormFields.IS_CONSTRUCTION_FIRM]: false,\n [onboardingFormFields.IS_MAINTENANCE_FIRM]: false,\n [onboardingFormFields.IS_MANAGEMENT_FIRM]: false,\n [onboardingFormFields.HAS_READ_TOS]: false,\n};\n\nconst initialValidationState = {\n [onboardingFormFields.EMAIL]: [],\n [onboardingFormFields.PASSWORD]: [],\n [onboardingFormFields.CONFIRM_PASSWORD]: [],\n [onboardingFormFields.NAME]: [],\n [onboardingFormFields.TOS]: [],\n [onboardingFormFields.COMPANY_NAME]: [],\n [onboardingFormFields.COMPANY_EMAIL]: [],\n [onboardingFormFields.COMPANY_PHONE]: [],\n [onboardingFormFields.EIN]: [],\n [onboardingFormFields.COMPANY_WEBSITE]: [],\n [onboardingFormFields.HAS_SELECTED_AT_LEAST_ONE_FIRM_TYPE]: [],\n [onboardingFormFields.HAS_READ_TOS]: [],\n};\n\nconst initialUpdateProfileState = {\n unsavedChanges: false,\n fieldsSnapshot: null,\n};\n\nfunction page(state = initialPageState, { type, payload }) {\n switch (type) {\n case RESET_RETROFIT_MAP:\n return initialPageState;\n case SHOW_TERMS_OF_USE_MODAL:\n return Object.assign({}, state, {\n displayTermsOfUseModal: true,\n });\n case HIDE_TERMS_OF_USE_MODAL:\n return Object.assign({}, state, {\n displayTermsOfUseModal: false,\n });\n case SHOW_SIGN_IN:\n return Object.assign({}, state, {\n error: null,\n signInBoxState: signInBoxStatesEnum.showSignIn,\n });\n case SHOW_SIGN_UP:\n return Object.assign({}, state, {\n signInBoxState: signInBoxStatesEnum.showSignUp,\n });\n case SHOW_FORGOT_PASSWORD:\n return Object.assign({}, state, {\n signInBoxState: signInBoxStatesEnum.showForgotPassword,\n });\n case DISPLAY_FORGOT_PASSWORD_EMAIL_VALIDATION_ERROR:\n return Object.assign({}, state, {\n resetPassword: Object.assign({}, state.resetPassword, {\n validationError: true,\n fetching: false,\n }),\n });\n case UPDATE_FORGOT_PASSWORD_EMAIL_ADDRESS:\n return Object.assign({}, state, {\n resetPassword: Object.assign({}, state.resetPassword, {\n validationError: false,\n email: payload,\n }),\n });\n case START_SEND_RESET_PASSWORD_EMAIL:\n return Object.assign({}, state, {\n resetPassword: Object.assign({}, state.resetPassword, {\n fetching: true,\n error: false,\n success: false,\n }),\n });\n case FAIL_SEND_RESET_PASSWORD_EMAIL:\n return Object.assign({}, state, {\n resetPassword: Object.assign({}, state.resetPassword, {\n fetching: false,\n error: true,\n email: '',\n }),\n });\n case COMPLETE_SEND_RESET_PASSWORD_EMAIL:\n return Object.assign({}, state, {\n resetPassword: Object.assign({}, state.resetPassword, {\n fetching: false,\n error: false,\n success: true,\n email: '',\n }),\n });\n case START_SUBMITTING_ONBOARDING_FORM:\n return Object.assign({}, state, {\n submitting: true,\n error: null,\n });\n case FAIL_SUBMITTING_ONBOARDING_FORM:\n return Object.assign({}, state, {\n submitting: false,\n error: payload,\n });\n case COMPLETE_SUBMITTING_ONBOARDING_FORM:\n return Object.assign({}, state, {\n submitting: false,\n });\n case TOGGLE_SHOW_PASSWORD:\n return Object.assign({}, state, {\n showPassword: !state.showPassword,\n });\n case TOGGLE_SHOW_CONFIRM_PASSWORD:\n return Object.assign({}, state, {\n showConfirmPassword: !state.showConfirmPassword,\n });\n case START_DEVELOPER_SIGN_IN:\n return Object.assign({}, state, {\n submitting: true,\n error: null,\n });\n case FAIL_DEVELOPER_SIGN_IN:\n return Object.assign({}, state, {\n submitting: false,\n error: signInError,\n });\n case COMPLETE_DEVELOPER_SIGN_IN:\n case UPDATE_DEVELOPER_AUTH_EMAIL:\n case UPDATE_DEVELOPER_AUTH_PASSWORD:\n return Object.assign({}, state, {\n submitting: false,\n error: null,\n });\n default:\n return state;\n }\n}\n\nfunction fields(state = initialFieldsState, { type, payload }) {\n switch (type) {\n case UPDATE_ONBOARDING_FORM_FIELD:\n return Object.assign({}, state, {\n [payload.field]: payload.value,\n });\n case TOGGLE_ONBOARDING_FORM_FIELD:\n return Object.assign({}, state, {\n [payload.field]: !state[payload.field],\n });\n case SHOW_TERMS_OF_USE_MODAL:\n return Object.assign({}, state, {\n [onboardingFormFields.HAS_READ_TOS]: true,\n });\n case RESET_FIELDS_TO_FIELDS_SNAPSHOT:\n case COMPLETE_VENDOR_SIGN_IN:\n return Object.assign({}, state, payload);\n case COMPLETE_DEVELOPER_SIGN_OUT:\n return initialFieldsState;\n default:\n return state;\n }\n}\n\nfunction updateProfile(state = initialUpdateProfileState, { type, payload }) {\n switch (type) {\n case TOGGLE_ONBOARDING_FORM_FIELD:\n case UPDATE_ONBOARDING_FORM_FIELD:\n return Object.assign({}, state, { unsavedChanges: true });\n case CREATE_UPDATE_FIELDS_SNAPSHOT:\n return Object.assign({}, state, { fieldsSnapshot: payload });\n case RESET_FIELDS_TO_FIELDS_SNAPSHOT:\n return Object.assign({}, state, { unsavedChanges: false });\n case COMPLETE_SUBMITTING_ONBOARDING_FORM:\n return Object.assign({}, state, {\n unsavedChanges: false,\n fieldsSnapshot: payload,\n });\n case COMPLETE_DEVELOPER_SIGN_OUT:\n case RESET_UPDATE_PROFILE:\n return initialUpdateProfileState;\n default:\n return state;\n }\n}\n\nfunction validation(state = initialValidationState, { type, payload }) {\n switch (type) {\n case START_SUBMITTING_ONBOARDING_FORM:\n return initialValidationState;\n case SET_ONBOARDING_FORM_ERRORS:\n case SET_ONBOARDING_SIGN_UP_FORM_ERRORS:\n case FAIL_SUBMITTING_ONBOARDING_FORM:\n return Object.assign({}, state, payload);\n case SHOW_TERMS_OF_USE_MODAL:\n return Object.assign({}, state, {\n [onboardingFormFields.HAS_READ_TOS]: [],\n });\n case SET_TOS_ERROR:\n return Object.assign({}, state, {\n [onboardingFormFields.HAS_READ_TOS]: [\n 'Terms of use must be read to proceed with signing up for Stormwater Connect.',\n ],\n });\n case RESET_FIELDS_TO_FIELDS_SNAPSHOT:\n return initialValidationState;\n default:\n return state;\n }\n}\n\nexport default combineReducers({\n page,\n fields,\n updateProfile,\n validation,\n});\n","import {\n SET_UID,\n SET_TOKEN,\n SET_NEW_PASSWORD_ONE,\n SET_NEW_PASSWORD_TWO,\n START_RESET_PASSWORD,\n FAIL_RESET_PASSWORD,\n COMPLETE_RESET_PASSWORD,\n CLEAR_RESET_PASSWORD,\n} from './actions';\n\nconst initialState = {\n uid: null,\n token: null,\n newPasswordOne: '',\n newPasswordTwo: '',\n fetching: false,\n error: false,\n errorMessages: null,\n confirmationResponse: false,\n};\n\nexport default function resetPasswordPage(\n state = initialState,\n { type, payload },\n) {\n switch (type) {\n case SET_UID:\n return Object.assign({}, state, {\n uid: payload,\n });\n case SET_TOKEN:\n return Object.assign({}, state, {\n token: payload,\n });\n case SET_NEW_PASSWORD_ONE:\n return Object.assign({}, state, {\n newPasswordOne: payload,\n });\n case SET_NEW_PASSWORD_TWO:\n return Object.assign({}, state, {\n newPasswordTwo: payload,\n });\n case START_RESET_PASSWORD:\n return Object.assign({}, state, {\n fetching: true,\n error: false,\n errorMessages: null,\n });\n case FAIL_RESET_PASSWORD:\n return Object.assign({}, state, {\n fetching: false,\n error: true,\n errorMessages: payload,\n });\n case COMPLETE_RESET_PASSWORD:\n return Object.assign({}, initialState, {\n confirmationResponse: true,\n });\n case CLEAR_RESET_PASSWORD:\n return initialState;\n default:\n return state;\n }\n}\n","import { API_BASE_URL } from '../../constants';\n\nexport const apiError = {\n apiError: ['An unknown error occurred!'],\n};\nexport const resetPasswordUrl = `${API_BASE_URL}/rest-auth/password/reset/confirm/`;\nexport const changePasswordUrl = `${API_BASE_URL}/rest-auth/password/change/`;\n","import { HIDE_ERROR_MODAL } from '../../actions';\n\nimport {\n CHANGE_AIS_GEOCODER_SEARCH_QUERY,\n START_AIS_GEOCODER_SEARCH,\n FAIL_AIS_GEOCODER_SEARCH,\n COMPLETE_AIS_GEOCODER_SEARCH,\n UPDATE_AIS_GEOCODER_FIT_BOUNDS,\n COMPLETE_FETCH_PARCEL_DATA,\n REFETCH_ON_EMPTY_QUERY,\n CLEAR_AIS_GEOCODER_DATA,\n} from './actions';\n\nconst initialState = {\n bounds: null,\n boundsPending: false,\n parcelsPending: false,\n data: null,\n fetching: false,\n error: false,\n query: '',\n userInitiated: false,\n};\n\nexport default function aisGeocoder(state = initialState, { type, payload }) {\n switch (type) {\n case HIDE_ERROR_MODAL:\n return Object.assign({}, state, {\n error: false,\n });\n case CHANGE_AIS_GEOCODER_SEARCH_QUERY:\n return Object.assign({}, state, {\n query: payload,\n });\n case START_AIS_GEOCODER_SEARCH:\n return Object.assign({}, state, {\n boundsPending: true,\n parcelsPending: true,\n data: null,\n fetching: true,\n error: false,\n userInitiated: true,\n });\n case FAIL_AIS_GEOCODER_SEARCH:\n return Object.assign({}, state, {\n bounds: initialState.bounds,\n boundsPending: false,\n parcelsPending: false,\n fetching: false,\n error: true,\n data: initialState.data,\n });\n case COMPLETE_AIS_GEOCODER_SEARCH:\n return Object.assign({}, state, {\n fetching: false,\n data: payload,\n });\n case UPDATE_AIS_GEOCODER_FIT_BOUNDS:\n return Object.assign({}, state, {\n boundsPending: state.boundsPending && state.parcelsPending,\n bounds:\n state.boundsPending || state.parcelsPending\n ? payload\n : state.bounds,\n });\n case COMPLETE_FETCH_PARCEL_DATA:\n return Object.assign({}, state, {\n parcelsPending: false,\n });\n case REFETCH_ON_EMPTY_QUERY:\n return Object.assign({}, state, {\n userInitiated: false,\n });\n case CLEAR_AIS_GEOCODER_DATA:\n return Object.assign({}, initialState, {\n userInitiated: state.userInitiated,\n });\n default:\n return state;\n }\n}\n","import {\n RESET_LAT_LNG_PARCEL_SEARCH,\n START_LAT_LNG_PARCEL_SEARCH,\n FAIL_LAT_LNG_PARCEL_SEARCH,\n COMPLETE_LAT_LNG_PARCEL_SEARCH,\n} from './actions';\n\nconst initialState = {\n fetching: false,\n error: false,\n data: null,\n latlng: null,\n};\n\nexport default function latLngParcelSearchReducer(\n state = initialState,\n { type, payload },\n) {\n switch (type) {\n case RESET_LAT_LNG_PARCEL_SEARCH:\n return initialState;\n case START_LAT_LNG_PARCEL_SEARCH:\n return Object.assign({}, state, {\n fetching: true,\n error: false,\n data: null,\n latlng: payload,\n });\n case FAIL_LAT_LNG_PARCEL_SEARCH:\n return Object.assign({}, state, {\n fetching: false,\n error: true,\n });\n case COMPLETE_LAT_LNG_PARCEL_SEARCH:\n return Object.assign({}, state, {\n fetching: false,\n error: false,\n data: payload,\n });\n default:\n return state;\n }\n}\n","import React from 'react';\nimport { object } from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\n\nimport { vendorMapUrl, garpMarketingUrl } from '../../common/constants';\n\nconst styles = {\n main: {\n display: 'flex',\n flexFlow: 'column nowrap',\n alignItems: 'center',\n justifyContent: 'flex-start',\n margin: '0 1.6rem',\n paddingBottom: '8rem',\n },\n heading: {\n maxWidth: '600px',\n margin: '4rem 0',\n font: '3.6rem/5.4rem \"Open Sans\", sans-serif',\n fontWeight: 700,\n textAlign: 'center',\n },\n aside: {\n maxWidth: '600px',\n marginTop: '4rem',\n padding: '2.4rem',\n backgroundColor: '#c6dae7',\n },\n list: {\n margin: 0,\n padding: 0,\n font: '1.6rem/2.4rem \"Open Sans\", sans-serif',\n fontWeight: 400,\n listStyle: 'none',\n },\n listItem: {\n marginBottom: '2.4rem',\n },\n link: {\n color: '#0078c8',\n textDecoration: 'none',\n fontWeight: 700,\n },\n};\n\nconst NotFound = ({ location: { pathname } }) => {\n if (!pathname.startsWith('/stormwater/connect')) {\n return ;\n }\n return (\n
\n
\n

404 - page not found

\n \n
\n
\n );\n};\n\nNotFound.defaultProps = {\n location: {},\n};\n\nNotFound.propTypes = {\n location: object, // eslint-disable-line react/forbid-prop-types\n};\n\nexport default connect(null)(NotFound);\n","import { preferredContactTypes } from './constants';\n\nconst eligibleBldgTypes = ['NonRes', 'Condo', 'Apt'];\n\nexport function parcelIsEligible({ Parcel }) {\n return (\n Parcel && Parcel.BldgType && eligibleBldgTypes.includes(Parcel.BldgType)\n );\n}\n\nexport default function selectEligibleParcels(data) {\n return data.filter(parcelIsEligible);\n}\n\nexport function mapPreferredContact({ email, phone }) {\n if (email && phone) {\n return preferredContactTypes.both;\n }\n if (phone) {\n return preferredContactTypes.telephone;\n }\n if (email) {\n return preferredContactTypes.email;\n }\n // db columns default to False, so false and false should represent both/either\n return preferredContactTypes.both;\n}\n","import {\n arrayOf,\n number,\n objectOf,\n oneOf,\n shape,\n string,\n bool,\n} from 'prop-types';\n\nimport {\n developerStatusTypes as globalDeveloperStatusTypes,\n DASHBOARD_BASE_URL,\n API_BASE_URL,\n} from '../../constants';\n\nimport { preferredContactTypes } from '../../../common/constants';\n\nexport const DASHBOARD_ROUTES = {\n signin: `${DASHBOARD_BASE_URL}/signin`,\n vendor: `${DASHBOARD_BASE_URL}/vendor`,\n addVendor: `${DASHBOARD_BASE_URL}/vendor/add`,\n vendors: `${DASHBOARD_BASE_URL}/vendors`,\n customer: `${DASHBOARD_BASE_URL}/customer`,\n customerAdd: `${DASHBOARD_BASE_URL}/customer/add`,\n customers: `${DASHBOARD_BASE_URL}/customers`,\n home: `${DASHBOARD_BASE_URL}/home`,\n};\n\nexport const loginUrl = `${API_BASE_URL}/dashboard-login/`;\nexport const logoutUrl = `${API_BASE_URL}/dashboard-logout/`;\nexport const propertyManagersUrl = `${API_BASE_URL}/customers/`;\nexport const retrofitDevelopersUrl = `${API_BASE_URL}/dashboard-retrofitvendors/`;\nexport const userUrl = `${API_BASE_URL}/users/`;\nexport const resendEmailUrl = `${API_BASE_URL}/dashboard-retrofitvendors/email-verification/`;\nexport const addRetrofitDeveloperUrl = `${API_BASE_URL}/dashboard-retrofitvendors/new-vendor/`;\nexport const addPropertyManagerUrl = `${API_BASE_URL}/submitcustomerform/`;\nexport const addManagerParcelUrl = `${API_BASE_URL}/parcels/`;\n\nexport function makePropertyManagerEditUrl(id) {\n return `${propertyManagersUrl}${id}/`;\n}\n\nexport function makeRetrofitDeveloperEditUrl(id) {\n return `${userUrl}${id}/`;\n}\n\nexport function makeRemoveDeveloperOfInterestUrl(\n parcelId,\n managerId,\n developerId,\n) {\n return `${propertyManagersUrl}${managerId}/parcels/${parcelId}/vendors/${developerId}/`;\n}\n\nexport function makeRemoveInterestedManagerUrl(developerId, managerId) {\n return `${userUrl}${developerId}/customers/${managerId}/`;\n}\n\nexport function makeRemoveParcelUrl(parcelId) {\n return `${API_BASE_URL}/parcels/${parcelId}/`;\n}\n\nexport const networkError = 'Network Error';\nexport const forbiddenError = 'Unable to login in with those credentials';\nexport const unknownError = 'An unknown error occurred!';\n\n// API connection error formatted to match Django REST Framework sent errors\nexport const apiError = {\n apiError: [unknownError],\n};\n\nexport const validationErrorPropType = arrayOf(string);\nexport const validationErrorsPropType = objectOf(validationErrorPropType);\n\nexport const editableFieldTypes = {\n string: 'string',\n dropdown: 'dropdown',\n textbox: 'textbox',\n checkbox: 'checkbox',\n retrofitSelection: 'retrofitSelection',\n companyTypeSelection: 'companyTypeSelection',\n};\n\nexport const developerStatusTypes = globalDeveloperStatusTypes;\n\nexport const factListLinkTypes = {\n email: 'email',\n website: 'website',\n telephone: 'telephone',\n};\n\nexport const newUserId = 0;\n\nexport const developerDataPropType = shape({\n id: number.isRequired,\n companyName: string.isRequired,\n website: string.isRequired,\n email: string.isRequired,\n phone: string.isRequired,\n preferredContact: oneOf(Object.values(preferredContactTypes)),\n ein: string.isRequired,\n commercialActivityLicense: string.isRequired,\n signUpDate: string.isRequired,\n approvedDate: string,\n deactivatedDate: string,\n deniedDate: string,\n reasonForDenial: string,\n status: oneOf(Object.values(developerStatusTypes)).isRequired,\n isEmailVerified: bool.isRequired,\n contactName: string.isRequired,\n contactEmail: string.isRequired,\n contactPhone: string,\n retrofits: arrayOf(string),\n otherRetrofit: string,\n isDesignFirm: bool.isRequired,\n isConstructionFirm: bool.isRequired,\n isMaintenanceFirm: bool.isRequired,\n isManagementFirm: bool.isRequired,\n});\n\nexport const parcelDataPropType = shape({\n id: number.isRequired,\n managerId: number.isRequired,\n address: string.isRequired,\n});\n\nexport const managerDataPropType = shape({\n id: number.isRequired,\n propertyManager: string.isRequired,\n contactEmail: string,\n contactPhone: string,\n preferredContact: oneOf(Object.values(preferredContactTypes)),\n noteToDevelopers: string,\n parcels: arrayOf(parcelDataPropType),\n developersOfInterest: arrayOf(number),\n});\n\nexport const retrofitTypes = {\n rainGarden: 'Rain garden',\n greenRoof: 'Green roof',\n permeablePavement: 'Permeable pavement',\n subsurfaceStorage: 'Subsurface storage',\n cistern: 'Cistern',\n};\n\nexport const propertyTypes = {\n industrialAndCommercial: 'Non-residential',\n multifamily: 'Condo',\n};\n\nexport const parcelBuildingTypes = {\n NonRes: propertyTypes.industrialAndCommercial,\n Condo: propertyTypes.multifamily,\n};\n\nexport const errorMessages = {\n failLoadDevelopersMessage: `Unable to load vendors, due to a problem\n with our server or the network. Try again later.`,\n failLoadManagersMessage: `Unable to load customers, due to a problem with\n our server or the network. Try again later.`,\n failEditDeveloperMessage: 'Unable to save vendor edits.',\n failEditManagerMessage: 'Unable to save customer edits.',\n failResendEmailMessage: 'Unable to resend email verification email.',\n defaultErrorMessage: 'An error occurred.',\n};\n\nexport const dashboardSortOrderEnum = {\n ascending: 'ascending',\n descending: 'descending',\n none: 'none',\n};\n\n// Used to set the initial reducer sort order\n// and to indicate the sortable columns in the tables\nexport const initialManagerTableSortOrder = {\n name: dashboardSortOrderEnum.none,\n email: dashboardSortOrderEnum.none,\n signupDate: dashboardSortOrderEnum.ascending,\n propertyCount: dashboardSortOrderEnum.none,\n interestedCount: dashboardSortOrderEnum.none,\n};\n\nexport const sortableManagerTableColumns = Object.entries(\n initialManagerTableSortOrder,\n).reduce((acc, [key]) => Object.assign({}, acc, { [key]: key }), {});\n\nexport const initialDeveloperTableSortOrder = {\n company: dashboardSortOrderEnum.none,\n website: dashboardSortOrderEnum.none,\n signupDate: dashboardSortOrderEnum.ascending,\n interestedCount: dashboardSortOrderEnum.none,\n status: dashboardSortOrderEnum.none,\n};\n\nexport const sortableDeveloperTableColumns = Object.entries(\n initialDeveloperTableSortOrder,\n).reduce((acc, [key]) => Object.assign({}, acc, { [key]: key }), {});\n","import { head, includes, map, noop, round, shuffle, sum, values } from 'lodash';\nimport { preferredContactTypes } from '../common/constants';\n\nimport csrfRequest from '../common/csrfRequest';\n\nimport { mapPreferredContact, parcelIsEligible } from '../common/utils';\n\nimport { NO_RESULTS_MESSAGE } from '../geocoder/constants';\n\nimport {\n benefitFields,\n parcelAPIUrl,\n regulatoryAPIUrl,\n retrofitDevelopersUrl,\n SUBMIT_PROPERTY_MANAGER_FORM_URL,\n SUBSURFACE_STORAGE,\n GREEN_ROOF,\n CISTERN,\n PERMEABLE_PAVEMENT,\n RAIN_GARDEN,\n uiSections,\n defaultParcelImperviousArea,\n apiError,\n makeResendManagerEmailUrl,\n NO_IDEA,\n retrofits as retrofitTypes,\n resendCustomerEmail,\n} from './constants';\n\nexport const START_FETCH_DEVELOPER_DATA = 'START_FETCH_DEVELOPER_DATA';\nexport const COMPLETE_FETCH_DEVELOPER_DATA = 'COMPLETE_FETCH_DEVELOPER_DATA';\nexport const FAIL_FETCH_DEVELOPER_DATA = 'FAIL_FETCH_DEVELOPER_DATA';\nexport const START_FETCH_PARCEL_DATA = 'START_FETCH_PARCEL_DATA';\nexport const COMPLETE_FETCH_PARCEL_DATA = 'COMPLETE_FETCH_PARCEL_DATA';\nexport const FAIL_FETCH_PARCEL_DATA = 'FAIL_FETCH_PARCEL_DATA';\nexport const START_SUBMIT_CONTACT_FORM = 'START_SUBMIT_CONTACT_FORM';\nexport const COMPLETE_SUBMIT_CONTACT_FORM = 'COMPLETE_SUBMIT_CONTACT_FORM';\nexport const FAIL_SUBMIT_CONTACT_FORM = 'FAIL_SUBMIT_CONTACT_FORM';\nexport const REMOVE_PARCEL = 'REMOVE_PARCEL';\nexport const TOGGLE_GEOCODER = 'TOGGLE_GEOCODER';\nexport const UPDATE_SUBMITTING_CONTROL = 'UPDATE_SUBMITTING_CONTROL';\nexport const UPDATE_SUBMITTED_QUERY = 'UPDATE_SUBMITTED_QUERY';\nexport const UPDATE_BENEFIT_SLIDER_VALUE = 'UPDATE_BENEFIT_SLIDER_VALUE';\nexport const UPDATE_BENEFIT_ESTIMATE_VALUE = 'UPDATE_BENEFIT_ESTIMATE_VALUE';\nexport const START_FETCH_CURRENT_UNIT_CHARGE =\n 'START_FETCH_CURRENT_UNIT_CHARGE';\nexport const FAIL_FETCH_CURRENT_UNIT_CHARGE = 'FAIL_FETCH_CURRENT_UNIT_CHARGE';\nexport const COMPLETE_FETCH_CURRENT_UNIT_CHARGE =\n 'COMPLETE_FETCH_CURRENT_UNIT_CHARGE';\nexport const SELECT_DEVELOPERS = 'SELECT_DEVELOPERS';\nexport const DESELECT_DEVELOPERS = 'DESELECT_DEVELOPERS';\nexport const SHOW_TERMS_OF_USE_MODAL = 'SHOW_TERMS_OF_USE_MODAL';\nexport const HIDE_TERMS_OF_USE_MODAL = 'HIDE_TERMS_OF_USE_MODAL';\nexport const START_RESEND_MANAGER_EMAIL = 'START_RESEND_MANAGER_EMAIL';\nexport const FAIL_RESEND_MANAGER_EMAIL = 'FAIL_RESEND_MANAGER_EMAIL';\nexport const COMPLETE_RESEND_MANAGER_EMAIL = 'COMPLETE_RESEND_MANAGER_EMAIL';\nexport const COMPLETE_RESEND_MANAGER_EMAIL_WITHOUT_PARCEL =\n 'COMPLETE_RESEND_MANAGER_EMAIL_WITHOUT_PARCEL';\nexport const AVOID_RESENDING_MANAGER_EMAIL_WITHOUT_PARCEL =\n 'AVOID_RESENDING_MANAGER_EMAIL_WITHOUT_PARCEL';\nexport const SELECT_RETROFITS_FROM_QUERY_STRING =\n 'SELECT_RETROFITS_FROM_QUERY_STRING';\nexport const HIDE_GEOCODER_ON_COMPLETING_PARCEL_SEARCH_FROM_QUERY_STRING =\n 'HIDE_GEOCODER_ON_COMPLETING_PARCEL_SEARCH_FROM_QUERY_STRING';\nexport const CLOSE_CONFIRMATION_PAGE = 'CLOSE_CONFIRMATION_PAGE';\nexport const SET_SHOW_ALL_DEVELOPERS = 'SET_SHOW_ALL_DEVELOPERS';\nexport const SET_DEVELOPER_QUERY = 'SET_DEVELOPER_QUERY';\n\nexport function closeConfirmationPage() {\n return {\n type: CLOSE_CONFIRMATION_PAGE,\n };\n}\n\nfunction startFetchCurrentUnitCharge() {\n return {\n type: START_FETCH_CURRENT_UNIT_CHARGE,\n };\n}\n\nfunction failFetchCurrentUnitCharge() {\n return {\n type: FAIL_FETCH_CURRENT_UNIT_CHARGE,\n };\n}\n\nfunction completeFetchCurrentUnitCharge(unitCharge) {\n return {\n type: COMPLETE_FETCH_CURRENT_UNIT_CHARGE,\n payload: unitCharge,\n };\n}\n\nexport function fetchUnitCharge() {\n return dispatch => {\n dispatch(startFetchCurrentUnitCharge());\n csrfRequest\n .get(regulatoryAPIUrl)\n .then(({ data: { ImperviousUnitCharge: unitCharge } }) =>\n dispatch(completeFetchCurrentUnitCharge(unitCharge)),\n )\n .catch(() => dispatch(failFetchCurrentUnitCharge()));\n };\n}\n\nfunction startFetchDeveloperData() {\n return {\n type: START_FETCH_DEVELOPER_DATA,\n };\n}\n\nfunction completeFetchDeveloperData(data) {\n return {\n type: COMPLETE_FETCH_DEVELOPER_DATA,\n payload: data,\n };\n}\n\nfunction failFetchDeveloperData(error) {\n return {\n type: FAIL_FETCH_DEVELOPER_DATA,\n payload: error,\n };\n}\n\nfunction reformatRetrofits(retrofits) {\n return Object.entries(retrofits)\n .filter(([, value]) => value)\n .map(([retrofit]) => retrofit);\n}\n\nfunction formatAPIRetrofitDeveloperData(data) {\n return data.map(\n ({\n id,\n company_name,\n company_website,\n company_email,\n company_phone,\n prefer_email,\n prefer_phone,\n green_roof,\n cistern,\n permeable_pavement,\n rain_garden,\n subsurface_storage,\n has_worked_on_grant,\n has_been_subgrantee,\n other_retrofit,\n is_design_firm,\n is_construction_firm,\n is_maintenance_firm,\n is_management_firm,\n }) => ({\n id,\n name: company_name,\n url: company_website,\n email: company_email,\n phoneNumber: company_phone,\n preferredContact: mapPreferredContact({\n email: prefer_email,\n phone: prefer_phone,\n }),\n hasWorkedOnGrant: has_worked_on_grant,\n hasBeenSubgrantee: has_been_subgrantee,\n retrofits: reformatRetrofits({\n green_roof,\n cistern,\n permeable_pavement,\n rain_garden,\n subsurface_storage,\n }),\n isDesignFirm: is_design_firm,\n isConstructionFirm: is_construction_firm,\n isMaintenanceFirm: is_maintenance_firm,\n isManagementFirm: is_management_firm,\n otherRetrofit: other_retrofit,\n }),\n );\n}\n\nexport function fetchDeveloperData() {\n return dispatch => {\n dispatch(startFetchDeveloperData());\n csrfRequest\n .get(retrofitDevelopersUrl)\n .then(({ data }) => formatAPIRetrofitDeveloperData(data))\n .then(data => shuffle(data))\n .then(data => dispatch(completeFetchDeveloperData(data)))\n .catch(() => dispatch(failFetchDeveloperData('An error occurred')));\n };\n}\n\nfunction startFetchParcelData() {\n return {\n type: START_FETCH_PARCEL_DATA,\n };\n}\n\nfunction hideGeocoderOnCompletingParcelSearchFromQueryString() {\n return {\n type: HIDE_GEOCODER_ON_COMPLETING_PARCEL_SEARCH_FROM_QUERY_STRING,\n };\n}\n\nfunction completeFetchParcelData(data, fromQueryString) {\n return dispatch => {\n if (fromQueryString) {\n dispatch(hideGeocoderOnCompletingParcelSearchFromQueryString());\n }\n\n return dispatch({\n type: COMPLETE_FETCH_PARCEL_DATA,\n payload: data,\n });\n };\n}\n\nfunction failFetchParcelData(error) {\n window.console.warn(error);\n\n return {\n type: FAIL_FETCH_PARCEL_DATA,\n payload: NO_RESULTS_MESSAGE,\n };\n}\n\nfunction calculateAggregatedSavings(annualSavings, timeHorizon) {\n return round(annualSavings * timeHorizon, 0);\n}\n\nfunction calculateWaterCredits(parcels, retrofitScope, unitCharge) {\n const isDefaultParcel = !parcels.length;\n\n function roundUpToNearestFiveHundredSqFt(area) {\n return Math.ceil(area / 500) * 500;\n }\n\n function getBillingUnits(roundedArea) {\n return roundedArea / 500;\n }\n\n function multiplyByUnitCharge(billingUnits) {\n return billingUnits * unitCharge;\n }\n\n const imperviousArea = isDefaultParcel\n ? defaultParcelImperviousArea\n : sum(map(parcels, parcel => parcel.Parcel.ImpervArea));\n\n const reducedImperviousArea =\n imperviousArea - imperviousArea * retrofitScope;\n const currentAreaCharges = multiplyByUnitCharge(\n getBillingUnits(roundUpToNearestFiveHundredSqFt(imperviousArea)),\n );\n const adjustedAreaCharges = multiplyByUnitCharge(\n getBillingUnits(roundUpToNearestFiveHundredSqFt(reducedImperviousArea)),\n );\n\n return (currentAreaCharges - adjustedAreaCharges) * 12;\n}\n\nexport function updateBenefitEstimateValue(field, value) {\n return {\n type: UPDATE_BENEFIT_ESTIMATE_VALUE,\n payload: { field, value },\n };\n}\n\nexport function updateBenefitFields() {\n return (dispatch, getState) => {\n const {\n customers: {\n main: {\n currentUnitCharge,\n parcel: { data: parcelData },\n userInput: { benefitEstimateParameters },\n },\n },\n } = getState();\n\n const waterBillCreditValue = calculateWaterCredits(\n parcelData,\n benefitEstimateParameters[benefitFields.RetrofitScope],\n currentUnitCharge,\n );\n\n const maintenanceValue = waterBillCreditValue * 0.2;\n const annualSavingsValue = waterBillCreditValue - maintenanceValue;\n\n const aggregatedSavingsValue = calculateAggregatedSavings(\n annualSavingsValue,\n benefitEstimateParameters[benefitFields.TimeHorizon],\n );\n\n dispatch(\n updateBenefitEstimateValue(\n benefitFields.Maintenance,\n maintenanceValue,\n ),\n );\n\n dispatch(\n updateBenefitEstimateValue(\n benefitFields.WaterBillCredits,\n waterBillCreditValue,\n ),\n );\n\n dispatch(\n updateBenefitEstimateValue(\n benefitFields.AnnualSavings,\n annualSavingsValue,\n ),\n );\n\n dispatch(\n updateBenefitEstimateValue(\n benefitFields.AggregatedSavings,\n aggregatedSavingsValue,\n ),\n );\n\n return noop();\n };\n}\n\nfunction eitherGetEligibleParcelOrThrow(data) {\n if (!parcelIsEligible(data)) {\n // throw an error to be caught inside a Promise\n throw new Error('No eligible parcel found');\n }\n\n return data;\n}\n\nexport function fetchParcelData(parcelId, fromQueryString = false) {\n return dispatch => {\n dispatch(startFetchParcelData());\n\n if (fromQueryString) {\n // Immediately fail search id parcel query parameter is not an integer\n if (Number.isNaN(parseInt(parcelId, 10))) {\n return dispatch(\n failFetchParcelData('Invalid parcel query parameter value'),\n );\n }\n }\n\n return csrfRequest\n .get(parcelAPIUrl(parcelId))\n .then(({ data }) => eitherGetEligibleParcelOrThrow(data))\n .then(data =>\n dispatch(completeFetchParcelData(data, fromQueryString)),\n )\n .then(() => dispatch(updateBenefitFields()))\n .catch(error => dispatch(failFetchParcelData(error)));\n };\n}\n\nfunction startSubmitContactForm(data) {\n return {\n type: START_SUBMIT_CONTACT_FORM,\n payload: data,\n };\n}\n\nfunction completeSubmitContactForm(payload) {\n return {\n type: COMPLETE_SUBMIT_CONTACT_FORM,\n payload,\n };\n}\n\nfunction failSubmitContactForm({ data = apiError }) {\n return (dispatch, getState) => {\n const {\n customers: {\n main: {\n formSubmission: { errors },\n },\n },\n } = getState();\n\n return dispatch({\n type: FAIL_SUBMIT_CONTACT_FORM,\n payload: Object.assign({}, errors, {\n email: data.email || [],\n phone: data.phone || [],\n parcels: data.parcels || [],\n apiError: data.apiError || [],\n }),\n });\n };\n}\n\nfunction formatPropertyManagerFormSubmission(\n {\n name,\n email,\n phone,\n note,\n contactPreference,\n parcels,\n selectedPreferences,\n acceptsContacts,\n },\n developers,\n) {\n return {\n name,\n email,\n phone,\n note,\n prefer_email: [\n preferredContactTypes.email,\n preferredContactTypes.both,\n ].includes(contactPreference),\n prefer_phone: [\n preferredContactTypes.telephone,\n preferredContactTypes.both,\n ].includes(contactPreference),\n selected_developers: developers,\n parcels: parcels.map(\n /* eslint-disable camelcase */\n ({\n Parcel: {\n ParcelID: id,\n Address: address,\n BldgType: building_type,\n },\n }) => ({ id, address, building_type }),\n /* eslint-enable camelcase */\n ),\n rain_garden: selectedPreferences.includes(RAIN_GARDEN),\n green_roof: selectedPreferences.includes(GREEN_ROOF),\n subsurface_storage: selectedPreferences.includes(SUBSURFACE_STORAGE),\n cistern: selectedPreferences.includes(CISTERN),\n permeable_pavement: selectedPreferences.includes(PERMEABLE_PAVEMENT),\n accepts_contacts: acceptsContacts,\n };\n}\n\nexport function submitContactForm(data) {\n return (dispatch, getState) => {\n const {\n customers: {\n main: {\n userInput: { developers },\n },\n },\n } = getState();\n\n dispatch(startSubmitContactForm(data));\n\n csrfRequest\n .post(\n SUBMIT_PROPERTY_MANAGER_FORM_URL,\n formatPropertyManagerFormSubmission(data, developers),\n )\n .then(({ data: { unsubscribe_token: unsubscribeToken } }) =>\n dispatch(completeSubmitContactForm(unsubscribeToken)),\n )\n .catch(({ response = {} }) =>\n dispatch(failSubmitContactForm(response)),\n );\n };\n}\n\nexport function removeParcel(parcelId) {\n return {\n type: REMOVE_PARCEL,\n payload: parcelId,\n };\n}\n\nexport function toggleGeocoder(section) {\n return dispatch => {\n if (includes(values(uiSections), section)) {\n return dispatch({\n type: TOGGLE_GEOCODER,\n payload: section,\n });\n }\n return noop();\n };\n}\n\nexport function updateSubmittingControl(section) {\n return {\n type: UPDATE_SUBMITTING_CONTROL,\n payload: section,\n };\n}\n\nexport function updateSubmittedQuery(query) {\n return {\n type: UPDATE_SUBMITTED_QUERY,\n payload: query,\n };\n}\n\nexport function updateBenefitSliderValue(field, value) {\n return dispatch => {\n if (includes(values(benefitFields), field)) {\n dispatch({\n type: UPDATE_BENEFIT_SLIDER_VALUE,\n payload: { field, value },\n });\n\n dispatch(updateBenefitFields());\n }\n\n return noop();\n };\n}\n\nexport function selectDevelopers(payload) {\n return {\n type: SELECT_DEVELOPERS,\n payload,\n };\n}\n\nexport function deselectDevelopers(payload) {\n return {\n type: DESELECT_DEVELOPERS,\n payload,\n };\n}\n\nexport function adjustDeveloperSelectionForRetrofitChange(retrofitPreferences) {\n return (dispatch, getState) => {\n if (retrofitPreferences.includes(NO_IDEA)) {\n return null;\n }\n\n const {\n customers: {\n main: {\n developers: { data: developerData },\n userInput: { developers: selectedDevelopers },\n },\n },\n } = getState();\n\n const newlyDeslectedDevelopers = selectedDevelopers.reduce(\n (accumulator, selectedDeveloperId) => {\n const { retrofits } = developerData.find(\n ({ id }) => id === selectedDeveloperId,\n );\n\n return !retrofits.filter(r => retrofitPreferences.includes(r))\n .length\n ? accumulator.concat(selectedDeveloperId)\n : accumulator;\n },\n [],\n );\n\n return dispatch(deselectDevelopers(newlyDeslectedDevelopers));\n };\n}\n\nexport function showTermsOfUseModal() {\n return {\n type: SHOW_TERMS_OF_USE_MODAL,\n };\n}\n\nexport function hideTermsOfUseModal() {\n return {\n type: HIDE_TERMS_OF_USE_MODAL,\n };\n}\n\nfunction startResendManagerEmail() {\n return {\n type: START_RESEND_MANAGER_EMAIL,\n };\n}\n\nfunction failResendManagerEmail(e) {\n window.console.warn(e);\n\n return {\n type: FAIL_RESEND_MANAGER_EMAIL,\n };\n}\n\nfunction completeResendManagerEmail(payload) {\n return {\n type: COMPLETE_RESEND_MANAGER_EMAIL,\n payload,\n };\n}\n\nfunction completeResendManagerEmailWithoutParcel(payload) {\n return {\n type: COMPLETE_RESEND_MANAGER_EMAIL_WITHOUT_PARCEL,\n payload,\n };\n}\n\nexport function avoidResendingManagerEmailWithoutParcel() {\n return {\n type: AVOID_RESENDING_MANAGER_EMAIL_WITHOUT_PARCEL,\n };\n}\n\nexport function resendManagerEmail(parcelId) {\n return dispatch => {\n dispatch(startResendManagerEmail());\n\n return csrfRequest\n .post(makeResendManagerEmailUrl(parcelId))\n .then(() => dispatch(completeResendManagerEmail(parcelId)))\n .catch(e => dispatch(failResendManagerEmail(e)));\n };\n}\n\nexport function resendManagerEmailWithoutParcel(email) {\n return dispatch => {\n dispatch(startResendManagerEmail());\n\n return csrfRequest\n .post(resendCustomerEmail, {\n email,\n })\n .then(() =>\n dispatch(completeResendManagerEmailWithoutParcel(email)),\n )\n .catch(e => dispatch(failResendManagerEmail(e)));\n };\n}\n\nexport function selectRetrofitsFromQueryString(retrofits) {\n const payload = Object.entries(retrofits)\n .filter(([, value]) => {\n if (Array.isArray(value)) {\n return head(value).toLowerCase() === 'true';\n }\n\n return value.toLowerCase() === 'true';\n })\n .map(([r]) => r)\n .filter(r => retrofitTypes.map(({ type }) => type).includes(r));\n\n return {\n type: SELECT_RETROFITS_FROM_QUERY_STRING,\n payload,\n };\n}\n\nexport function setShowAllDevelopers(value) {\n return {\n type: SET_SHOW_ALL_DEVELOPERS,\n payload: value,\n };\n}\n\nexport function setDeveloperQuery(value) {\n return {\n type: SET_DEVELOPER_QUERY,\n payload: value,\n };\n}\n","import { API_BASE_URL } from '../../constants';\n\nexport const onboardingFormUrl = `${API_BASE_URL}/signup/`;\nexport const updateProfileUrl = `${API_BASE_URL}/users/`;\nexport const otherRetrofitTextFieldId = 'profile-specialty-other-text';\n\nexport const signInError = {\n signInError: ['Unable to sign in with that email address and password.'],\n};\n\nexport const onboardingFormFields = {\n TOS: 'tos',\n HAS_READ_TOS: 'has_read_tos',\n EMAIL: 'email',\n PASSWORD: 'password',\n CONFIRM_PASSWORD: 'confirm_password',\n NAME: 'name',\n PHONE: 'phone',\n USE_COMPANY_CONTACT: 'useCompanyContact',\n COMPANY_NAME: 'companyName',\n COMPANY_EMAIL: 'companyEmail',\n COMPANY_PHONE: 'companyPhone',\n COMPANY_WEBSITE: 'companyWebsite',\n RAIN_GARDEN: 'rainGarden',\n SUBSURFACE_STORAGE: 'subsurfaceStorage',\n GREEN_ROOF: 'greenRoof',\n PERMEABLE_PAVEMENT: 'permeablePavement',\n CISTERN: 'cistern',\n OTHER_RETROFIT: 'otherRetrofit',\n OTHER_RETROFIT_TEXT: 'otherRetrofitText',\n EIN: 'ein',\n COMMERCIAL_ACTIVITY_LICENSE: 'commercialActivityLicense',\n SHOULD_EMAIL_PARCEL_UPDATES: 'shouldEmailParcelUpdatesPreference',\n CONTACT_PREFERENCE: 'contactPreference',\n HAS_WORKED_ON_GRANT: 'hasWorkedOnGrant',\n HAS_BEEN_SUBGRANTEE: 'hasBeenSubgrantee',\n IS_DESIGN_FIRM: 'isDesignFirm',\n IS_CONSTRUCTION_FIRM: 'isConstructionFirm',\n IS_MAINTENANCE_FIRM: 'isMaintenanceFirm',\n IS_MANAGEMENT_FIRM: 'isManagementFirm',\n HAS_SELECTED_AT_LEAST_ONE_FIRM_TYPE: 'hasSelectedAtLeastOneFirmType',\n};\n\nexport const signInBoxStatesEnum = {\n showSignUp: 'showSignUp',\n showSignIn: 'showSignIn',\n showForgotPassword: 'showForgotPassword',\n};\n","import axios, { CancelToken } from 'axios';\nimport makeAISSearchURL from './utils';\nimport { fetchParcels } from '../../actions';\nimport { VENDOR_BASE_URL } from '../../constants';\n\nexport const START_AIS_GEOCODER_SEARCH = 'START_AIS_GEOCODER_SEARCH';\nexport const FAIL_AIS_GEOCODER_SEARCH = 'FAIL_AIS_GEOCODER_SEARCH';\nexport const COMPLETE_AIS_GEOCODER_SEARCH = 'COMPLETE_AIS_GEOCODER_SEARCH';\nexport const CLEAR_AIS_GEOCODER_DATA = 'CLEAR_AIS_GEOCODER_DATA';\nexport const REFETCH_ON_EMPTY_QUERY = 'REFETCH_ON_EMPTY_QUERY';\nexport const CHANGE_AIS_GEOCODER_SEARCH_QUERY =\n 'CHANGE_AIS_GEOCODER_SEARCH_QUERY';\nexport const UPDATE_AIS_GEOCODER_FIT_BOUNDS = 'UPDATE_AIS_GEOCODER_FIT_BOUNDS';\nexport const COMPLETE_FETCH_PARCEL_DATA = 'COMPLETE_FETCH_PARCEL_DATA';\n\nlet cancelPriorAISGeocoderRequest = null;\n\nexport function maybeCancelPriorAISGeocoderRequest() {\n if (!cancelPriorAISGeocoderRequest) {\n return null;\n }\n\n cancelPriorAISGeocoderRequest('Canceling prior AIS geocoder request');\n cancelPriorAISGeocoderRequest = null;\n\n return null;\n}\n\nfunction startAISGeocoderSearch() {\n return {\n type: START_AIS_GEOCODER_SEARCH,\n };\n}\n\nfunction failAISGeocoderSearch() {\n return {\n type: FAIL_AIS_GEOCODER_SEARCH,\n };\n}\n\nfunction completeAISGeocoderSearch(payload, history) {\n if (history && history.location !== VENDOR_BASE_URL) {\n history.push(VENDOR_BASE_URL);\n }\n return {\n type: COMPLETE_AIS_GEOCODER_SEARCH,\n payload,\n };\n}\n\nexport function updateAISGeocoderFitBounds(payload) {\n return {\n type: UPDATE_AIS_GEOCODER_FIT_BOUNDS,\n payload,\n };\n}\n\nfunction formatCoordinatesFromAISGeocoderResult({\n search_type: searchType,\n features: [\n {\n geometry: {\n coordinates: [lng, lat],\n },\n properties: {\n li_parcel_id: liParcelID,\n pwd_parcel_id: pwdParcelID,\n },\n },\n ],\n}) {\n let parcels = [liParcelID, pwdParcelID].filter(p => !!p);\n if (!parcels.length) {\n parcels = null;\n }\n return {\n isNotIntersection: searchType !== 'intersection',\n coordinates: { lng, lat },\n parcels,\n };\n}\n\nexport function clearAISGeocoderData() {\n return {\n type: CLEAR_AIS_GEOCODER_DATA,\n };\n}\n\nexport function performAISGeocoderSearch(history) {\n return (dispatch, getState) => {\n maybeCancelPriorAISGeocoderRequest();\n dispatch(startAISGeocoderSearch());\n\n const {\n aisGeocoder: { query },\n } = getState();\n\n if (!query || !query.trim().length) {\n dispatch(clearAISGeocoderData());\n return dispatch(fetchParcels());\n }\n\n return axios\n .get(makeAISSearchURL(query), {\n cancelToken: new CancelToken(c => {\n cancelPriorAISGeocoderRequest = c;\n }),\n })\n .then(({ data }) => formatCoordinatesFromAISGeocoderResult(data))\n .then(data => dispatch(completeAISGeocoderSearch(data, history)))\n .catch(() => dispatch(failAISGeocoderSearch()));\n };\n}\n\nexport function refetchOnEmptyQuery() {\n return dispatch => {\n dispatch(performAISGeocoderSearch());\n return dispatch({\n type: REFETCH_ON_EMPTY_QUERY,\n });\n };\n}\n\nexport function changeAISGeocoderSearchQuery(payload) {\n return (dispatch, getState) => {\n const {\n aisGeocoder: { data },\n } = getState();\n if (data && !payload) {\n dispatch(clearAISGeocoderData());\n }\n return dispatch({\n type: CHANGE_AIS_GEOCODER_SEARCH_QUERY,\n payload,\n });\n };\n}\n","export const initialMapCenter = [39.961352, -75.154334];\nexport const initialMapZoom = 13;\n\nexport const BASE_URL = '/stormwater/connect';\nexport const API_BASE_URL = `${BASE_URL}/api`;\n\nexport const retrofitMapLoginUrl = `${API_BASE_URL}/vendor-login/`;\nexport const retrofitMapLogoutUrl = `${API_BASE_URL}/vendor-logout/`;\n\nexport const confirmEmailUrl = `${API_BASE_URL}/rest-auth/registration/verify-email/`;\nexport const resetDeveloperPasswordUrl = `${API_BASE_URL}/rest-auth/password/reset/`;\n\n// `/api/pwd` is the path to the Django proxy endpoint.\n// `pwd/parcels` is the PWD API endpoint for searching parcels.\nexport const parcelsAPIUrl = `${API_BASE_URL}/pwd/pwd/parcels/`;\n\nexport function parcelDataApiUrl(id) {\n return `${API_BASE_URL}/pwd/parcel/${id}/gsi-details`;\n}\n\nexport const defaultRequestedParcelsCount = 200;\n\nexport const savedParcelsUrl = `${API_BASE_URL}/parcels/saved/`;\nexport const interestedParcelsUrl = `${API_BASE_URL}/parcels/interested/`;\nexport const enrolledParcelsUrl = `${API_BASE_URL}/parcels/enrolled/`;\n\nexport function changeParcelSaveStatusUrl(id) {\n return `${API_BASE_URL}/parcels/${id}/save/`;\n}\n\nexport const parcelsAndImperviousLayersURL =\n 'https://stormwater.phila.gov/arcgis/rest/services/parcel_viewer/pv_data_WM/MapServer';\n\nexport const parcelsAndImperviousMinimumZoomLevel = 17;\n\nexport const combinedSewerOverflowLayerURL =\n 'https://stormwater.phila.gov/arcgis/rest/services/parcel_viewer/pv_cso_WM/MapServer/0';\n\nexport const combinedSewerOverflowMinimumZoomLevel = 6;\n\nexport const cityCartoBasemap =\n 'https://tiles.arcgis.com/tiles/fLeGjb7u4uXqeF9q/arcgis/rest/services/CityBasemap/MapServer';\n\nexport const cityCartoLabelsBasemap =\n 'https://tiles.arcgis.com/tiles/fLeGjb7u4uXqeF9q/arcgis/rest/services/CityBasemap_Labels/MapServer';\n\nexport const basemapsEnum = {\n cityCartoBasemap: 'cityCartoBasemap',\n aerial: 'aerial',\n};\n\nexport const searchMapCityLimitsExtent = [\n [-75.2803067548921945, 39.8674718597080968],\n [-74.9557485615157049, 40.137934841110301],\n];\n\nexport const initialSearchMapZoom = 13;\nexport const initialSearchMapCenter = {\n lat: 39.9524,\n lng: -75.1636,\n};\nexport const minimumSearchMapPolygonZoomLevel = 16;\nexport const circleMarkerRadius = 6;\nexport const parcelVectorColor = '#0078c8';\nexport const highlightedParcelVectorColor = '#f26c51';\nexport const whiteVectorColor = '#ffffff';\n\nexport const latLngSearchCircleMarkerVectorStyle = {\n color: '#f37720',\n radius: 10,\n};\n\nexport const successfulAISGeocoderSearchZoom = 17;\n\nexport const NONRES = 'nonres';\nexport const CONDOS = 'condos';\nexport const CAP = 'cap';\nexport const GSI = 'gsi';\n\nexport const developerStatusTypes = {\n pending: 0,\n denied: 1,\n active: 2,\n deactivated: 3,\n};\n\nexport const termsOfUseModalStyle = {\n overlay: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(62, 69, 77, 0.65)',\n zIndex: 11000,\n },\n};\n\nexport const refinementHintEmphasisThresholdMin = 3;\nexport const refinementHintEmphasisThresholdMax = 40;\n\nexport const errorMessages = {\n failLoadSingleParcelMessage: 'Unable to load that parcel',\n failLoadMultipleParcelsMessage: `Unable to load parcel data, due to a\n problem with our server or the network. Try again later.`,\n failLoadSavedParcelsMessage: `Unable to load saved parcels, due to a\n problem with our server or the network. Try again later.`,\n failLoadInterestedParcelsMessage: `Unable to load interested parcels, due to a problem\n with our server or the network. Try again later.`,\n failSaveParcelMessage: `Unable to save that parcel, due to a problem\n with our server or the network. Try again later.`,\n failUnsaveParcelMessage: `Unable to un-save that parcel, due to a problem\n with our server or the network. Try again later.`,\n failAISGeocoderSearch:\n 'Unable to find an address or intersection for that search.',\n failGenerateCSV: 'Unable to export a CSV',\n defaultErrorMessage: 'An unknown error occurred',\n};\n\nexport const VENDOR_BASE_URL = `${BASE_URL}/vendor`;\nexport const DASHBOARD_BASE_URL = `${BASE_URL}/dashboard`;\nexport const CUSTOMER_BASE_URL = `${BASE_URL}/customer`;\n\nexport const VENDOR_PROPERTY_URL = `${VENDOR_BASE_URL}/property`;\nexport const VENDOR_SETTINGS_URL = `${VENDOR_BASE_URL}/settings`;\n\nexport const ROUTES = {\n welcome: `${VENDOR_BASE_URL}/welcome`,\n staytuned: `${VENDOR_BASE_URL}/welcome/staytuned`,\n profile: `${VENDOR_BASE_URL}/welcome/profile`,\n enter: `${VENDOR_BASE_URL}/welcome#enter`,\n denied: `${VENDOR_BASE_URL}/welcome/denied`,\n deactivated: `${VENDOR_BASE_URL}/welcome/deactivated`,\n};\n","import { API_BASE_URL } from '../developer/constants';\n\nexport const geocoderAPIUrl = `${API_BASE_URL}/pwd/search`;\nexport const NO_RESULTS_MESSAGE =\n 'Couldn\\'t find an eligible parcel for that search';\nexport const NETWORK_ERROR_MESSAGE =\n 'There was a problem with the network or our server';\nexport const CANCEL_REQUEST_MESSAGE = 'Canceled prior search request';\n","import isEmail from 'validator/lib/isEmail';\n\nimport csrfRequest from '../../../common/csrfRequest';\n\nimport { validationFailed } from '../../utils';\n\nimport {\n onboardingFormUrl,\n onboardingFormFields,\n updateProfileUrl,\n} from './constants';\n\nimport { validate, formatFieldsToCamelCase } from './utils';\n\nimport { resetDeveloperPasswordUrl, ROUTES } from '../../constants';\nimport { preferredContactTypes } from '../../../common/constants';\n\nexport const SHOW_SIGN_IN = 'SHOW_SIGN_IN';\nexport const SHOW_SIGN_UP = 'SHOW_SIGN_UP';\nexport const START_SUBMITTING_ONBOARDING_FORM =\n 'START_SUBMITTING_ONBOARDING_FORM';\nexport const FAIL_SUBMITTING_ONBOARDING_FORM =\n 'FAIL_SUBMITTING_ONBOARDING_FORM';\nexport const COMPLETE_SUBMITTING_ONBOARDING_FORM =\n 'COMPLETE_SUBMITTING_ONBOARDING_FORM';\nexport const UPDATE_ONBOARDING_FORM_FIELD = 'UPDATE_ONBOARDING_FORM_FIELD';\nexport const SET_ONBOARDING_FORM_ERRORS = 'SET_ONBOARDING_FORM_ERRORS';\nexport const SET_ONBOARDING_SIGN_UP_FORM_ERRORS =\n 'SET_ONBOARDING_SIGN_UP_FORM_ERRORS';\nexport const TOGGLE_ONBOARDING_FORM_FIELD = 'TOGGLE_ONBOARDING_FORM_FIELD';\nexport const TOGGLE_SHOW_PASSWORD = 'TOGGLE_SHOW_PASSWORD';\nexport const TOGGLE_SHOW_CONFIRM_PASSWORD = 'TOGGLE_SHOW_CONFIRM_PASSWORD';\nexport const SHOW_TERMS_OF_USE_MODAL = 'SHOW_TERMS_OF_USE_MODAL';\nexport const HIDE_TERMS_OF_USE_MODAL = 'HIDE_TERMS_OF_USE_MODAL';\nexport const UPDATE_DEVELOPER_AUTH_EMAIL = 'UPDATE_DEVELOPER_AUTH_EMAIL';\nexport const UPDATE_DEVELOPER_AUTH_PASSWORD = 'UPDATE_DEVELOPER_AUTH_PASSWORD';\nexport const START_SEND_RESET_PASSWORD_EMAIL =\n 'START_SEND_RESET_PASSWORD_EMAIL';\nexport const FAIL_SEND_RESET_PASSWORD_EMAIL = 'FAIL_SEND_RESET_PASSWORD_EMAIL';\nexport const COMPLETE_SEND_RESET_PASSWORD_EMAIL =\n 'COMPLETE_SEND_RESET_PASSWORD_EMAIL';\nexport const SHOW_FORGOT_PASSWORD = 'SHOW_FORGOT_PASSWORD';\nexport const UPDATE_FORGOT_PASSWORD_EMAIL_ADDRESS =\n 'UPDATE_FORGOT_PASSWORD_EMAIL_ADDRESS';\nexport const DISPLAY_FORGOT_PASSWORD_EMAIL_VALIDATION_ERROR =\n 'DISPLAY_FORGOT_PASSWORD_EMAIL_VALIDATION_ERROR';\nexport const SET_TOS_ERROR = 'SET_TOS_ERROR';\nexport const COMPLETE_VENDOR_SIGN_IN = 'COMPLETE_VENDOR_SIGN_IN';\nexport const CREATE_UPDATE_FIELDS_SNAPSHOT = 'CREATE_UPDATE_FIELDS_SNAPSHOT';\nexport const RESET_FIELDS_TO_FIELDS_SNAPSHOT =\n 'RESET_FIELDS_TO_FIELDS_SNAPSHOT';\nexport const CLEAR_FIELDS_SNAPSHOT = 'CLEAR_FIELDS_SNAPSHOT';\nexport const RESET_UPDATE_PROFILE = 'RESET_UPDATE_PROFILE';\n\nexport function toggleSignIn() {\n return {\n type: SHOW_SIGN_IN,\n };\n}\n\nexport function toggleSignUp() {\n return {\n type: SHOW_SIGN_UP,\n };\n}\n\nfunction startSubmittingOnboardingForm() {\n return {\n type: START_SUBMITTING_ONBOARDING_FORM,\n };\n}\n\nfunction failSubmittingOnboardingForm({\n company_email,\n company_website,\n email,\n}) {\n return (dispatch, getState) => {\n const {\n onboardingPage: {\n validation: { companyEmail, companyWebsite, email: userEmail },\n },\n } = getState();\n\n const concatDefined = (state, update) =>\n state.concat(update).filter(id => id);\n\n return dispatch({\n type: FAIL_SUBMITTING_ONBOARDING_FORM,\n payload: {\n companyEmail: concatDefined(companyEmail, company_email),\n companyWebsite: concatDefined(companyWebsite, company_website),\n email: concatDefined(userEmail, email),\n },\n });\n };\n}\n\nfunction completeSubmittingOnboardingForm(payload) {\n return {\n type: COMPLETE_SUBMITTING_ONBOARDING_FORM,\n payload,\n };\n}\n\nfunction setOnboardingFormErrors(payload) {\n return {\n type: SET_ONBOARDING_FORM_ERRORS,\n payload,\n };\n}\n\nexport function submitOnboardingForm(history) {\n return (dispatch, getState) => {\n const {\n auth: { id: vendorId },\n onboardingPage: { fields },\n } = getState();\n const errors = validate(\n fields,\n Object.values(onboardingFormFields),\n vendorId,\n );\n\n dispatch(setOnboardingFormErrors(errors));\n\n if (validationFailed(errors)) {\n window.scrollTo(0, 0);\n } else {\n dispatch(startSubmittingOnboardingForm());\n\n const requestBody = {\n email: fields[onboardingFormFields.EMAIL],\n name: fields[onboardingFormFields.NAME],\n phone: fields[onboardingFormFields.PHONE],\n company_name: fields[onboardingFormFields.COMPANY_NAME],\n company_email: fields[onboardingFormFields.COMPANY_EMAIL],\n company_phone: fields[onboardingFormFields.COMPANY_PHONE],\n company_website: fields[onboardingFormFields.COMPANY_WEBSITE],\n prefer_email:\n fields[onboardingFormFields.CONTACT_PREFERENCE] ===\n preferredContactTypes.email,\n prefer_phone:\n fields[onboardingFormFields.CONTACT_PREFERENCE] ===\n preferredContactTypes.telephone,\n rain_garden: fields[onboardingFormFields.RAIN_GARDEN],\n permeable_pavement:\n fields[onboardingFormFields.PERMEABLE_PAVEMENT],\n subsurface_storage:\n fields[onboardingFormFields.SUBSURFACE_STORAGE],\n green_roof: fields[onboardingFormFields.GREEN_ROOF],\n cistern: fields[onboardingFormFields.CISTERN],\n other_retrofit:\n fields[onboardingFormFields.OTHER_RETROFIT_TEXT],\n ein: fields[onboardingFormFields.EIN],\n commercial_activity_license:\n fields[onboardingFormFields.COMMERCIAL_ACTIVITY_LICENSE],\n should_email_parcel_updates_preference:\n fields[onboardingFormFields.SHOULD_EMAIL_PARCEL_UPDATES],\n has_worked_on_grant:\n fields[onboardingFormFields.HAS_WORKED_ON_GRANT],\n has_been_subgrantee:\n fields[onboardingFormFields.HAS_BEEN_SUBGRANTEE],\n is_design_firm: fields[onboardingFormFields.IS_DESIGN_FIRM],\n is_construction_firm:\n fields[onboardingFormFields.IS_CONSTRUCTION_FIRM],\n is_maintenance_firm:\n fields[onboardingFormFields.IS_MAINTENANCE_FIRM],\n is_management_firm:\n fields[onboardingFormFields.IS_MANAGEMENT_FIRM],\n };\n\n if (!vendorId) {\n requestBody.password = fields[onboardingFormFields.PASSWORD];\n }\n\n const formRequest = vendorId\n ? csrfRequest.patch(\n `${updateProfileUrl}${vendorId}/`,\n requestBody,\n )\n : csrfRequest.post(onboardingFormUrl, requestBody);\n\n formRequest\n .then(() => {\n dispatch(completeSubmittingOnboardingForm(fields));\n if (!vendorId) {\n history.push(ROUTES.staytuned);\n }\n })\n .catch(({ response: { data } }) => {\n dispatch(failSubmittingOnboardingForm(data));\n });\n }\n };\n}\n\nfunction setOnboardingSignUpFormErrors(payload) {\n return {\n type: SET_ONBOARDING_SIGN_UP_FORM_ERRORS,\n payload,\n };\n}\n\nexport function signUp(history) {\n return (dispatch, getState) => {\n const errors = validate(getState().onboardingPage.fields, [\n onboardingFormFields.EMAIL,\n onboardingFormFields.PASSWORD,\n onboardingFormFields.CONFIRM_PASSWORD,\n onboardingFormFields.TOS,\n ]);\n\n dispatch(setOnboardingSignUpFormErrors(errors));\n\n if (!validationFailed(errors)) {\n history.push(ROUTES.profile);\n }\n };\n}\n\nexport function updateOnboardingField({ field, value }) {\n if (!Object.values(onboardingFormFields).some(f => f === field)) {\n throw new Error(`Unsupported field: ${field}`);\n }\n\n return {\n type: UPDATE_ONBOARDING_FORM_FIELD,\n payload: {\n field,\n value,\n },\n };\n}\n\nexport function toggleOnboardingField(field) {\n if (!Object.values(onboardingFormFields).some(f => f === field)) {\n throw new Error(`Unsupported field: ${field}`);\n }\n return {\n type: TOGGLE_ONBOARDING_FORM_FIELD,\n payload: {\n field,\n },\n };\n}\n\nexport function toggleShowPassword() {\n return {\n type: TOGGLE_SHOW_PASSWORD,\n };\n}\n\nexport function toggleShowConfirmPassword() {\n return {\n type: TOGGLE_SHOW_CONFIRM_PASSWORD,\n };\n}\n\nexport function showTermsOfUseModal() {\n return {\n type: SHOW_TERMS_OF_USE_MODAL,\n };\n}\n\nexport function hideTermsOfUseModal() {\n return {\n type: HIDE_TERMS_OF_USE_MODAL,\n };\n}\n\nfunction startSendResetPasswordEmail() {\n return {\n type: START_SEND_RESET_PASSWORD_EMAIL,\n };\n}\n\nfunction failSendResetPasswordEmail(error) {\n window.console.warn(error);\n\n return {\n type: FAIL_SEND_RESET_PASSWORD_EMAIL,\n };\n}\n\nfunction completeSendResetPasswordEmail() {\n return {\n type: COMPLETE_SEND_RESET_PASSWORD_EMAIL,\n };\n}\n\nfunction displayForgotPasswordEmailValidationError() {\n return {\n type: DISPLAY_FORGOT_PASSWORD_EMAIL_VALIDATION_ERROR,\n };\n}\n\nexport function sendResetPasswordEmail() {\n return (dispatch, getState) => {\n dispatch(startSendResetPasswordEmail());\n\n const {\n onboardingPage: {\n page: {\n resetPassword: { email },\n },\n },\n } = getState();\n\n return !email.length || !isEmail(email)\n ? dispatch(displayForgotPasswordEmailValidationError())\n : csrfRequest\n .post(resetDeveloperPasswordUrl, { email })\n .then(() => dispatch(completeSendResetPasswordEmail()))\n .catch(e => dispatch(failSendResetPasswordEmail(e)));\n };\n}\n\nexport function showForgotPassword() {\n return {\n type: SHOW_FORGOT_PASSWORD,\n };\n}\n\nexport function updateForgotPasswordEmailAddress(payload) {\n return {\n type: UPDATE_FORGOT_PASSWORD_EMAIL_ADDRESS,\n payload,\n };\n}\n\nexport function setTOSError() {\n return { type: SET_TOS_ERROR };\n}\n\nexport function completeVendorSignIn(payload) {\n return dispatch => {\n const formattedPayload = formatFieldsToCamelCase(payload);\n // otherRetrofit field is saved as a string in db,\n // so turn back to boolean for checkbox ui and reallocate text\n if (formattedPayload[onboardingFormFields.OTHER_RETROFIT]) {\n formattedPayload[onboardingFormFields.OTHER_RETROFIT_TEXT] =\n formattedPayload[onboardingFormFields.OTHER_RETROFIT];\n formattedPayload[onboardingFormFields.OTHER_RETROFIT] =\n !!formattedPayload[onboardingFormFields.OTHER_RETROFIT];\n } else {\n formattedPayload[onboardingFormFields.OTHER_RETROFIT] = false;\n }\n dispatch({ type: COMPLETE_VENDOR_SIGN_IN, payload: formattedPayload });\n };\n}\n\nexport function createUpdateFieldsSnapshot() {\n return (dispatch, getState) => {\n const {\n onboardingPage: {\n fields,\n updateProfile: { fieldsSnapshot },\n },\n } = getState();\n\n if (!fieldsSnapshot) {\n dispatch({ type: CREATE_UPDATE_FIELDS_SNAPSHOT, payload: fields });\n }\n };\n}\n\nexport function resetFieldsToFieldsSnapshot() {\n return (dispatch, getState) => {\n const {\n onboardingPage: {\n updateProfile: { fieldsSnapshot },\n },\n } = getState();\n\n if (fieldsSnapshot) {\n dispatch({\n type: RESET_FIELDS_TO_FIELDS_SNAPSHOT,\n payload: fieldsSnapshot,\n });\n }\n };\n}\n\nexport function resetUpdateProfile() {\n return {\n type: RESET_UPDATE_PROFILE,\n };\n}\n","import csrfRequest from '../../../common/csrfRequest';\n\nimport { apiError, resetPasswordUrl, changePasswordUrl } from './constants';\n\nexport const SET_UID = 'SET_UID';\nexport const SET_TOKEN = 'SET_TOKEN';\nexport const SET_NEW_PASSWORD_ONE = 'SET_NEW_PASSWORD_ONE';\nexport const SET_NEW_PASSWORD_TWO = 'SET_NEW_PASSWORD_TWO';\nexport const START_RESET_PASSWORD = 'START_RESET_PASSWORD';\nexport const FAIL_RESET_PASSWORD = 'FAIL_RESET_PASSWORD';\nexport const COMPLETE_RESET_PASSWORD = 'COMPLETE_RESET_PASSWORD';\nexport const CLEAR_RESET_PASSWORD = 'CLEAR_RESET_PASSWORD';\n\nexport function setUID(payload) {\n return {\n type: SET_UID,\n payload,\n };\n}\n\nexport function setToken(payload) {\n return {\n type: SET_TOKEN,\n payload,\n };\n}\n\nexport function setNewPasswordOne(payload) {\n return {\n type: SET_NEW_PASSWORD_ONE,\n payload,\n };\n}\n\nexport function setNewPasswordTwo(payload) {\n return {\n type: SET_NEW_PASSWORD_TWO,\n payload,\n };\n}\n\nfunction startResetPassword() {\n return {\n type: START_RESET_PASSWORD,\n };\n}\n\nfunction failResetPassword(payload = apiError) {\n return {\n type: FAIL_RESET_PASSWORD,\n payload,\n };\n}\n\nfunction completeResetPassword(payload) {\n return {\n type: COMPLETE_RESET_PASSWORD,\n payload,\n };\n}\n\nexport function resetPassword() {\n return (dispatch, getState) => {\n dispatch(startResetPassword);\n\n const {\n auth: { password, signedIn, id: vendorId },\n resetPasswordPage: { newPasswordOne, newPasswordTwo, uid, token },\n } = getState();\n\n const resetFromSettingsPage = signedIn && vendorId && password;\n\n const changePasswordRequest = resetFromSettingsPage\n ? csrfRequest.post(changePasswordUrl, {\n old_password: password,\n new_password1: newPasswordOne,\n new_password2: newPasswordTwo,\n })\n : csrfRequest.post(resetPasswordUrl, {\n uid,\n token,\n new_password1: newPasswordOne,\n new_password2: newPasswordTwo,\n });\n\n return changePasswordRequest\n .then(() => dispatch(completeResetPassword(newPasswordOne)))\n .catch(({ response: { data: err } }) =>\n dispatch(failResetPassword(err)),\n );\n };\n}\n\nexport function clearResetPassword() {\n return {\n type: CLEAR_RESET_PASSWORD,\n };\n}\n","import csrfRequest from '../../../common/csrfRequest';\n\nimport { parcelDataApiUrl } from '../../constants';\n\nimport { makeParcelLatLngSearchAPIUrl } from './constants';\n\nexport const RESET_LAT_LNG_PARCEL_SEARCH = 'RESET_LAT_LNG_PARCEL_SEARCH';\nexport const START_LAT_LNG_PARCEL_SEARCH = 'START_LAT_LNG_PARCEL_SEARCH';\nexport const FAIL_LAT_LNG_PARCEL_SEARCH = 'FAIL_LAT_LNG_PARCEL_SEARCH';\nexport const COMPLETE_LAT_LNG_PARCEL_SEARCH = 'COMPLETE_LAT_LNG_PARCEL_SEARCH';\n\nfunction startLatLngParcelSearch(payload) {\n return {\n type: START_LAT_LNG_PARCEL_SEARCH,\n payload,\n };\n}\n\nfunction failLatLngParcelSearch(e) {\n window.console.warn(e);\n\n return {\n type: FAIL_LAT_LNG_PARCEL_SEARCH,\n };\n}\n\nfunction completeLatLngParcelSearch(payload = null) {\n return {\n type: COMPLETE_LAT_LNG_PARCEL_SEARCH,\n payload,\n };\n}\n\nfunction maybeGetGSIDetails([parcel]) {\n return dispatch => {\n if (!parcel) {\n return dispatch(completeLatLngParcelSearch());\n }\n\n return csrfRequest\n .get(parcelDataApiUrl(parcel.Parcel.ParcelID))\n .then(({ data }) => dispatch(completeLatLngParcelSearch(data)))\n .catch(e => dispatch(failLatLngParcelSearch(e)));\n };\n}\n\nexport function makeLatLngParcelSearch(latLng) {\n return dispatch => {\n dispatch(startLatLngParcelSearch(latLng));\n\n return csrfRequest\n .get(makeParcelLatLngSearchAPIUrl(latLng))\n .then(({ data }) => dispatch(maybeGetGSIDetails(data)))\n .catch(e => dispatch(failLatLngParcelSearch(e)));\n };\n}\n\nexport function resetLatLngParcelSearch() {\n return {\n type: RESET_LAT_LNG_PARCEL_SEARCH,\n };\n}\n","import { arrayOf, number, shape, string } from 'prop-types';\n\nimport { retrofits } from '../../constants';\n\nimport { API_BASE_URL } from '../../../developer/constants';\n\nexport function makePreferencesUrl(uuid) {\n return `${API_BASE_URL}/customers/preferences/?token=${uuid}`;\n}\n\nexport const unsubscribeParcelPropType = arrayOf(\n shape({\n parcel_id: number,\n address: string,\n property_manager: number,\n }),\n);\n\nexport const allRetrofitsUnselected = Object.entries(\n retrofits.map(({ type }) => type),\n).reduce(\n (acc, [, key]) =>\n Object.assign({}, acc, {\n [key]: false,\n }),\n {},\n);\n\nexport const successToastMessages = {\n remove: 'Successfully removed the property',\n edit: 'Successfully edited the property',\n};\n","import { number, shape, string } from 'prop-types';\n\nexport const parcelViewerUrl = 'https://stormwater.phila.gov/parcelviewer/';\n\nexport const creditsExplorerUrl = 'https://stormwater.phila.gov/explore/';\n\nexport const retrofitMapUrl = 'https://water.phila.gov/stormwater/connect';\n\nexport const vendorMapUrl = 'https://water.phila.gov/stormwater/connect/vendor';\n\nexport const garpMarketingUrl =\n 'https://water.phila.gov/stormwater/connect/customer';\n\nexport const phlAerialBasemap = 'https://tiles.arcgis.com/tiles/fLeGjb7u4uXqeF9q/arcgis/rest/services/CityImagery_2023/MapServer';\nexport const phlBasemapAttribution = '© City of Philadelphia';\nexport const maxAerialBasemapZoom = 22;\n\nexport const parcelPropType = shape({\n Parcel: shape({\n ParcelID: number,\n BRTAcct: string,\n Address: string,\n TenCode: string,\n Owner1: string,\n Owner2: string,\n GrossArea: number,\n ImpervArea: number,\n GrossCredit: number,\n ImpervCredit: number,\n FinalGross: number,\n FinalImperv: number,\n NPDESCredit: number,\n MeterCharge: number,\n ParcelCharge: number,\n WeightedCharge: number,\n BldgType: string,\n BldgCode: string,\n BldgDesc: string,\n BrtWebsite: string,\n Shape: string,\n SimpleShape: string,\n ParcelBuildingStatus: number,\n }),\n X: number,\n Y: number,\n});\n\nexport const preferredContactTypes = {\n email: 'email',\n telephone: 'telephone',\n both: 'both',\n};\n","module.exports = __webpack_public_path__ + \"stormwater/connect/font/pwdgrant.eot\";"],"sourceRoot":""}