{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./js/src/cap/actions.js","webpack:///./js/src/explore/actions.js","webpack:///./js/src/common/settings.js","webpack:///./js/src/common/routes.js","webpack:///./js/src/common/actions.js","webpack:///./js/src/walkthrough/actions.js","webpack:///./js/src/common/constants.js","webpack:///./js/src/appheader/actions.js","webpack:///./sass/main.scss?896a","webpack:///./index.html","webpack:///./js/src/store.js","webpack:///./js/src/common/reducers.js","webpack:///./js/src/common/geocoder/reducers.js","webpack:///./js/src/walkthrough/reducers.js","webpack:///./js/src/cap/reducers.js","webpack:///./js/src/explore/reducers.js","webpack:///./js/src/details/helpers.js","webpack:///./js/src/details/reducers.js","webpack:///./js/src/appheader/reducers.js","webpack:///./js/src/reducer.js","webpack:///./js/src/main.js","webpack:///./js/src/details/actions.js","webpack:///./js/src/common/geocoder/actions.js","webpack:///./js/src/common/utils.js"],"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","5","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","__webpack_exports__","CLEAR_CAP_POST_RESPONSE","CAP_POST_SUCCESS","CAP_POST_FAILURE","clearCAPPostResponse","submitCAPApplication","axios__WEBPACK_IMPORTED_MODULE_0__","axios__WEBPACK_IMPORTED_MODULE_0___default","common_settings__WEBPACK_IMPORTED_MODULE_1__","common_constants__WEBPACK_IMPORTED_MODULE_2__","instance","parcelId","dispatch","axios","post","getCAPEligibilityURL","then","capApplicationSuccess","CAP_APPLICATION_PAGE","catch","response","CAP_APP_ERROR_MSG","SET_ZOOM","SET_CENTER","CLEAR_MAP","clearMap","setZoom","setCenter","zoom","center","pvDataMapServerURL","pvDataMapServerJSONURL","pvStreetsMapServerURL","internalTrackerUrl","pvOrthoMapURL","rootUrl","useInternalFeatures","maxZoomLevel","minZoomLevel","maxBounds","parcelOutlineColor","getSearchUrl","getXYSearchUrl","getDetailsUrl","getParcelUrl","getDetailsClientUrl","getMapClientUrl","getMapLocationClientUrl","getFactsheetUrl","getCurrentChargesUrl","lodash_includes__WEBPACK_IMPORTED_MODULE_0__","lodash_includes__WEBPACK_IMPORTED_MODULE_0___default","baseUrl","process","concat","includes","query","encodeURIComponent","lat","lng","latLng","homeRoute","homeRouteWithoutSlash","mapRoute","mapLatLngRoute","mapParcelIDRoute","parcelIDRoute","createParcelDetailsRouteFromParcelID","createMapRouteFromLatLng","helpRoute","helpBillingRoute","helpBillingPropertyTypeRoute","helpBillingResRoute","helpBillingNonResRoute","helpBillingCondoRoute","createBillingRouteFromPropertyType","helpAppealsRoute","helpAppealsFileRoute","helpCreditsRoute","capRoute","capParcelIdAccountIdRoute","createCapParcelIdAccountIdRouteFromIds","noMatchRoute","lodash_trimEnd__WEBPACK_IMPORTED_MODULE_0__","lodash_trimEnd__WEBPACK_IMPORTED_MODULE_0___default","createRootRelativeRoute","route","trimEnd","id","propertyType","accountId","ADD_MAP_LAYER","REMOVE_MAP_LAYER","SET_CAP_ACCOUNT_INDEX","CLEAR_CAP_AND_DETAILS","START_SET_MAPSERVER_INDEXES","COMPLETE_SET_MAPSERVER_INDEXES","FAIL_SET_MAPSERVER_INDEXES","COMPLETE_FETCH_CURRENT_RATES","fetchCurrentRates","startIdSearch","navigateToDetails","navigateToParcelOrLocation","navigateToDetailsOrLocation","runXYSearch","runXYParcelSearch","runParcelDetailsIdSearch","runCAPSearch","runDetailsCAPSearch","runParcelIdSearch","findCAPEligibility","setCAPIndex","clearCAPAndDetails","removeSelectedMapLayer","addSelectedMapLayer","retrieveMapServerIndexes","lodash_head__WEBPACK_IMPORTED_MODULE_1__","lodash_head__WEBPACK_IMPORTED_MODULE_1___default","lodash_findIndex__WEBPACK_IMPORTED_MODULE_2__","lodash_findIndex__WEBPACK_IMPORTED_MODULE_2___default","react_router_redux__WEBPACK_IMPORTED_MODULE_3__","common_constants__WEBPACK_IMPORTED_MODULE_4__","common_geocoder_actions__WEBPACK_IMPORTED_MODULE_5__","_settings__WEBPACK_IMPORTED_MODULE_6__","_utils__WEBPACK_IMPORTED_MODULE_7__","START_FETCH_CURRENT_RATES","FAIL_FETCH_CURRENT_RATES","failFetchCurrentRates","_ref","IsCurrent","rates","url","START_SEARCH","searchType","ID_SEARCH","startCAPSearch","CAP_SEARCH","isSearchActive","getState","search","navigateToUrl","navigateToLocation","location","Y","X","parcel","ParcelID","navigateToMap","Parcel","completeAction","isActive","XY_SEARCH","startXYSearch","_ref2","failSearch","NO_PARCEL_CLICK_MSG","completeSearch","SERVER_FAILURE_MSG","EXPLORE_PAGE","searchAction","failureMessage","NO_PARCEL_ID_MSG","NO_CAP_ELIGIBILITY_MSG","_ref3","DETAILS_PAGE","CAP_PAGE","CAP_DETAIL_SEARCH","details","accountNumber","accounts","capAcctIndex","findCAPAccountIndex","capAccountIndex","layerName","layer","_ref4","layers","_parseMapServerLayers","parcelsOverlayIndex","findIndex","toLowerCase","indexOf","imperviousOverlayIndex","completeSetMapServerIndexes","CLEAR_WALKTHROUGH_PARCEL_TYPE","clearWalkthroughParcelType","PARCELS_OVERLAY","IMPERVIOUS_OVERLAY","STREETS_OVERLAY","HOME_BODY","WALKTHROUGH_LIST","CREATE_NO_PARCEL_ID_MSG","CREATE_NO_ACCOUNT_ID_MSG","CREATE_INELIGIBLE_ACCOUNT_ID_MSG","APPEALS_FORM","APPEALS_PROCESS","RES","NONRES","CONDO","GARDEN","EXEMPT","CEMETERY","RES_DISPLAY","NONRES_DISPLAY","CONDO_DISPLAY","GARDEN_DISPLAY","ADDRESS_UNAVAILABLE","TOP_LEFT","BOTTOM_LEFT","BOTTOM_RIGHT","LEGAL_DISCLAIMER_TEXT","updateUnityBarSearchQuery","clearUnityBarSearchQuery","startGeocoderSearch","failGeocoderSearch","completeGeocoderSearch","clearGeocoderSearch","resetGeocoder","performUnityBarGeocoderSearch","redux_act__WEBPACK_IMPORTED_MODULE_0__","axios__WEBPACK_IMPORTED_MODULE_1__","axios__WEBPACK_IMPORTED_MODULE_1___default","common_settings__WEBPACK_IMPORTED_MODULE_2__","common_utils__WEBPACK_IMPORTED_MODULE_3__","createAction","appheader","unitybar","preprocessResults","content","options","hmr","transform","insertInto","locals","_","Function","keys","templateSettings","imports","obj","__t","__p","__j","Array","join","print","arguments","toString","values","middlewares","thunk","routerMiddleware","browserHistory","applyMiddleware","createStore","initMapOverlays","parcelsOverlay","imperviousOverlay","exemptOverlay","streetsOverlay","searchingForOverlayIndexes","initRatesState","current","initSearchState","isFetching","errorMessage","locations","initialState","initCAPApplicationPageStatus","responseStatus","success","formData","initExplorePage","markerPosition","showMarker","transformRatePeriodsIntoRateRanges","accountCharges","reduce","acc","next","first","second","previousCharge","last","RateSchedule","ResidenceCharge","GrossUnitCharge","ImperviousUnitCharge","ParcelWeightFactor","ResidenceBillingCharge","NonResidenceBillingCharge","adjustedPreviousCharge","assign","EndDate","initial","transformRateScheduleIntoRateRanges","flow","map","_ref5","getCurrentRateRangeEndDate","ParcelTotals","ranges","find","replaceAPIResponseRatePeriodsWithRanges","ChargeSummary","ParcelAccounts","account","YearlyAccountCharges","RateSchedules","initDetailsPageState","freeze","capParcelDetails","capEligibility","previewParcel","selectedRatePeriod","fetching","createReducer","_defineProperty","_createReducer","state","payload","update","$set","combineReducers","explorePage","action","GEOCODER_SEARCH","COMPLETE_SEARCH","detailsPage","CLEAR_DETAILS_STATE_EXCEPT_CAP","CLEAR_CAP_DETAILS","SET_PREVIEW_PARCEL","CLEAR_PREVIEW_PARCEL","SET_RATE_PERIOD","walkthroughListPage","FAIL_SEARCH","SET_SEARCH_ERROR","CLEAR_SEARCH","SET_GEOCODER_LOCATIONS","capApplicationPage","mapLayers","toggle","ExploreContainer","lazy","DetailsContainer","HomeContainer","WalkthroughContainer","HelpContainer","AppealsContainer","CreditsContainer","NoRouteMatchContainer","CapContainer","CapApplicationContainer","store","createStoreWithMiddleware","mainReducer","__REDUX_DEVTOOLS_EXTENSION__","makeLoadableComponent","LazilyLoadedComponent","props","react_default","a","react","fallback","LoadableHomeContainer","LoadableExploreContainer","LoadableDetailsContainer","LoadableHelpContainer","LoadableWalkthroughContainer","LoadableAppealsContainer","LoadableCreditsContainer","LoadableCapContainer","LoadableNoRouteMatchContainer","LoadableCapApplicationContainer","render","es","react_router_es","history","applyRouterMiddleware","useScroll","path","component","getElementById","clearPreviewParcel","runXYDetailsSearch","runDetailsIdSearch","setRatePeriod","clearDetailsExceptCAP","clearCAPDetails","common_settings__WEBPACK_IMPORTED_MODULE_0__","common_actions__WEBPACK_IMPORTED_MODULE_1__","setPreviewParcel","setSearchError","clearSearch","runGeocoderSearch","NO_PARCELS_MSG","input","selectLocationAction","results","locationDisplayName","wktToGeoJSON","formatInt","formatCurrency","formatDateString","formatMobileDateString","parseWaterAccountNumber","discardResultsIfNoParcel","getSortedAccountCharges","getCurrentRatePeriod","formatAccountAddress","lodash_findIndex__WEBPACK_IMPORTED_MODULE_0__","lodash_findIndex__WEBPACK_IMPORTED_MODULE_0___default","lodash_find__WEBPACK_IMPORTED_MODULE_1__","lodash_find__WEBPACK_IMPORTED_MODULE_1___default","wellknown__WEBPACK_IMPORTED_MODULE_2__","wellknown__WEBPACK_IMPORTED_MODULE_2___default","moment__WEBPACK_IMPORTED_MODULE_3__","moment__WEBPACK_IMPORTED_MODULE_3___default","Address","Owner1","wkt","parseWkt","x","toLocaleString","style","currency","ds","moment","format","capAccounts","substring","replace","accountIndex","chargeSummary","yearlyAccountCharges","sort","b","Date","parse","charges","charge","streetDirection","StreetDir","streetName","StreetName","houseNumber","HouseNum"],"mappings":"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","file":"pwd.parcelviewer.app.bundle.0cc62d01ee8bb1ca61a3.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\t5: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"pwd.parcelviewer.\" + ({}[chunkId]||chunkId) + \".bundle.\" + \"0cc62d01ee8bb1ca61a3\" + \".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 = \"/parcelviewer/\";\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([256,6]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import axios from 'axios';\n\nimport { getCAPEligibilityURL } from 'common/settings';\nimport { CAP_APPLICATION_PAGE, CAP_APP_ERROR_MSG } from 'common/constants';\n\nexport const CLEAR_CAP_POST_RESPONSE = 'CLEAR_CAP_POST_RESPONSE';\nexport const CAP_POST_SUCCESS = 'CAP_POST_SUCCESS';\nexport const CAP_POST_FAILURE = 'CAP_POST_FAILURE';\n\nexport function capApplicationSuccess(instance, data) {\n return {\n type: CAP_POST_SUCCESS,\n instance,\n data,\n };\n}\n\nexport function capApplicationFailure(response, instance) {\n return {\n type: CAP_POST_FAILURE,\n response,\n instance,\n };\n}\n\nexport function clearCAPPostResponse(instance) {\n return {\n type: CLEAR_CAP_POST_RESPONSE,\n instance,\n };\n}\n\nexport function submitCAPApplication(parcelId, data) {\n return dispatch =>\n axios\n .post(getCAPEligibilityURL(parcelId), data)\n .then(() =>\n dispatch(capApplicationSuccess(CAP_APPLICATION_PAGE, data)),\n )\n .catch(() =>\n dispatch(\n capApplicationFailure(\n CAP_APP_ERROR_MSG,\n CAP_APPLICATION_PAGE,\n ),\n ),\n );\n}\n","export const SET_ZOOM = 'SET_ZOOM';\nexport const SET_CENTER = 'SET_CENTER';\nexport const CLEAR_MAP = 'CLEAR_MAP';\n\nexport function clearMap() {\n return {\n type: CLEAR_MAP,\n };\n}\n\nexport function setZoom(zoom) {\n return {\n type: SET_ZOOM,\n zoom,\n };\n}\n\nexport function setCenter(center) {\n return {\n type: SET_CENTER,\n center,\n };\n}\n","import includes from 'lodash/includes';\n\nconst internalEnvs = ['pwdTest', 'pwdProd', 'pwdProdNew', 'azavea'];\nconst baseUrl = process.env.API_URL;\nexport const pvDataMapServerURL = process.env.MAP_DATA_URL;\nexport const pvDataMapServerJSONURL = `${pvDataMapServerURL}?f=json`;\nexport const pvStreetsMapServerURL = process.env.MAP_STREETS_URL;\nexport const internalTrackerUrl = process.env.CREDIT_APPEALS_URL;\nexport const pvOrthoMapURL = process.env.ORTHO_URL;\nexport const rootUrl = process.env.ROOT_URL;\nexport const useInternalFeatures = includes(\n internalEnvs,\n process.env.INSTALL_ENV,\n);\nexport const maxZoomLevel = 22;\nexport const minZoomLevel = 12;\nexport const maxBounds = [[39.84228, -75.31814], [40.1626, -74.90478]];\nexport const parcelOutlineColor = '#F36C52';\n\nexport function getSearchUrl(query) {\n return `${baseUrl}/search/?q=${encodeURIComponent(query)}`;\n}\n\nexport function getXYSearchUrl(lat, lng) {\n return `${baseUrl}/search/?x=${lng}&y=${lat}`;\n}\n\nexport function getDetailsUrl(parcelId) {\n return `${baseUrl}/parcel/${parcelId}/details`;\n}\n\nexport function getParcelUrl(parcelId) {\n return `${baseUrl}/parcel/${parcelId}`;\n}\n\nexport function getDetailsClientUrl(parcelId) {\n return `${rootUrl}parcel/${parcelId}`;\n}\n\nexport function getMapClientUrl(parcelId) {\n return `${rootUrl}map/${parcelId}`;\n}\n\nexport function getMapLocationClientUrl(latLng) {\n return `${rootUrl}map/${latLng}`;\n}\n\nexport function getFactsheetUrl(parcelId) {\n return `${baseUrl}/parcel/${parcelId}/factsheet`;\n}\n\nexport function getCAPEligibilityURL(parcelId) {\n return `${baseUrl}/parcel/${parcelId}/cap`;\n}\n\nexport function getCurrentChargesUrl() {\n return `${baseUrl}/regulation/current_rates`;\n}\n","import trimEnd from 'lodash/trimEnd';\nimport { rootUrl } from 'common/settings';\n\nexport const createRootRelativeRoute = route =>\n `${trimEnd(rootUrl, '/')}${route}`;\n\nexport const homeRoute = createRootRelativeRoute('/');\nexport const homeRouteWithoutSlash = createRootRelativeRoute('');\nexport const mapRoute = createRootRelativeRoute('/map');\nexport const mapLatLngRoute = createRootRelativeRoute('/map/:lat/:lng');\nexport const mapParcelIDRoute = createRootRelativeRoute('/map/:parcelId');\nexport const parcelIDRoute = createRootRelativeRoute('/parcel/:parcelId');\n\nexport const createParcelDetailsRouteFromParcelID = id =>\n createRootRelativeRoute(`/parcel/${id}`);\n\nexport const createMapRouteFromLatLng = (lat, lng) =>\n createRootRelativeRoute(`/map/${lat}/${lng}`);\n\nexport const helpRoute = createRootRelativeRoute('/help');\n\nexport const helpBillingRoute = createRootRelativeRoute('/help/billing');\nexport const helpBillingPropertyTypeRoute = createRootRelativeRoute(\n '/help/billing/:propertyType',\n);\n\nexport const helpBillingResRoute = createRootRelativeRoute('/help/billing/res');\nexport const helpBillingNonResRoute = createRootRelativeRoute(\n '/help/billing/nonres',\n);\nexport const helpBillingCondoRoute = createRootRelativeRoute(\n '/help/billing/condo',\n);\n\nexport const createBillingRouteFromPropertyType = propertyType =>\n createRootRelativeRoute(`/help/billing/${propertyType}`);\n\nexport const helpAppealsRoute = createRootRelativeRoute('/help/appeals');\nexport const helpAppealsFileRoute = createRootRelativeRoute(\n '/help/appeals/file',\n);\nexport const helpCreditsRoute = createRootRelativeRoute('/help/credits');\n\nexport const capRoute = createRootRelativeRoute('/cap');\nexport const capParcelIdAccountIdRoute = createRootRelativeRoute(\n '/cap/:parcelId/:accountId',\n);\nexport const createCapParcelIdAccountIdRouteFromIds = (parcelId, accountId) =>\n createRootRelativeRoute(`/cap/${parcelId}/${accountId}`);\n\nexport const noMatchRoute = createRootRelativeRoute('/*');\n","import axios from 'axios';\nimport head from 'lodash/head';\nimport findIndex from 'lodash/findIndex';\n\nimport { push } from 'react-router-redux';\nimport {\n ID_SEARCH,\n XY_SEARCH,\n CAP_SEARCH,\n EXPLORE_PAGE,\n DETAILS_PAGE,\n NO_PARCEL_CLICK_MSG,\n NO_PARCEL_ID_MSG,\n NO_CAP_ELIGIBILITY_MSG,\n CAP_PAGE,\n CAP_DETAIL_SEARCH,\n} from 'common/constants';\nimport {\n START_SEARCH,\n SERVER_FAILURE_MSG,\n failSearch,\n completeSearch,\n} from 'common/geocoder/actions';\nimport {\n getParcelUrl,\n getDetailsUrl,\n getDetailsClientUrl,\n getMapClientUrl,\n getXYSearchUrl,\n getCAPEligibilityURL,\n getMapLocationClientUrl,\n getCurrentChargesUrl,\n pvDataMapServerJSONURL,\n} from './settings';\nimport { findCAPAccountIndex } from './utils';\n\nexport const ADD_MAP_LAYER = 'ADD_MAP_LAYER';\nexport const REMOVE_MAP_LAYER = 'REMOVE_MAP_LAYER';\nexport const SET_CAP_ACCOUNT_INDEX = 'SET_CAP_ACCOUNT_INDEX';\nexport const CLEAR_CAP_AND_DETAILS = 'CLEAR_CAP_AND_DETAILS';\nexport const START_SET_MAPSERVER_INDEXES = 'START_SET_MAPSERVER_INDEXES';\nexport const COMPLETE_SET_MAPSERVER_INDEXES = 'COMPLETE_SET_MAPSERVER_INDEXES';\nexport const FAIL_SET_MAPSERVER_INDEXES = 'FAIL_SET_MAPSERVER_INDEXES';\n\nexport const START_FETCH_CURRENT_RATES = 'START_FETCH_CURRENT_RATES';\nexport const FAIL_FETCH_CURRENT_RATES = 'FAIL_FETCH_CURRENT_RATES';\nexport const COMPLETE_FETCH_CURRENT_RATES = 'COMPLETE_FETCH_CURRENT_RATES';\n\nexport function startFetchCurrentRates() {\n return {\n type: START_FETCH_CURRENT_RATES,\n };\n}\n\nexport function failFetchCurrentRates() {\n return {\n type: FAIL_FETCH_CURRENT_RATES,\n };\n}\n\nexport function completeFetchCurrentRates(rates) {\n return {\n type: COMPLETE_FETCH_CURRENT_RATES,\n rates,\n };\n}\n\nexport function fetchCurrentRates() {\n return dispatch => {\n dispatch(startFetchCurrentRates());\n\n return axios\n .get(getCurrentChargesUrl())\n .then(({ data }) => {\n if (!data.IsCurrent) {\n return dispatch(failFetchCurrentRates());\n }\n\n return dispatch(completeFetchCurrentRates(data));\n })\n .catch(() => dispatch(failFetchCurrentRates()));\n };\n}\n\nexport function startXYSearch(url, instance, lat, lng) {\n return {\n type: START_SEARCH,\n searchType: XY_SEARCH,\n url,\n instance,\n lat,\n lng,\n };\n}\n\nexport function startIdSearch(url, instance) {\n return {\n type: START_SEARCH,\n searchType: ID_SEARCH,\n url,\n instance,\n };\n}\n\nexport function startCAPSearch(url, instance) {\n return {\n type: START_SEARCH,\n searchType: CAP_SEARCH,\n url,\n instance,\n };\n}\n\nfunction isSearchActive(url, getState) {\n return getState().search.url === url;\n}\n\nfunction navigateToUrl(url) {\n return dispatch => {\n dispatch(push(url));\n };\n}\n\nexport function navigateToLocation(location) {\n const latLng = `${location.Y}/${location.X}`;\n return navigateToUrl(getMapLocationClientUrl(latLng));\n}\n\nexport function navigateToDetails(parcel) {\n return navigateToUrl(getDetailsClientUrl(parcel.ParcelID));\n}\n\nexport function navigateToMap(location) {\n return navigateToUrl(getMapClientUrl(location.Parcel.ParcelID));\n}\n\nexport function navigateToParcelOrLocation(location) {\n if (location.Parcel) {\n return navigateToMap(location);\n }\n\n return navigateToLocation(location);\n}\n\nexport function navigateToDetailsOrLocation(location) {\n if (location.Parcel) {\n return navigateToDetails(location.Parcel);\n }\n\n return navigateToLocation(location);\n}\n\nexport function runXYSearch(instance, lat, lng, completeAction) {\n const url = getXYSearchUrl(lat, lng);\n\n return (dispatch, getState) => {\n function isActive() {\n return isSearchActive(url, getState);\n }\n\n dispatch(startXYSearch(url, instance, lat, lng));\n\n return axios\n .get(url)\n .then(({ data }) => {\n if (!isActive()) {\n return null;\n }\n\n if (!data.length) {\n return dispatch(failSearch(NO_PARCEL_CLICK_MSG));\n }\n\n const location = head(data);\n\n dispatch(completeSearch(location, instance, XY_SEARCH));\n\n return completeAction\n ? dispatch(completeAction(location))\n : null;\n })\n .catch(() => {\n if (!isActive()) {\n return null;\n }\n\n return dispatch(failSearch(SERVER_FAILURE_MSG));\n });\n };\n}\n\nexport function runXYParcelSearch(lat, lng) {\n return runXYSearch(EXPLORE_PAGE, lat, lng, navigateToMap);\n}\n\nexport function runParcelDetailsIdSearch(url, instance, searchType) {\n let searchAction = startIdSearch;\n let failureMessage = NO_PARCEL_ID_MSG;\n if (searchType === CAP_SEARCH) {\n searchAction = startCAPSearch;\n failureMessage = NO_CAP_ELIGIBILITY_MSG;\n }\n return (dispatch, getState) => {\n function isActive() {\n return isSearchActive(url, getState);\n }\n\n dispatch(searchAction(url, instance));\n\n return axios\n .get(url)\n .then(({ data }) => {\n if (!isActive()) {\n return null;\n }\n\n return dispatch(completeSearch(data, instance, searchType));\n })\n .catch(() => {\n if (!isActive()) {\n return null;\n }\n\n return dispatch(failSearch(failureMessage));\n });\n };\n}\n\nexport const runCAPSearch = parcelId => dispatch =>\n dispatch(\n runParcelDetailsIdSearch(\n getCAPEligibilityURL(parcelId),\n DETAILS_PAGE,\n CAP_SEARCH,\n ),\n );\n\nexport const runDetailsCAPSearch = parcelId => dispatch =>\n dispatch(\n runParcelDetailsIdSearch(\n getDetailsUrl(parcelId),\n CAP_PAGE,\n CAP_DETAIL_SEARCH,\n ),\n );\n\nexport function runParcelIdSearch(parcelId) {\n const url = getParcelUrl(parcelId);\n return runParcelDetailsIdSearch(url, EXPLORE_PAGE, ID_SEARCH);\n}\n\nexport function findCAPEligibility(details) {\n return runCAPSearch(details.Parcel.ParcelID);\n}\n\nexport function setCAPAccountIndex(index) {\n return {\n type: SET_CAP_ACCOUNT_INDEX,\n capAccountIndex: index,\n };\n}\n\nexport function setCAPIndex(accountNumber, accounts) {\n const capAcctIndex = findCAPAccountIndex(accountNumber, accounts);\n return setCAPAccountIndex(capAcctIndex);\n}\n\nexport function clearCAPAndDetails() {\n return {\n type: CLEAR_CAP_AND_DETAILS,\n };\n}\n\nexport function removeSelectedMapLayer(layerName) {\n return {\n type: REMOVE_MAP_LAYER,\n layer: layerName,\n };\n}\n\nexport function addSelectedMapLayer(layerName) {\n return {\n type: ADD_MAP_LAYER,\n layer: layerName,\n };\n}\n\nexport function startSetMapServerIndexes() {\n return {\n type: START_SET_MAPSERVER_INDEXES,\n };\n}\n\nexport function completeSetMapServerIndexes(\n parcelsOverlayIndex,\n imperviousOverlayIndex,\n) {\n return {\n type: COMPLETE_SET_MAPSERVER_INDEXES,\n parcelsOverlayIndex,\n imperviousOverlayIndex,\n };\n}\n\nexport function failSetMapServerIndexes() {\n return {\n type: FAIL_SET_MAPSERVER_INDEXES,\n };\n}\n\nfunction parseMapServerLayers(jsonResponse) {\n const { layers } = jsonResponse;\n if (layers) {\n const parcelsOverlayIndex = findIndex(\n layers,\n l => l.name.toLowerCase().indexOf('parcel') !== -1,\n );\n const imperviousOverlayIndex = findIndex(\n layers,\n l => l.name.toLowerCase().indexOf('impervious') !== -1,\n );\n return { parcelsOverlayIndex, imperviousOverlayIndex };\n }\n return {\n parcelsOverlayIndex: -1,\n imperviousOverlayIndex: -1,\n };\n}\n\nexport function retrieveMapServerIndexes() {\n return dispatch => {\n dispatch(startSetMapServerIndexes());\n\n return axios\n .get(pvDataMapServerJSONURL)\n .then(({ data }) => {\n const {\n parcelsOverlayIndex,\n imperviousOverlayIndex,\n } = parseMapServerLayers(data);\n\n return dispatch(\n completeSetMapServerIndexes(\n parcelsOverlayIndex,\n imperviousOverlayIndex,\n ),\n );\n })\n .catch(() => dispatch(failSetMapServerIndexes()));\n };\n}\n","export const CLEAR_WALKTHROUGH_PARCEL_TYPE = 'CLEAR_WALKTHROUGH_PARCEL_TYPE';\n\nexport function clearWalkthroughParcelType() {\n return {\n type: CLEAR_WALKTHROUGH_PARCEL_TYPE,\n };\n}\n","export const PARCELS_OVERLAY = 'parcelsOverlay';\nexport const IMPERVIOUS_OVERLAY = 'imperviousOverlay';\nexport const STREETS_OVERLAY = 'streetsOverlay';\nexport const ID_SEARCH = 'ID_SEARCH';\nexport const XY_SEARCH = 'XY_SEARCH';\nexport const CAP_SEARCH = 'CAP_SEARCH';\nexport const CAP_DETAIL_SEARCH = 'CAP_DETAIL_SEARCH';\nexport const HOME_HEADER = 'HOME_HEADER';\nexport const HOME_BODY = 'HOME_BODY';\nexport const EXPLORE_PAGE = 'EXPLORE_PAGE';\nexport const DETAILS_PAGE = 'DETAILS_PAGE';\nexport const WALKTHROUGH_HEADER = 'WALKTHROUGH_HEADER';\nexport const WALKTHROUGH_LIST = 'WALKTHROUGH_LIST';\nexport const APPEALS_HEADER = 'APPEALS_HEADER';\nexport const HELP_HEADER = 'HELP_HEADER';\nexport const CREDITS_HEADER = 'CREDITS_HEADER';\nexport const CAP_HEADER = 'CAP_HEADER';\nexport const CAP_PAGE = 'CAP_PAGE';\nexport const CAP_APPLICATION_PAGE = 'CAP_APPLICATION';\nexport const NO_PARCEL_CLICK_MSG = \"Couldn't find a parcel where you clicked.\";\nexport const NO_PARCEL_ID_MSG = \"Couldn't find a parcel with that ID.\";\nexport const CREATE_NO_PARCEL_ID_MSG = id =>\n `Couldn't find a parcel with ID ${id}.`;\nexport const NO_CAP_ELIGIBILITY_MSG =\n \"Couldn't find CAP eligibility details for that parcel.\";\nexport const CREATE_NO_ACCOUNT_ID_MSG = (parcelId, accountId) =>\n `Couldn't find an account with ID ${accountId} at parcel ID ${parcelId}.`;\nexport const CREATE_INELIGIBLE_ACCOUNT_ID_MSG = id =>\n `Account ${id} is not eligible for CAP.`;\nexport const CAP_APP_ERROR_MSG =\n 'Your CAP application could not be submitted. ' +\n 'Please contact pwd.stormwaterappeals@phila.gov.';\nexport const APPEALS_FORM = 'appeals_form';\nexport const APPEALS_PROCESS = 'appeals_process';\nexport const RES = 'res';\nexport const NONRES = 'nonres';\nexport const CONDO = 'condo';\nexport const GARDEN = 'exemptcommunitygarden';\nexport const EXEMPT = 'Exempt';\nexport const CEMETERY = 'Cemetery';\nexport const RES_DISPLAY = 'Residential';\nexport const NONRES_DISPLAY = 'Non-Residential';\nexport const CONDO_DISPLAY = 'Condominium';\nexport const GARDEN_DISPLAY = 'Community Garden';\nexport const ADDRESS_UNAVAILABLE = 'Address Unavailable';\n\nexport const TOP_LEFT = 'topleft';\nexport const BOTTOM_LEFT = 'bottomleft';\nexport const BOTTOM_RIGHT = 'bottomright';\n\nexport const LEGAL_DISCLAIMER_TEXT = `\n Please Note: The data on this site is to be used for stormwater\n billing purposes only, and is not intended to depict, and should\n not be relied upon to determine, the legal boundaries of\n parcels. The City of Philadelphia Records Department is\n exclusively responsible for maintaining the official parcel maps\n of the City, which are the graphical depictions of the legal\n descriptions contained on deeds that are also processed by the\n Records Department. The Streets Department’s Survey Unit\n maintains maps that contain survey data and street plans.`;\n","import { createAction } from 'redux-act';\nimport axios from 'axios';\n\nimport { getSearchUrl } from 'common/settings';\nimport { preprocessResults } from 'common/utils';\n\nexport const updateUnityBarSearchQuery = createAction(\n 'UPDATE_UNITY_BAR_SEARCH_QUERY',\n);\nexport const clearUnityBarSearchQuery = createAction(\n 'CLEAR_UNITY_BAR_SEARCH_QUERY',\n);\n\nexport const startGeocoderSearch = createAction('START_NEW_GEOCODER_SEARCH');\nexport const failGeocoderSearch = createAction('FAIL_NEW_GEOCODER_SEARCH');\nexport const completeGeocoderSearch = createAction(\n 'COMPLETE_NEW_GEOCODER_SEARCH',\n);\nexport const clearGeocoderSearch = createAction('CLEAR_NEW_GEOCODER_SEARCH');\n\nexport const resetGeocoder = createAction('RESET_NEW_GEOCODER');\n\nexport function performUnityBarGeocoderSearch() {\n return (dispatch, getState) => {\n dispatch(startGeocoderSearch());\n\n const {\n appheader: {\n unitybar: { query },\n },\n } = getState();\n\n return axios\n .get(getSearchUrl(query))\n .then(({ data }) => preprocessResults(data))\n .then(data => dispatch(completeGeocoderSearch(data)))\n .catch(err => dispatch(failGeocoderSearch(err)));\n };\n}\n","\nvar content = require(\"!!../node_modules/mini-css-extract-plugin/dist/loader.js!../node_modules/css-loader/dist/cjs.js!../node_modules/resolve-url-loader/index.js!../node_modules/sass-loader/lib/loader.js!./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/mini-css-extract-plugin/dist/loader.js!../node_modules/css-loader/dist/cjs.js!../node_modules/resolve-url-loader/index.js!../node_modules/sass-loader/lib/loader.js!./main.scss\", function() {\n\t\tvar newContent = require(\"!!../node_modules/mini-css-extract-plugin/dist/loader.js!../node_modules/css-loader/dist/cjs.js!../node_modules/resolve-url-loader/index.js!../node_modules/sass-loader/lib/loader.js!./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}","var _ = require('lodash');\nmodule.exports = Function(_.keys(_.templateSettings.imports), 'return ' + function(obj){\nvar __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\nwith(obj||{}){\n__p+='\\n\\n \\n \\n \\n Stormwater Map Viewer | Philadelphia Water\\n \\n \\n \\n \\n \\n ';\n if (process.env.INSTALL_ENV === 'publicProd') { \n__p+='\\n \\n \\n \\n ';\n } \n__p+='\\n\\n ';\n if (process.env.NODE_ENV === 'production') { \n__p+='\\n \\n \\n \\n \\n ';\n } \n__p+='\\n\\n ';\n if (process.env.NODE_ENV !== 'development') { \n__p+='\\n \\n ';\n } \n__p+='\\n
\\n \\n\\n';\n}\nreturn __p;\n}.toString()).apply(undefined, _.values(_.templateSettings.imports));\n","/* eslint global-require:0 */\n\nimport { createStore, applyMiddleware } from 'redux';\nimport thunk from 'redux-thunk';\nimport { browserHistory } from 'react-router';\nimport { routerMiddleware } from 'react-router-redux';\n\nconst middlewares = [thunk, routerMiddleware(browserHistory)];\n\nif (process.env.NODE_ENV === 'development') {\n const { createLogger } = require('redux-logger');\n const logger = createLogger({ diff: true, collapsed: true });\n middlewares.push(logger);\n}\n\nexport default applyMiddleware(...middlewares)(createStore);\n","import {\n ADD_MAP_LAYER,\n REMOVE_MAP_LAYER,\n START_SET_MAPSERVER_INDEXES,\n COMPLETE_SET_MAPSERVER_INDEXES,\n FAIL_SET_MAPSERVER_INDEXES,\n COMPLETE_FETCH_CURRENT_RATES,\n} from './actions';\nimport {\n PARCELS_OVERLAY,\n IMPERVIOUS_OVERLAY,\n STREETS_OVERLAY,\n} from './constants';\n\nexport const initMapOverlays = {\n parcelsOverlay: true,\n imperviousOverlay: true,\n exemptOverlay: false,\n streetsOverlay: true,\n parcelsOverlayIndex: -1,\n imperviousOverlayIndex: -1,\n searchingForOverlayIndexes: false,\n};\n\nexport function mapLayers(state = initMapOverlays, action) {\n if (action.type === START_SET_MAPSERVER_INDEXES) {\n return Object.assign({}, state, {\n searchingForOverlayIndexes: true,\n });\n }\n if (action.type === COMPLETE_SET_MAPSERVER_INDEXES) {\n return Object.assign({}, state, {\n parcelsOverlayIndex: action.parcelsOverlayIndex,\n imperviousOverlayIndex: action.imperviousOverlayIndex,\n searchingForOverlayIndexes: false,\n });\n }\n if (action.type === FAIL_SET_MAPSERVER_INDEXES) {\n return Object.assign({}, state, {\n parcelsOverlayIndex: -1,\n imperviousOverlayIndex: -1,\n searchingForOverlayIndexes: false,\n });\n }\n if (action.type === ADD_MAP_LAYER || action.type === REMOVE_MAP_LAYER) {\n const toggle = action.type === ADD_MAP_LAYER;\n if (action.layer === PARCELS_OVERLAY) {\n return Object.assign({}, state, {\n parcelsOverlay: toggle,\n });\n }\n if (action.layer === IMPERVIOUS_OVERLAY) {\n return Object.assign({}, state, {\n imperviousOverlay: toggle,\n });\n }\n if (action.layer === STREETS_OVERLAY) {\n return Object.assign({}, state, {\n streetsOverlay: toggle,\n });\n }\n }\n return state;\n}\n\nconst initRatesState = {\n current: null,\n};\n\nexport function rates(state = initRatesState, action) {\n if (action.type === COMPLETE_FETCH_CURRENT_RATES) {\n return Object.assign({}, state, {\n current: action.rates,\n });\n }\n return state;\n}\n","import {\n START_SEARCH,\n FAIL_SEARCH,\n COMPLETE_SEARCH,\n SET_SEARCH_ERROR,\n CLEAR_SEARCH,\n SET_GEOCODER_LOCATIONS,\n} from './actions';\n\nexport const initSearchState = {\n url: null,\n searchType: null,\n instance: null,\n isFetching: false,\n errorMessage: null,\n locations: null,\n preprocessResults: undefined,\n};\n\nexport function search(state = initSearchState, action) {\n switch (action.type) {\n case START_SEARCH:\n return Object.assign({}, state, {\n url: action.url,\n searchType: action.searchType,\n instance: action.instance,\n isFetching: true,\n errorMessage: null,\n locations: null,\n });\n case FAIL_SEARCH:\n return Object.assign({}, state, {\n isFetching: false,\n errorMessage: action.errorMessage,\n });\n case COMPLETE_SEARCH:\n return Object.assign({}, state, {\n isFetching: false,\n });\n case SET_SEARCH_ERROR:\n return Object.assign({}, state, {\n errorMessage: action.errorMessage,\n });\n case CLEAR_SEARCH:\n return initSearchState;\n case SET_GEOCODER_LOCATIONS:\n return Object.assign({}, state, {\n isFetching: false,\n locations: action.locations,\n });\n default:\n return state;\n }\n}\n","import { WALKTHROUGH_LIST } from 'common/constants';\nimport { COMPLETE_SEARCH, START_SEARCH } from 'common/geocoder/actions';\nimport { CLEAR_WALKTHROUGH_PARCEL_TYPE } from './actions';\n\nconst initialState = {\n parcel: null,\n};\n\nexport default function walkthroughListPage(\n state = initialState,\n { instance, location, type },\n) {\n if (instance === WALKTHROUGH_LIST) {\n switch (type) {\n case COMPLETE_SEARCH:\n return Object.assign({}, state, {\n parcel: location.Parcel,\n });\n case START_SEARCH:\n default:\n return initialState;\n }\n }\n if (type === CLEAR_WALKTHROUGH_PARCEL_TYPE) {\n return initialState;\n }\n return state;\n}\n","import { CAP_APPLICATION_PAGE } from 'common/constants';\n\nimport {\n CAP_POST_SUCCESS,\n CAP_POST_FAILURE,\n CLEAR_CAP_POST_RESPONSE,\n} from './actions';\n\nexport const initCAPApplicationPageStatus = {\n responseStatus: {\n success: null,\n errorMessage: null,\n formData: null,\n },\n};\n\nexport function capApplicationPage(\n state = initCAPApplicationPageStatus,\n action,\n) {\n if (action.instance === CAP_APPLICATION_PAGE) {\n if (action.type === CAP_POST_SUCCESS) {\n return Object.assign({}, state, {\n responseStatus: {\n success: true,\n errorMessage: null,\n formData: action.data,\n },\n });\n }\n if (action.type === CAP_POST_FAILURE) {\n return Object.assign({}, state, {\n responseStatus: {\n success: false,\n errorMessage: action.response,\n formData: null,\n },\n });\n }\n if (action.type === CLEAR_CAP_POST_RESPONSE) {\n return initCAPApplicationPageStatus;\n }\n }\n return state;\n}\n","import {\n START_SEARCH,\n GEOCODER_SEARCH,\n COMPLETE_SEARCH,\n} from 'common/geocoder/actions';\nimport { EXPLORE_PAGE, ID_SEARCH, XY_SEARCH } from 'common/constants';\n\nimport { SET_ZOOM, SET_CENTER, CLEAR_MAP } from './actions';\n\nexport const initExplorePage = {\n center: {\n lat: 39.953,\n lng: -75.16,\n },\n markerPosition: {\n lat: null,\n lng: null,\n },\n parcel: null,\n zoom: 14,\n showMarker: true,\n};\n\nexport function explorePage(state = initExplorePage, action) {\n if (action.instance === EXPLORE_PAGE) {\n if (action.type === START_SEARCH) {\n if (action.searchType === XY_SEARCH) {\n return Object.assign({}, state, {\n markerPosition: {\n lat: action.lat,\n lng: action.lng,\n },\n showMarker: true,\n parcel: null,\n });\n }\n if (\n action.searchType === GEOCODER_SEARCH ||\n action.searchType === ID_SEARCH\n ) {\n return Object.assign({}, state, {\n showMarker: false,\n markerPosition: {\n lat: null,\n lng: null,\n },\n parcel: null,\n });\n }\n return state;\n }\n if (action.type === COMPLETE_SEARCH) {\n const zoom = action.searchType === ID_SEARCH ? 18 : state.zoom;\n return Object.assign({}, state, {\n center: {\n lat: action.location.Y,\n lng: action.location.X,\n },\n markerPosition: {\n lat: action.location.Y,\n lng: action.location.X,\n },\n showMarker: true,\n parcel: action.location.Parcel,\n zoom,\n });\n }\n } else if (action.type === SET_ZOOM) {\n return Object.assign({}, state, {\n zoom: action.zoom,\n });\n } else if (action.type === SET_CENTER) {\n return Object.assign({}, state, {\n center: action.center,\n });\n } else if (action.type === CLEAR_MAP) {\n return initExplorePage;\n }\n\n return state;\n}\n","import flow from 'lodash/flow';\nimport initial from 'lodash/initial';\nimport last from 'lodash/last';\n\n// Compare relevant fields from two `RateSchedule`s to determine whether they\n// differ for display purposes\nfunction ratePeriodsHaveDifferentCharges(\n { RateSchedule: first },\n { RateSchedule: second },\n) {\n return (\n first.ResidenceCharge !== second.ResidenceCharge ||\n first.GrossUnitCharge !== second.GrossUnitCharge ||\n first.ImperviousUnitCharge !== second.ImperviousUnitCharge ||\n first.ParcelWeightFactor !== second.ParcelWeightFactor ||\n first.ResidenceBillingCharge !== second.ResidenceBillingCharge ||\n first.NonResidenceBillingCharge !== second.NonResidenceBillingCharge\n );\n}\n\n// Reduce a list of rate periods sorted in ascending date order into a list of\n// rate ranges, also sorted in ascending order\nfunction transformRatePeriodsIntoRateRanges(accountCharges) {\n return accountCharges.reduce((acc, next) => {\n const previousCharge = last(acc);\n\n if (\n !acc.length ||\n ratePeriodsHaveDifferentCharges(previousCharge, next)\n ) {\n return acc.concat(next);\n }\n\n const adjustedPreviousCharge = Object.assign({}, previousCharge, {\n RateSchedule: Object.assign({}, previousCharge.RateSchedule, {\n EndDate: next.RateSchedule.EndDate,\n IsCurrent:\n previousCharge.RateSchedule.IsCurrent ||\n next.RateSchedule.IsCurrent,\n }),\n });\n\n return initial(acc).concat(adjustedPreviousCharge);\n }, []);\n}\n\n// Restructure input to move the `ParcelTotals` object out of an object context\nconst formatParcelChargesForCreatingRateRanges = ({ ParcelTotals }) =>\n ParcelTotals;\n\n// Find the end date for the currently active rate range to set the rate range\n// to set the initially selected option in the rate range dropdown\nconst findCurrentlyActiveRateRangeEndDate = ranges =>\n ranges.find(({ RateSchedule: { IsCurrent } }) => IsCurrent).RateSchedule\n .EndDate;\n\n// Restructure input to place `RateSchedule` objects within an object context to\n// make them work with the transformation function\nconst formatRateScheduleDataToCreateRanges = data =>\n data.map(RateSchedule => ({ RateSchedule }));\n\n// Restructure input to move the `RateSchedule` objects out of an object context\nconst formatRateRanges = data => data.map(({ RateSchedule }) => RateSchedule);\n\n// Restructure `RateSchedule` input, then transform it into rate ranges before\n// restoring it to its original structure\nconst transformRateScheduleIntoRateRanges = flow(\n formatRateScheduleDataToCreateRanges,\n transformRatePeriodsIntoRateRanges,\n formatRateRanges,\n);\n\n/**\n * Get the end date for the currently active rate range from a set of rate\n * ranges collected into buckets of identical adjacent charges.\n *\n * @param {object} chargeSummary - Parcel charge summary.\n * @returns {string} - End date of the currently active rate period from the\n * list of account charges grouped into ranges of identical\n * adjacent rate periods.\n */\nexport const getCurrentRateRangeEndDate = flow(\n formatParcelChargesForCreatingRateRanges,\n transformRatePeriodsIntoRateRanges,\n findCurrentlyActiveRateRangeEndDate,\n);\n\n/**\n * Transforms parcel details response data to replace lists containing rate\n * periods into lists containing rate ranges which fuse adjacent identical\n * rate periods into distinct ranges.\n *\n * @param {object} details - Parcel Details response from the PWD WebAPI\n * @returns {details} - Parcel Details data with its rate period data fused\n * into ranges for which the rates are identical.\n */\nexport function replaceAPIResponseRatePeriodsWithRanges(details) {\n return Object.assign({}, details, {\n ChargeSummary: Object.assign({}, details.ChargeSummary, {\n ParcelAccounts: details.ChargeSummary.ParcelAccounts.map(account =>\n Object.assign({}, account, {\n YearlyAccountCharges: transformRatePeriodsIntoRateRanges(\n account.YearlyAccountCharges,\n ),\n }),\n ),\n ParcelTotals: transformRatePeriodsIntoRateRanges(\n details.ChargeSummary.ParcelTotals,\n ),\n RateSchedules: transformRateScheduleIntoRateRanges(\n details.ChargeSummary.RateSchedules,\n ),\n }),\n });\n}\n","import { CLEAR_CAP_AND_DETAILS, SET_CAP_ACCOUNT_INDEX } from 'common/actions';\n\nimport {\n ID_SEARCH,\n XY_SEARCH,\n CAP_SEARCH,\n CAP_DETAIL_SEARCH,\n DETAILS_PAGE,\n CAP_PAGE,\n} from 'common/constants';\n\nimport {\n GEOCODER_SEARCH,\n START_SEARCH,\n COMPLETE_SEARCH,\n} from 'common/geocoder/actions';\n\nimport {\n SET_PREVIEW_PARCEL,\n CLEAR_PREVIEW_PARCEL,\n SET_RATE_PERIOD,\n CLEAR_DETAILS_STATE_EXCEPT_CAP,\n CLEAR_CAP_DETAILS,\n} from './actions';\n\nimport {\n getCurrentRateRangeEndDate,\n replaceAPIResponseRatePeriodsWithRanges,\n} from './helpers';\n\nexport const initDetailsPageState = Object.freeze({\n capParcelDetails: null,\n details: null,\n capAccountIndex: 0,\n capEligibility: null,\n markerPosition: null,\n previewParcel: null,\n selectedRatePeriod: null,\n});\n\nexport function detailsPage(state = initDetailsPageState, action) {\n if (action.type === CLEAR_DETAILS_STATE_EXCEPT_CAP) {\n return Object.assign({}, initDetailsPageState, {\n capParcelDetails: state.capParcelDetails,\n capAccountIndex: state.capAccountIndex,\n capEligibility: state.capEligibility,\n });\n }\n\n if (action.type === CLEAR_CAP_DETAILS) {\n return Object.assign({}, state, {\n capParcelDetails: initDetailsPageState.capParcelDetails,\n capAccountIndex: initDetailsPageState.capAccountIndex,\n capEligibility: initDetailsPageState.capEligibility,\n });\n }\n\n if (\n action.type === COMPLETE_SEARCH &&\n (action.instance === DETAILS_PAGE || action.instance === CAP_PAGE)\n ) {\n if (action.searchType === ID_SEARCH) {\n return Object.assign({}, state, {\n details: replaceAPIResponseRatePeriodsWithRanges(\n action.location,\n ),\n capParcelDetails: action.location,\n markerPosition: null,\n capEligibility: null,\n selectedRatePeriod: getCurrentRateRangeEndDate(\n action.location.ChargeSummary,\n ),\n });\n }\n if (action.searchType === CAP_DETAIL_SEARCH) {\n return Object.assign({}, state, {\n details: replaceAPIResponseRatePeriodsWithRanges(\n action.location,\n ),\n capParcelDetails: action.location,\n selectedRatePeriod: getCurrentRateRangeEndDate(\n action.location.ChargeSummary,\n ),\n });\n }\n if (\n action.searchType === GEOCODER_SEARCH &&\n action.instance === CAP_PAGE\n ) {\n return Object.assign({}, state, {\n capEligibility: null,\n capParcelDetails: action.location,\n });\n }\n if (action.searchType === CAP_SEARCH) {\n return Object.assign({}, state, {\n capEligibility: action.location,\n });\n }\n } else if (action.type === SET_CAP_ACCOUNT_INDEX) {\n return Object.assign({}, state, {\n capAccountIndex: action.capAccountIndex,\n });\n } else if (\n action.type === START_SEARCH &&\n action.instance === DETAILS_PAGE &&\n action.searchType === XY_SEARCH\n ) {\n return Object.assign({}, state, {\n markerPosition: {\n lat: action.lat,\n lng: action.lng,\n },\n });\n } else if (\n action.type === START_SEARCH &&\n action.searchType === GEOCODER_SEARCH &&\n action.instance === CAP_PAGE\n ) {\n return Object.assign({}, state, {\n capEligibility: null,\n });\n } else if (action.type === CLEAR_CAP_AND_DETAILS) {\n return initDetailsPageState;\n } else if (action.type === SET_PREVIEW_PARCEL) {\n return Object.assign({}, state, {\n previewParcel: action.location.Parcel,\n });\n } else if (action.type === CLEAR_PREVIEW_PARCEL) {\n return Object.assign({}, state, {\n previewParcel: null,\n });\n } else if (action.type === SET_RATE_PERIOD) {\n return Object.assign({}, state, {\n selectedRatePeriod: action.value,\n });\n }\n\n return state;\n}\n","import { createReducer } from 'redux-act';\nimport update from 'immutability-helper';\n\nimport {\n updateUnityBarSearchQuery,\n clearUnityBarSearchQuery,\n startGeocoderSearch,\n failGeocoderSearch,\n completeGeocoderSearch,\n clearGeocoderSearch,\n resetGeocoder,\n} from './actions';\n\nconst initialState = Object.freeze({\n unitybar: Object.freeze({\n query: '',\n }),\n data: null,\n fetching: false,\n error: null,\n});\n\nexport default createReducer(\n {\n [updateUnityBarSearchQuery]: (state, payload) =>\n update(state, {\n unitybar: {\n query: { $set: payload },\n },\n error: { $set: null },\n }),\n [clearUnityBarSearchQuery]: state =>\n update(state, {\n unitybar: {\n query: { $set: initialState.unitybar.query },\n },\n error: { $set: null },\n }),\n [startGeocoderSearch]: state =>\n update(state, {\n data: { $set: null },\n fetching: { $set: true },\n }),\n [failGeocoderSearch]: (state, payload) =>\n update(state, {\n data: { $set: null },\n fetching: { $set: false },\n error: { $set: payload },\n }),\n [completeGeocoderSearch]: (state, payload) =>\n update(state, {\n data: { $set: payload },\n fetching: { $set: false },\n error: { $set: null },\n }),\n [clearGeocoderSearch]: state =>\n update(state, {\n data: { $set: null },\n fetching: { $set: false },\n error: { $set: null },\n }),\n [resetGeocoder]: () => initialState,\n },\n initialState,\n);\n","import { combineReducers } from 'redux';\n\nimport { mapLayers, rates } from 'common/reducers';\nimport { search } from 'common/geocoder/reducers';\nimport walkthroughListPage from './walkthrough/reducers';\nimport { capApplicationPage } from './cap/reducers';\nimport { explorePage } from './explore/reducers';\nimport { detailsPage } from './details/reducers';\nimport appheader from './appheader/reducers';\n\nexport default combineReducers({\n explorePage,\n detailsPage,\n walkthroughListPage,\n search,\n capApplicationPage,\n mapLayers,\n rates,\n appheader,\n});\n","/* eslint-disable react/jsx-filename-extension */\nimport 'core-js';\nimport 'dom4';\nimport '../../sass/main.scss';\nimport '../../index.html';\n\nimport React, { Suspense, lazy } from 'react';\nimport { render } from 'react-dom';\nimport { Provider } from 'react-redux';\nimport {\n applyRouterMiddleware,\n Router,\n Route,\n browserHistory,\n} from 'react-router';\nimport { useScroll } from 'react-router-scroll';\n\nimport {\n homeRoute,\n homeRouteWithoutSlash,\n mapRoute,\n mapLatLngRoute,\n mapParcelIDRoute,\n parcelIDRoute,\n helpRoute,\n helpBillingRoute,\n helpBillingPropertyTypeRoute,\n helpAppealsRoute,\n helpAppealsFileRoute,\n helpCreditsRoute,\n capRoute,\n capParcelIdAccountIdRoute,\n noMatchRoute,\n} from 'common/routes';\nimport createStoreWithMiddleware from './store';\nimport mainReducer from './reducer';\n\nconst ExploreContainer = lazy(() => import('./explore'));\nconst DetailsContainer = lazy(() => import('./details'));\nconst HomeContainer = lazy(() => import('./home'));\nconst WalkthroughContainer = lazy(() => import('./walkthrough'));\nconst HelpContainer = lazy(() => import('./help'));\nconst AppealsContainer = lazy(() => import('./appeals'));\nconst CreditsContainer = lazy(() => import('./credits'));\nconst NoRouteMatchContainer = lazy(() =>\n import('common/containers/NoRouteMatch'),\n);\nconst CapContainer = lazy(() => import('./cap'));\nconst CapApplicationContainer = lazy(() =>\n import('./cap/components/CapApplication'),\n);\n\nconst store = createStoreWithMiddleware(\n mainReducer,\n window.__REDUX_DEVTOOLS_EXTENSION__ && // eslint-disable-line no-underscore-dangle\n window.__REDUX_DEVTOOLS_EXTENSION__(), // eslint-disable-line no-underscore-dangle\n);\n\nconst makeLoadableComponent = LazilyLoadedComponent => props => (\n \n \n \n);\n\nconst LoadableHomeContainer = makeLoadableComponent(HomeContainer);\nconst LoadableExploreContainer = makeLoadableComponent(ExploreContainer);\nconst LoadableDetailsContainer = makeLoadableComponent(DetailsContainer);\nconst LoadableHelpContainer = makeLoadableComponent(HelpContainer);\nconst LoadableWalkthroughContainer = makeLoadableComponent(\n WalkthroughContainer,\n);\nconst LoadableAppealsContainer = makeLoadableComponent(AppealsContainer);\nconst LoadableCreditsContainer = makeLoadableComponent(CreditsContainer);\nconst LoadableCapContainer = makeLoadableComponent(CapContainer);\nconst LoadableNoRouteMatchContainer = makeLoadableComponent(\n NoRouteMatchContainer,\n);\nconst LoadableCapApplicationContainer = makeLoadableComponent(\n CapApplicationContainer,\n);\n\nrender(\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ,\n document.getElementById('mount'),\n);\n","import { getDetailsUrl } from 'common/settings';\nimport { runXYSearch, runParcelDetailsIdSearch } from 'common/actions';\nimport { DETAILS_PAGE, ID_SEARCH } from 'common/constants';\n\nexport const SET_PREVIEW_PARCEL = 'SET_PREVIEW_PARCEL';\nexport const CLEAR_PREVIEW_PARCEL = 'CLEAR_PREVIEW_PARCEL';\nexport const SET_RATE_PERIOD = 'SET_RATE_PERIOD';\nexport const CLEAR_DETAILS_STATE_EXCEPT_CAP = 'CLEAR_DETAILS_STATE_EXCEPT_CAP';\nexport const CLEAR_CAP_DETAILS = 'CLEAR_CAP_DETAILS';\n\nexport function setPreviewParcel(location) {\n return {\n type: SET_PREVIEW_PARCEL,\n location,\n };\n}\n\nexport function clearPreviewParcel() {\n return {\n type: CLEAR_PREVIEW_PARCEL,\n location: null,\n };\n}\n\nexport const runXYDetailsSearch = (lat, lng) => dispatch =>\n dispatch(runXYSearch(DETAILS_PAGE, lat, lng, setPreviewParcel));\n\nexport const runDetailsIdSearch = parcelId => dispatch =>\n dispatch(\n runParcelDetailsIdSearch(\n getDetailsUrl(parcelId),\n DETAILS_PAGE,\n ID_SEARCH,\n ),\n );\n\nexport function setRatePeriod(value) {\n return {\n type: SET_RATE_PERIOD,\n value,\n };\n}\n\nexport function clearDetailsExceptCAP() {\n return {\n type: CLEAR_DETAILS_STATE_EXCEPT_CAP,\n };\n}\n\nexport function clearCAPDetails() {\n return {\n type: CLEAR_CAP_DETAILS,\n };\n}\n","import axios from 'axios';\nimport head from 'lodash/head';\n\nexport const GEOCODER_SEARCH = 'GEOCODER_SEARCH';\n\nexport const START_SEARCH = 'START_SEARCH';\nexport const FAIL_SEARCH = 'FAIL_SEARCH';\nexport const COMPLETE_SEARCH = 'COMPLETE_SEARCH';\nexport const SET_SEARCH_ERROR = 'SET_SEARCH_ERROR';\nexport const CLEAR_SEARCH = 'CLEAR_SEARCH';\n\nexport const SET_GEOCODER_LOCATIONS = 'SET_GEOCODER_LOCATIONS';\nexport const PREPROCESS_RESULTS = 'PREPROCESS_RESULTS';\n\nexport const SERVER_FAILURE_MSG =\n 'There was a server failure. Please try again.';\nexport const NO_PARCELS_MSG = `We could not find a match for that address. Please\n try searching for a different address.`;\n\nexport function startGeocoderSearch(url, instance) {\n return {\n type: START_SEARCH,\n searchType: GEOCODER_SEARCH,\n url,\n instance,\n };\n}\n\nexport function failSearch(errorMessage) {\n return {\n type: FAIL_SEARCH,\n errorMessage,\n };\n}\n\nexport function completeSearch(location, instance, searchType) {\n return {\n type: COMPLETE_SEARCH,\n location,\n instance,\n searchType,\n };\n}\n\nexport function setSearchError(errorMessage) {\n return {\n type: SET_SEARCH_ERROR,\n errorMessage,\n };\n}\n\nexport function clearSearch() {\n return {\n type: CLEAR_SEARCH,\n };\n}\n\nexport function setGeocoderLocations(locations) {\n return {\n type: SET_GEOCODER_LOCATIONS,\n locations,\n };\n}\n\nexport function isSearchActive(url, instance, getState) {\n const state = getState();\n return state.search.url === url && state.search.instance === instance;\n}\n\nexport function runGeocoderSearch(\n getSearchUrl,\n instance,\n input,\n selectLocationAction,\n preprocessResults = null,\n) {\n const url = getSearchUrl(input);\n\n return (dispatch, getState) => {\n function isActive() {\n return isSearchActive(url, instance, getState);\n }\n\n dispatch(startGeocoderSearch(url, instance));\n\n return axios\n .get(url)\n .then(({ data }) => {\n const results = preprocessResults\n ? preprocessResults(data)\n : data;\n\n if (!isActive()) {\n return null;\n }\n\n if (!results.length) {\n return dispatch(failSearch(NO_PARCELS_MSG));\n }\n\n if (results.length > 1) {\n return dispatch(setGeocoderLocations(results));\n }\n\n const location = head(results);\n\n dispatch(completeSearch(location, instance, GEOCODER_SEARCH));\n\n return (\n selectLocationAction &&\n dispatch(selectLocationAction(location))\n );\n })\n .catch(() => {\n if (!isActive()) {\n return null;\n }\n\n return dispatch(failSearch(SERVER_FAILURE_MSG));\n });\n };\n}\n","import findIndex from 'lodash/findIndex';\nimport find from 'lodash/find';\nimport parseWkt from 'wellknown';\nimport moment from 'moment';\n\nexport function locationDisplayName(location) {\n return `${location.Parcel.Address} - ${location.Parcel.Owner1}`;\n}\n\nexport function wktToGeoJSON(wkt) {\n const geojson = parseWkt(wkt);\n\n return geojson;\n}\n\nexport function isInteger(x) {\n return x === parseInt(x, 10);\n}\n\nexport function formatInt(x) {\n return x.toLocaleString('en-US');\n}\n\nexport function formatCurrency(x) {\n return x.toLocaleString('en-US', { style: 'currency', currency: 'USD' });\n}\n\nexport function formatDateString(ds) {\n return moment(ds).format('MMM D YYYY');\n}\n\nexport function formatMobileDateString(ds) {\n return moment(ds).format('M/D/YYYY');\n}\n\nexport function findCAPAccountIndex(accountNumber, capAccounts) {\n return findIndex(capAccounts, 'AccountNumber', accountNumber);\n}\n\nexport function parseWaterAccountNumber(account) {\n return account.substring(3).replace(/-/g, '');\n}\n\n/**\n * Perform clean-up on geocoder results\n * @param {array} locations - geocoder results\n */\nexport function preprocessResults(locations) {\n // If there are multiple results that are not associated\n // with a parcel, just use the first one.\n if (locations.length > 1 && !locations[0].Parcel) {\n return [locations[0]];\n }\n\n return locations;\n}\n\n/**\n * Remove all results if the first result doesn't\n * contain parcel information\n * @param {array} locations - geocoder results\n */\nexport function discardResultsIfNoParcel(locations) {\n // If the first results doesn't have parcel information,\n // it's likely that the rest of the results don't have\n // parcel informatin either, or are not good matches\n // for the search term. In these cases, we discard all\n // of the results so that the user is prompted to try\n // a different search term.\n if (locations.length >= 1 && !locations[0].Parcel) {\n return [];\n }\n\n return locations;\n}\n\nexport function getSortedAccountCharges(accountIndex, chargeSummary) {\n const yearlyAccountCharges =\n chargeSummary.ParcelAccounts[accountIndex].YearlyAccountCharges;\n\n yearlyAccountCharges.sort(\n (a, b) =>\n Date.parse(b.RateSchedule.EndDate) -\n Date.parse(a.RateSchedule.EndDate),\n );\n\n return yearlyAccountCharges;\n}\n\nexport function getCurrentRatePeriod(chargeSummary) {\n if (\n chargeSummary &&\n chargeSummary.ParcelAccounts &&\n chargeSummary.ParcelAccounts.length\n ) {\n const charges = getSortedAccountCharges(0, chargeSummary);\n const currentCharge =\n find(charges, charge => charge.RateSchedule.IsCurrent) ||\n charges[0];\n return currentCharge.RateSchedule.EndDate;\n }\n return null;\n}\n\nexport function formatAccountAddress({\n StreetDir: streetDirection,\n StreetName: streetName,\n HouseNum: houseNumber,\n}) {\n return streetDirection\n ? `${houseNumber} ${streetDirection} ${streetName}`\n : `${houseNumber} ${streetName}`;\n}\n"],"sourceRoot":""}