@opentripplanner/core-utils 4.11.1 → 4.11.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/map.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/map.js"],"names":["currentPositionToLocation","currentPosition","error","coords","console","warn","lat","latitude","lon","longitude","category","stringToCoords","str","split","map","c","constructLocation","latlng","lng","formatStoredPlaceName","location","withDetails","displayName","type","name","detailText","matchLatLon","location1","location2","itineraryToTransitive","itin","companies","getRouteLabel","disableFlexArc","tdata","journeys","streetEdges","places","patterns","routes","stops","streetEdgeId","patternId","journey","journey_id","journey_name","segments","push","place_id","place_lat","legs","from","place_lon","length","to","forEach","leg","idx","mode","fromPlaceId","bikeShareId","vertexType","toPlaceId","segment","hailedCar","arc","edge_id","geometry","legGeometry","place_name","stopId","hasInterStopGeometry","interStopGeometry","hasLegGeometry","points","hasIntermediateStopGeometry","intermediateStops","ptnId","pattern","pattern_id","pattern_name","route_id","routeId","stop_id","stop_name","stop_lat","stop_lon","stop","i","routeLabel","routeShortName","agency_id","agencyId","route_short_name","route_long_name","routeLongName","route_type","routeType","route_color","routeColor","from_stop_index","to_stop_index","Object","values","isBikeshareStation","place","lastIndexOf","isEScooterStation","isCarWalkTransition","isValidLat","Number","isFinite","isValidLng","isValidLatLng","arr","Array","isArray"],"mappings":"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","sourcesContent":["import { getPlaceName, isTransit, isFlex, toSentenceCase } from \"./itinerary\";\n\nimport {\n coordsToString,\n getDetailText,\n latlngToString,\n logDeprecationWarning\n} from \"./deprecated\";\n\nexport { coordsToString, getDetailText, latlngToString };\n\nexport function currentPositionToLocation(currentPosition) {\n if (currentPosition.error || !currentPosition.coords) {\n console.warn(\n \"Cannot construct location from current position due to geolocation error or missing coordinates.\"\n );\n return null;\n }\n return {\n lat: currentPosition.coords.latitude,\n lon: currentPosition.coords.longitude,\n category: \"CURRENT_LOCATION\"\n };\n}\n\nexport function stringToCoords(str) {\n return (str && str.split(\",\").map(c => +c)) || [];\n}\n\nexport function constructLocation(latlng) {\n return {\n lat: latlng.lat,\n lon: latlng.lng\n };\n}\n\nexport function formatStoredPlaceName(location, withDetails = true) {\n if (withDetails) {\n logDeprecationWarning(\"the formatStoredPlaceName withDetails parameter\");\n }\n\n let displayName =\n location.type === \"home\" || location.type === \"work\"\n ? toSentenceCase(location.type)\n : location.name;\n if (withDetails) {\n const detailText = getDetailText(location);\n if (detailText) displayName += ` (${detailText})`;\n }\n return displayName;\n}\n\nexport function matchLatLon(location1, location2) {\n if (!location1 || !location2) return location1 === location2;\n return location1.lat === location2.lat && location1.lon === location2.lon;\n}\n\n/**\n * Converts an OTP itinerary object to a transtive.js itinerary object.\n * @param {*} itin Required OTP itinerary (see @opentripplanner/core-utils/types#itineraryType) to convert.\n * @param {*} companies Optional list of companies, used for labeling vehicle rental locations.\n * @param {*} getRouteLabel Optional function that takes an itinerary leg (see @opentripplanner/core-utils/types#legType)\n * and returns a string representing the route label to display for that leg.\n * @returns An itinerary in the transitive.js format.\n */\nexport function itineraryToTransitive(\n itin,\n companies,\n getRouteLabel,\n disableFlexArc\n) {\n const tdata = {\n journeys: [],\n streetEdges: [],\n places: [],\n patterns: [],\n routes: [],\n stops: []\n };\n const routes = {};\n const stops = {};\n let streetEdgeId = 0;\n let patternId = 0;\n\n const journey = {\n journey_id: \"itin\",\n // This string is not shown in the UI\n journey_name: \"Iterarary-derived Journey\",\n segments: []\n };\n\n // add 'from' and 'to' places to the tdata places array\n tdata.places.push({\n place_id: \"from\",\n place_lat: itin.legs[0].from.lat,\n place_lon: itin.legs[0].from.lon\n });\n tdata.places.push({\n place_id: \"to\",\n place_lat: itin.legs[itin.legs.length - 1].to.lat,\n place_lon: itin.legs[itin.legs.length - 1].to.lon\n });\n\n itin.legs.forEach((leg, idx) => {\n if (\n leg.mode === \"WALK\" ||\n leg.mode === \"BICYCLE\" ||\n leg.mode === \"CAR\" ||\n leg.mode === \"MICROMOBILITY\"\n ) {\n let fromPlaceId;\n if (leg.from.bikeShareId) {\n fromPlaceId = `bicycle_rent_station_${leg.from.bikeShareId}`;\n } else if (leg.from.vertexType === \"VEHICLERENTAL\") {\n fromPlaceId = `escooter_rent_station_${leg.from.name}`;\n } else if (\n leg.mode === \"CAR\" &&\n idx > 0 &&\n itin.legs[idx - 1].mode === \"WALK\"\n ) {\n // create a special place ID for car legs preceded by walking legs\n fromPlaceId = `itin_car_${streetEdgeId}_from`;\n } else {\n fromPlaceId = `itin_street_${streetEdgeId}_from`;\n }\n\n let toPlaceId;\n if (leg.to.bikeShareId) {\n toPlaceId = `bicycle_rent_station_${leg.to.bikeShareId}`;\n } else if (leg.to.vertexType === \"VEHICLERENTAL\") {\n toPlaceId = `escooter_rent_station_${leg.to.name}`;\n } else if (\n leg.mode === \"CAR\" &&\n idx < itin.legs.length - 1 &&\n itin.legs[idx + 1].mode === \"WALK\"\n ) {\n // create a special place ID for car legs followed by walking legs\n toPlaceId = `itin_car_${streetEdgeId}_to`;\n } else {\n toPlaceId = `itin_street_${streetEdgeId}_to`;\n }\n\n const segment = {\n type: leg.mode,\n streetEdges: [streetEdgeId],\n from: { type: \"PLACE\", place_id: fromPlaceId },\n to: { type: \"PLACE\", place_id: toPlaceId }\n };\n // For TNC segments, draw using an arc\n if (leg.mode === \"CAR\" && leg.hailedCar) segment.arc = true;\n journey.segments.push(segment);\n\n tdata.streetEdges.push({\n edge_id: streetEdgeId,\n geometry: leg.legGeometry\n });\n tdata.places.push({\n place_id: fromPlaceId,\n // Do not label the from place in addition to the to place. Otherwise,\n // in some cases (bike rental station) the label for a single place will\n // appear twice on the rendered transitive view.\n // See https://github.com/conveyal/trimet-mod-otp/issues/152\n // place_name: leg.from.name,\n place_lat: leg.from.lat,\n place_lon: leg.from.lon\n });\n tdata.places.push({\n place_id: toPlaceId,\n // This string is not shown in the UI\n place_name: getPlaceName(leg.to, companies),\n place_lat: leg.to.lat,\n place_lon: leg.to.lon\n });\n streetEdgeId++;\n }\n\n if (isTransit(leg.mode)) {\n // Flex routes sometimes have the same from and to IDs, but\n // these stops still need to be rendered separately!\n if (leg.from.stopId === leg.to.stopId) {\n leg.to.stopId = `${leg.to.stopId}_flexed_to`;\n }\n // determine if we have valid inter-stop geometry\n const hasInterStopGeometry = !!leg.interStopGeometry;\n const hasLegGeometry = !!leg.legGeometry?.points;\n const hasIntermediateStopGeometry =\n hasInterStopGeometry &&\n leg.intermediateStops &&\n leg.interStopGeometry.length === leg.intermediateStops.length + 1;\n\n // create leg-specific pattern\n const ptnId = `ptn_${patternId}`;\n const pattern = {\n pattern_id: ptnId,\n // This string is not shown in the UI\n pattern_name: `Pattern ${patternId}`,\n route_id: leg.routeId,\n stops: []\n };\n\n // add 'from' stop to stops dictionary and pattern object\n stops[leg.from.stopId] = {\n stop_id: leg.from.stopId,\n stop_name: leg.from.name,\n stop_lat: leg.from.lat,\n stop_lon: leg.from.lon\n };\n pattern.stops.push({ stop_id: leg.from.stopId });\n\n // add intermediate stops to stops dictionary and pattern object\n // If there is no intermediateStopGeometry, do not add the intermediate stops\n // as it will be straight lines instead of the nice legGeometry (but only if\n // the legGeometry exists).\n if (\n leg.intermediateStops &&\n (hasIntermediateStopGeometry || !hasLegGeometry)\n ) {\n leg.intermediateStops.forEach((stop, i) => {\n stops[stop.stopId] = {\n stop_id: stop.stopId,\n stop_name: stop.name,\n stop_lat: stop.lat,\n stop_lon: stop.lon\n };\n pattern.stops.push({\n stop_id: stop.stopId,\n geometry:\n hasIntermediateStopGeometry && leg.interStopGeometry[i].points\n });\n });\n }\n\n // add 'to' stop to stops dictionary and pattern object\n stops[leg.to.stopId] = {\n stop_id: leg.to.stopId,\n stop_name: leg.to.name,\n stop_lat: leg.to.lat,\n stop_lon: leg.to.lon\n };\n pattern.stops.push({\n stop_id: leg.to.stopId,\n geometry:\n // Some legs don't have intermediateStopGeometry, but do have valid legGeometry\n (hasInterStopGeometry || hasLegGeometry) &&\n (hasIntermediateStopGeometry\n ? leg.interStopGeometry[leg.interStopGeometry.length - 1].points\n : leg.legGeometry.points)\n });\n\n // add route to the route dictionary\n // with a custom route label if specified.\n const routeLabel =\n typeof getRouteLabel === \"function\"\n ? getRouteLabel(leg)\n : leg.routeShortName;\n routes[leg.routeId] = {\n agency_id: leg.agencyId,\n route_id: leg.routeId,\n route_short_name: routeLabel || \"\",\n route_long_name: leg.routeLongName || \"\",\n route_type: leg.routeType,\n route_color: leg.routeColor\n };\n\n // add the pattern to the tdata patterns array\n tdata.patterns.push(pattern);\n\n // add the pattern reference to the journey object\n journey.segments.push({\n arc:\n typeof disableFlexArc === \"undefined\" ? isFlex(leg) : !disableFlexArc,\n type: \"TRANSIT\",\n patterns: [\n {\n pattern_id: ptnId,\n from_stop_index: 0,\n to_stop_index: hasIntermediateStopGeometry\n ? leg.intermediateStops.length + 2 - 1\n : 1\n }\n ]\n });\n\n patternId++;\n }\n });\n\n // add the routes and stops to the tdata arrays\n tdata.routes.push(...Object.values(routes));\n tdata.stops.push(...Object.values(stops));\n\n // add the journey to the tdata journeys array\n tdata.journeys.push(journey);\n\n // console.log('derived tdata', tdata);\n return tdata;\n}\n\nexport function isBikeshareStation(place) {\n return place.place_id.lastIndexOf(\"bicycle_rent_station\") !== -1;\n}\n\nexport function isEScooterStation(place) {\n return place.place_id.lastIndexOf(\"escooter_rent_station\") !== -1;\n}\n\nexport function isCarWalkTransition(place) {\n return place.place_id.lastIndexOf(\"itin_car_\") !== -1;\n}\n\nexport function isValidLat(lat) {\n return Number.isFinite(lat) && lat >= -90 && lat <= 90;\n}\n\nexport function isValidLng(lng) {\n return Number.isFinite(lng) && lng >= -180 && lng <= 180;\n}\n\nexport function isValidLatLng(arr) {\n return (\n Array.isArray(arr) &&\n arr.length === 2 &&\n isValidLat(arr[0]) &&\n isValidLng(arr[1])\n );\n}\n"],"file":"map.js"}
1
+ {"version":3,"sources":["../src/map.js"],"names":["currentPositionToLocation","currentPosition","error","coords","console","warn","lat","latitude","lon","longitude","category","stringToCoords","str","split","map","c","constructLocation","latlng","lng","formatStoredPlaceName","location","withDetails","displayName","type","name","detailText","matchLatLon","location1","location2","itineraryToTransitive","itin","companies","getRouteLabel","disableFlexArc","tdata","journeys","streetEdges","places","patterns","routes","stops","streetEdgeId","patternId","journey","journey_id","journey_name","segments","push","place_id","place_lat","legs","from","place_lon","length","to","forEach","leg","idx","mode","fromPlaceId","bikeShareId","vertexType","toPlaceId","segment","hailedCar","arc","edge_id","geometry","legGeometry","place_name","stopId","hasInterStopGeometry","interStopGeometry","hasLegGeometry","points","hasIntermediateStopGeometry","intermediateStops","ptnId","pattern","pattern_id","pattern_name","route_id","routeId","stop_id","stop_name","stop_lat","stop_lon","stop","i","routeLabel","routeShortName","agency_id","agencyId","route_short_name","route_long_name","routeLongName","route_type","routeType","route_color","routeColor","from_stop_index","to_stop_index","Object","values","isBikeshareStation","place","lastIndexOf","isEScooterStation","isCarWalkTransition","isValidLat","Number","isFinite","isValidLng","isValidLatLng","arr","Array","isArray"],"mappings":"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","sourcesContent":["import {\n getPlaceName,\n isTransit,\n isFlex,\n toSentenceCase,\n isAccessMode\n} from \"./itinerary\";\n\nimport {\n coordsToString,\n getDetailText,\n latlngToString,\n logDeprecationWarning\n} from \"./deprecated\";\n\nexport { coordsToString, getDetailText, latlngToString };\n\nexport function currentPositionToLocation(currentPosition) {\n if (currentPosition.error || !currentPosition.coords) {\n console.warn(\n \"Cannot construct location from current position due to geolocation error or missing coordinates.\"\n );\n return null;\n }\n return {\n lat: currentPosition.coords.latitude,\n lon: currentPosition.coords.longitude,\n category: \"CURRENT_LOCATION\"\n };\n}\n\nexport function stringToCoords(str) {\n return (str && str.split(\",\").map(c => +c)) || [];\n}\n\nexport function constructLocation(latlng) {\n return {\n lat: latlng.lat,\n lon: latlng.lng\n };\n}\n\nexport function formatStoredPlaceName(location, withDetails = true) {\n if (withDetails) {\n logDeprecationWarning(\"the formatStoredPlaceName withDetails parameter\");\n }\n\n let displayName =\n location.type === \"home\" || location.type === \"work\"\n ? toSentenceCase(location.type)\n : location.name;\n if (withDetails) {\n const detailText = getDetailText(location);\n if (detailText) displayName += ` (${detailText})`;\n }\n return displayName;\n}\n\nexport function matchLatLon(location1, location2) {\n if (!location1 || !location2) return location1 === location2;\n return location1.lat === location2.lat && location1.lon === location2.lon;\n}\n\n/**\n * Converts an OTP itinerary object to a transtive.js itinerary object.\n * @param {*} itin Required OTP itinerary (see @opentripplanner/core-utils/types#itineraryType) to convert.\n * @param {*} companies Optional list of companies, used for labeling vehicle rental locations.\n * @param {*} getRouteLabel Optional function that takes an itinerary leg (see @opentripplanner/core-utils/types#legType)\n * and returns a string representing the route label to display for that leg.\n * @returns An itinerary in the transitive.js format.\n */\nexport function itineraryToTransitive(\n itin,\n companies,\n getRouteLabel,\n disableFlexArc\n) {\n const tdata = {\n journeys: [],\n streetEdges: [],\n places: [],\n patterns: [],\n routes: [],\n stops: []\n };\n const routes = {};\n const stops = {};\n let streetEdgeId = 0;\n let patternId = 0;\n\n const journey = {\n journey_id: \"itin\",\n // This string is not shown in the UI\n journey_name: \"Iterarary-derived Journey\",\n segments: []\n };\n\n // add 'from' and 'to' places to the tdata places array\n tdata.places.push({\n place_id: \"from\",\n place_lat: itin.legs[0].from.lat,\n place_lon: itin.legs[0].from.lon\n });\n tdata.places.push({\n place_id: \"to\",\n place_lat: itin.legs[itin.legs.length - 1].to.lat,\n place_lon: itin.legs[itin.legs.length - 1].to.lon\n });\n\n itin.legs.forEach((leg, idx) => {\n if (isAccessMode(leg.mode)) {\n let fromPlaceId;\n if (leg.from.bikeShareId) {\n fromPlaceId = `bicycle_rent_station_${leg.from.bikeShareId}`;\n // TODO: does this need to change to be OTP2 compatible?\n } else if (leg.from.vertexType === \"VEHICLERENTAL\") {\n fromPlaceId = `escooter_rent_station_${leg.from.name}`;\n } else if (\n leg.mode === \"CAR\" &&\n idx > 0 &&\n itin.legs[idx - 1].mode === \"WALK\"\n ) {\n // create a special place ID for car legs preceded by walking legs\n fromPlaceId = `itin_car_${streetEdgeId}_from`;\n } else {\n fromPlaceId = `itin_street_${streetEdgeId}_from`;\n }\n\n let toPlaceId;\n if (leg.to.bikeShareId) {\n toPlaceId = `bicycle_rent_station_${leg.to.bikeShareId}`;\n } else if (leg.to.vertexType === \"VEHICLERENTAL\") {\n toPlaceId = `escooter_rent_station_${leg.to.name}`;\n } else if (\n leg.mode === \"CAR\" &&\n idx < itin.legs.length - 1 &&\n itin.legs[idx + 1].mode === \"WALK\"\n ) {\n // create a special place ID for car legs followed by walking legs\n toPlaceId = `itin_car_${streetEdgeId}_to`;\n } else {\n toPlaceId = `itin_street_${streetEdgeId}_to`;\n }\n\n const segment = {\n type: leg.mode,\n streetEdges: [streetEdgeId],\n from: { type: \"PLACE\", place_id: fromPlaceId },\n to: { type: \"PLACE\", place_id: toPlaceId }\n };\n // For TNC segments, draw using an arc\n if (leg.mode === \"CAR\" && leg.hailedCar) segment.arc = true;\n journey.segments.push(segment);\n\n tdata.streetEdges.push({\n edge_id: streetEdgeId,\n geometry: leg.legGeometry\n });\n tdata.places.push({\n place_id: fromPlaceId,\n // Do not label the from place in addition to the to place. Otherwise,\n // in some cases (bike rental station) the label for a single place will\n // appear twice on the rendered transitive view.\n // See https://github.com/conveyal/trimet-mod-otp/issues/152\n // place_name: leg.from.name,\n place_lat: leg.from.lat,\n place_lon: leg.from.lon\n });\n tdata.places.push({\n place_id: toPlaceId,\n // This string is not shown in the UI\n place_name: getPlaceName(leg.to, companies),\n place_lat: leg.to.lat,\n place_lon: leg.to.lon\n });\n streetEdgeId++;\n }\n\n if (isTransit(leg.mode)) {\n // Flex routes sometimes have the same from and to IDs, but\n // these stops still need to be rendered separately!\n if (leg.from.stopId === leg.to.stopId) {\n leg.to.stopId = `${leg.to.stopId}_flexed_to`;\n }\n // determine if we have valid inter-stop geometry\n const hasInterStopGeometry = !!leg.interStopGeometry;\n const hasLegGeometry = !!leg.legGeometry?.points;\n const hasIntermediateStopGeometry =\n hasInterStopGeometry &&\n leg.intermediateStops &&\n leg.interStopGeometry.length === leg.intermediateStops.length + 1;\n\n // create leg-specific pattern\n const ptnId = `ptn_${patternId}`;\n const pattern = {\n pattern_id: ptnId,\n // This string is not shown in the UI\n pattern_name: `Pattern ${patternId}`,\n route_id: leg.routeId,\n stops: []\n };\n\n // add 'from' stop to stops dictionary and pattern object\n stops[leg.from.stopId] = {\n stop_id: leg.from.stopId,\n stop_name: leg.from.name,\n stop_lat: leg.from.lat,\n stop_lon: leg.from.lon\n };\n pattern.stops.push({ stop_id: leg.from.stopId });\n\n // add intermediate stops to stops dictionary and pattern object\n // If there is no intermediateStopGeometry, do not add the intermediate stops\n // as it will be straight lines instead of the nice legGeometry (but only if\n // the legGeometry exists).\n if (\n leg.intermediateStops &&\n (hasIntermediateStopGeometry || !hasLegGeometry)\n ) {\n leg.intermediateStops.forEach((stop, i) => {\n stops[stop.stopId] = {\n stop_id: stop.stopId,\n stop_name: stop.name,\n stop_lat: stop.lat,\n stop_lon: stop.lon\n };\n pattern.stops.push({\n stop_id: stop.stopId,\n geometry:\n hasIntermediateStopGeometry && leg.interStopGeometry[i].points\n });\n });\n }\n\n // add 'to' stop to stops dictionary and pattern object\n stops[leg.to.stopId] = {\n stop_id: leg.to.stopId,\n stop_name: leg.to.name,\n stop_lat: leg.to.lat,\n stop_lon: leg.to.lon\n };\n pattern.stops.push({\n stop_id: leg.to.stopId,\n geometry:\n // Some legs don't have intermediateStopGeometry, but do have valid legGeometry\n (hasInterStopGeometry || hasLegGeometry) &&\n (hasIntermediateStopGeometry\n ? leg.interStopGeometry[leg.interStopGeometry.length - 1].points\n : leg.legGeometry.points)\n });\n\n // add route to the route dictionary\n // with a custom route label if specified.\n const routeLabel =\n typeof getRouteLabel === \"function\"\n ? getRouteLabel(leg)\n : leg.routeShortName;\n routes[leg.routeId] = {\n agency_id: leg.agencyId,\n route_id: leg.routeId,\n route_short_name: routeLabel || \"\",\n route_long_name: leg.routeLongName || \"\",\n route_type: leg.routeType,\n route_color: leg.routeColor\n };\n\n // add the pattern to the tdata patterns array\n tdata.patterns.push(pattern);\n\n // add the pattern reference to the journey object\n journey.segments.push({\n arc:\n typeof disableFlexArc === \"undefined\" ? isFlex(leg) : !disableFlexArc,\n type: \"TRANSIT\",\n patterns: [\n {\n pattern_id: ptnId,\n from_stop_index: 0,\n to_stop_index: hasIntermediateStopGeometry\n ? leg.intermediateStops.length + 2 - 1\n : 1\n }\n ]\n });\n\n patternId++;\n }\n });\n\n // add the routes and stops to the tdata arrays\n tdata.routes.push(...Object.values(routes));\n tdata.stops.push(...Object.values(stops));\n\n // add the journey to the tdata journeys array\n tdata.journeys.push(journey);\n\n // console.log('derived tdata', tdata);\n return tdata;\n}\n\nexport function isBikeshareStation(place) {\n return place.place_id.lastIndexOf(\"bicycle_rent_station\") !== -1;\n}\n\nexport function isEScooterStation(place) {\n return place.place_id.lastIndexOf(\"escooter_rent_station\") !== -1;\n}\n\nexport function isCarWalkTransition(place) {\n return place.place_id.lastIndexOf(\"itin_car_\") !== -1;\n}\n\nexport function isValidLat(lat) {\n return Number.isFinite(lat) && lat >= -90 && lat <= 90;\n}\n\nexport function isValidLng(lng) {\n return Number.isFinite(lng) && lng >= -180 && lng <= 180;\n}\n\nexport function isValidLatLng(arr) {\n return (\n Array.isArray(arr) &&\n arr.length === 2 &&\n isValidLat(arr[0]) &&\n isValidLng(arr[1])\n );\n}\n"],"file":"map.js"}
@@ -178,8 +178,8 @@ const queryParams = [{
178
178
  * dropdown or the OTP2 walk reluctance slider
179
179
  */
180
180
  !query.otp2 && query.mode && (0, _itinerary.hasTransit)(query.mode) && query.mode.indexOf("WALK") !== -1,
181
- default: 1207,
182
- // 3/4 mi.
181
+ default: 1609,
182
+ // 1 mi.
183
183
  selector: "DROPDOWN",
184
184
  label: "Maximum Walk",
185
185
  options: [{
@@ -474,7 +474,7 @@ const queryParams = [{
474
474
  label: "E-scooter Power",
475
475
  // this configuration should only be allowed for personal E-scooters as these
476
476
  // settings will be defined by the vehicle type of an E-scooter being rented
477
- applicable: query => query.mode && query.mode.indexOf("MICROMOBILITY") !== -1 && query.mode.indexOf("MICROMOBILITY_RENT") === -1,
477
+ applicable: query => query.mode && query.mode.indexOf("MICROMOBILITY") !== -1 && query.mode.indexOf("MICROMOBILITY_RENT") === -1 && query.mode.indexOf("SCOOTER") === -1,
478
478
  options: [{
479
479
  text: "Kid's hoverboard (6mph)",
480
480
  value: 125
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/query-params.js"],"names":["formatPlace","location","alternateName","name","lat","lon","storedSettings","queryParams","routingTypes","default","itineraryRewrite","value","fromPlace","profileRewrite","from","toPlace","to","getCurrentDate","getCurrentTime","arriveBy","accessModes","directModes","transitModes","length","split","forEach","m","push","applicable","query","otp2","mode","indexOf","selector","label","options","text","maxWalkDistance","maxBikeDistance","opts","splice","optimize","low","high","step","labelLow","labelHigh","maxEScooterDistance","watts","maximumMicromobilitySpeed","weight","TYPICAL_RIDER_WEIGHT","icon","config","modes","configModes","concat","some","configMode","find","showWheelchairSetting","company","companies","includes","places","Array","isArray","intermediatePlaces","map","place","undefined","param","userDefaultOverride","getCustomQueryParams","customizations","clonedParams","Object","keys","k","paramIndex","findIndex"],"mappings":"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","sourcesContent":["// TODO: Remove this entire file, as it is deprecated in favor of i18n-queryParams within\n// the SettingsSelector package\n\n// This is only used within stories\nimport cloneDeep from \"lodash.clonedeep\";\nimport React from \"react\";\nimport { Wheelchair } from \"@styled-icons/foundation/Wheelchair\";\n\nimport {\n isTransit,\n isAccessMode,\n isCar,\n hasTransit,\n hasBike,\n hasMicromobility\n} from \"./itinerary\";\nimport { getItem } from \"./storage\";\nimport { getCurrentDate, getCurrentTime } from \"./time\";\n\n/**\n * name: the default name of the parameter used for internal reference and API calls\n *\n * routingTypes: array of routing type(s) (ITINERARY, PROFILE, or both) this param applies to\n *\n * applicable: an optional function (accepting the current full query as a\n * parameter) indicating whether this query parameter is applicable to the query.\n * (Applicability is assumed if this function is not provided.)\n *\n * default: the default value for this parameter. The default can be also be a\n * function that gets executed when accessing the default value.\n *\n * itineraryRewrite: an optional function for translating the key and/or value\n * for ITINERARY mode only (e.g. 'to' is rewritten as 'toPlace'). Accepts the\n * initial internal value as a function parameter.\n *\n * profileRewrite: an optional function for translating the value for PROFILE mode\n *\n * label: a text label for for onscreen display. May either be a text string or a\n * function (accepting the current full query as a parameter) returning a string\n *\n * selector: the default type of UI selector to use in the form. Can be one of:\n * - DROPDOWN: a standard drop-down menu selector\n *\n * options: an array of text/value pairs used with a dropdown selector\n *\n * TODO: validation system for rewrite functions and/or better user documentation\n * TODO: alphabetize below list\n */\n\n// FIXME: Use for parsing URL values?\n// const stringToLocation = string => {\n// const split = string.split(',')\n// return split.length === 2\n// ? {lat: split[0], lon: split[1]}\n// : {lat: null, lon: null}\n// }\n\n/**\n * Format location object as string for use in fromPlace or toPlace query param.\n */\nexport function formatPlace(location, alternateName) {\n if (!location) return null;\n const name =\n location.name ||\n `${alternateName ? `${alternateName} ` : \"\"}(${location.lat},${\n location.lon\n })`;\n // This string is not language-specific\n return `${name}::${location.lat},${location.lon}`;\n}\n\n// Load stored default query settings from local storage\nconst storedSettings = getItem(\"defaultQuery\", {});\n\nconst queryParams = [\n {\n /* from - the trip origin. stored internally as a location (lat/lon/name) object */\n name: \"from\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: null,\n itineraryRewrite: value => ({ fromPlace: formatPlace(value) }),\n profileRewrite: value => ({ from: { lat: value.lat, lon: value.lon } })\n // FIXME: Use for parsing URL values?\n // fromURL: stringToLocation\n },\n\n {\n /* to - the trip destination. stored internally as a location (lat/lon/name) object */\n name: \"to\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: null,\n itineraryRewrite: value => ({ toPlace: formatPlace(value) }),\n profileRewrite: value => ({ to: { lat: value.lat, lon: value.lon } })\n // FIXME: Use for parsing URL values?\n // fromURL: stringToLocation\n },\n\n {\n /* date - the date of travel, in MM-DD-YYYY format */\n name: \"date\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: getCurrentDate\n },\n\n {\n /* time - the arrival/departure time for an itinerary trip, in HH:mm format */\n name: \"time\",\n routingTypes: [\"ITINERARY\"],\n default: getCurrentTime\n },\n\n {\n /* departArrive - whether this is a depart-at, arrive-by, or leave-now trip */\n name: \"departArrive\",\n routingTypes: [\"ITINERARY\"],\n default: \"NOW\",\n itineraryRewrite: value => ({ arriveBy: value === \"ARRIVE\" })\n },\n\n {\n /* startTime - the start time for a profile trip, in HH:mm format */\n name: \"startTime\",\n routingTypes: [\"PROFILE\"],\n default: \"07:00\"\n },\n\n {\n /* endTime - the end time for a profile trip, in HH:mm format */\n name: \"endTime\",\n routingTypes: [\"PROFILE\"],\n default: \"09:00\"\n },\n\n {\n /* mode - the allowed modes for a trip, as a comma-separated list */\n name: \"mode\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: \"WALK,TRANSIT\", // TODO: make this dependent on routingType?\n profileRewrite: value => {\n const accessModes = [];\n const directModes = [];\n const transitModes = [];\n\n if (value && value.length > 0) {\n value.split(\",\").forEach(m => {\n if (isTransit(m)) transitModes.push(m);\n if (isAccessMode(m)) {\n accessModes.push(m);\n // TODO: make configurable whether direct-driving is considered\n if (!isCar(m)) directModes.push(m);\n }\n });\n }\n\n return { accessModes, directModes, transitModes };\n }\n },\n\n {\n /* showIntermediateStops - whether response should include intermediate stops for transit legs */\n name: \"showIntermediateStops\",\n routingTypes: [\"ITINERARY\"],\n default: true\n },\n\n {\n /* maxWalkDistance - the maximum distance in meters the user will walk to transit. */\n name: \"maxWalkDistance\",\n routingTypes: [\"ITINERARY\"],\n applicable: query =>\n /* Since this query variable isn't in this list, it's not included in the generated query\n * It does however allow us to determine if we should show the OTP1 max walk distance\n * dropdown or the OTP2 walk reluctance slider\n */\n !query.otp2 &&\n query.mode &&\n hasTransit(query.mode) &&\n query.mode.indexOf(\"WALK\") !== -1,\n default: 1207, // 3/4 mi.\n selector: \"DROPDOWN\",\n label: \"Maximum Walk\",\n options: [\n {\n text: \"1/10 mile\",\n value: 160.9\n },\n {\n text: \"1/4 mile\",\n value: 402.3\n },\n {\n text: \"1/2 mile\",\n value: 804.7\n },\n {\n text: \"3/4 mile\",\n value: 1207\n },\n {\n text: \"1 mile\",\n value: 1609\n },\n {\n text: \"2 miles\",\n value: 3219\n },\n {\n text: \"5 miles\",\n value: 8047\n }\n ]\n },\n\n {\n /* maxBikeDistance - the maximum distance in meters the user will bike. Not\n * actually an OTP parameter (maxWalkDistance doubles for biking) but we\n * store it separately internally in order to allow different default values,\n * options, etc. Translated to 'maxWalkDistance' via the rewrite function.\n */\n name: \"maxBikeDistance\",\n routingTypes: [\"ITINERARY\"],\n applicable: query =>\n query.mode &&\n hasTransit(query.mode) &&\n query.mode.indexOf(\"BICYCLE\") !== -1,\n default: 4828, // 3 mi.\n selector: \"DROPDOWN\",\n label: \"Maximum Bike\",\n options: [\n {\n text: \"1/4 mile\",\n value: 402.3\n },\n {\n text: \"1/2 mile\",\n value: 804.7\n },\n {\n text: \"3/4 mile\",\n value: 1207\n },\n {\n text: \"1 mile\",\n value: 1609\n },\n {\n text: \"2 miles\",\n value: 3219\n },\n {\n text: \"3 miles\",\n value: 4828\n },\n {\n text: \"5 miles\",\n value: 8047\n },\n {\n text: \"10 miles\",\n value: 16093\n },\n {\n text: \"20 miles\",\n value: 32187\n },\n {\n text: \"30 miles\",\n value: 48280\n }\n ],\n itineraryRewrite: value => ({\n maxWalkDistance: value,\n // ensures that the value is repopulated when loaded from URL params\n maxBikeDistance: value\n })\n },\n\n {\n /* optimize -- how to optimize a trip (non-bike, non-micromobility trips) */\n name: \"optimize\",\n applicable: query =>\n !query.otp2 && hasTransit(query.mode) && !hasBike(query.mode),\n routingTypes: [\"ITINERARY\"],\n default: \"QUICK\",\n selector: \"DROPDOWN\",\n label: \"Optimize for\",\n options: [\n {\n text: \"Speed\",\n value: \"QUICK\"\n },\n {\n text: \"Fewest Transfers\",\n value: \"TRANSFERS\"\n }\n ]\n },\n\n {\n /* optimizeBike -- how to optimize an bike-based trip */\n name: \"optimizeBike\",\n applicable: query => !query.otp2 && hasBike(query.mode),\n routingTypes: [\"ITINERARY\"],\n default: \"SAFE\",\n selector: \"DROPDOWN\",\n label: \"Optimize for\",\n options: query => {\n const opts = [\n {\n text: \"Speed\",\n value: \"QUICK\"\n },\n {\n text: \"Bike-Friendly Trip\",\n value: \"SAFE\"\n },\n {\n text: \"Flat Trip\",\n value: \"FLAT\"\n }\n ];\n\n // Include transit-specific option, if applicable\n if (hasTransit(query.mode)) {\n opts.splice(1, 0, {\n text: \"Fewest Transfers\",\n value: \"TRANSFERS\"\n });\n }\n\n return opts;\n },\n itineraryRewrite: value => ({ optimize: value })\n },\n\n {\n /* maxWalkTime -- the maximum time the user will spend walking in minutes */\n name: \"maxWalkTime\",\n routingTypes: [\"PROFILE\"],\n default: 15,\n selector: \"DROPDOWN\",\n label: \"Max Walk Time\",\n applicable: query =>\n query.mode && hasTransit(query.mode) && query.mode.indexOf(\"WALK\") !== -1,\n options: [\n {\n text: \"5 minutes\",\n value: 5\n },\n {\n text: \"10 minutes\",\n value: 10\n },\n {\n text: \"15 minutes\",\n value: 15\n },\n {\n text: \"20 minutes\",\n value: 20\n },\n {\n text: \"30 minutes\",\n value: 30\n },\n {\n text: \"45 minutes\",\n value: 45\n },\n {\n text: \"1 hour\",\n value: 60\n }\n ]\n },\n\n {\n /* walkSpeed -- the user's walking speed in m/s */\n name: \"walkSpeed\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: 1.34,\n selector: \"DROPDOWN\",\n label: \"Walk Speed\",\n applicable: query => query.mode && query.mode.indexOf(\"WALK\") !== -1,\n options: [\n {\n text: \"2 MPH\",\n value: 0.89\n },\n {\n text: \"3 MPH\",\n value: 1.34\n },\n {\n text: \"4 MPH\",\n value: 1.79\n }\n ]\n },\n\n {\n name: \"walkReluctance\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n selector: \"SLIDER\",\n low: 0.5,\n high: 20,\n step: 0.5,\n label: \"walk reluctance\",\n labelLow: \"More Walking\",\n labelHigh: \"More Transit\",\n applicable: query =>\n /* Since this query variable isn't in this list, it's not included in the generated query\n * It does however allow us to determine if we should show the OTP1 max walk distance\n * dropdown or the OTP2 walk reluctance slider\n */\n !!query.otp2 && query.mode && query.mode.indexOf(\"WALK\") !== -1\n },\n {\n /* maxBikeTime -- the maximum time the user will spend biking in minutes */\n name: \"maxBikeTime\",\n routingTypes: [\"PROFILE\"],\n default: 20,\n selector: \"DROPDOWN\",\n label: \"Max Bike Time\",\n applicable: query =>\n query.mode &&\n hasTransit(query.mode) &&\n query.mode.indexOf(\"BICYCLE\") !== -1,\n options: [\n {\n text: \"5 minutes\",\n value: 5\n },\n {\n text: \"10 minutes\",\n value: 10\n },\n {\n text: \"15 minutes\",\n value: 15\n },\n {\n text: \"20 minutes\",\n value: 20\n },\n {\n text: \"30 minutes\",\n value: 30\n },\n {\n text: \"45 minutes\",\n value: 45\n },\n {\n text: \"1 hour\",\n value: 60\n }\n ]\n },\n\n {\n /* bikeSpeed -- the user's bikeSpeed speed in m/s */\n name: \"bikeSpeed\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: 3.58,\n selector: \"DROPDOWN\",\n label: \"Bicycle Speed\",\n applicable: query => query.mode && query.mode.indexOf(\"BICYCLE\") !== -1,\n options: [\n {\n text: \"6 MPH\",\n value: 2.68\n },\n {\n text: \"8 MPH\",\n value: 3.58\n },\n {\n text: \"10 MPH\",\n value: 4.47\n },\n {\n text: \"12 MPH\",\n value: 5.36\n }\n ]\n },\n\n {\n /* maxEScooterDistance - the maximum distance in meters the user will ride\n * an E-scooter. Not actually an OTP parameter (maxWalkDistance doubles for\n * any non-transit mode except for car) but we store it separately\n * internally in order to allow different default values, options, etc.\n * Translated to 'maxWalkDistance' via the rewrite function.\n */\n name: \"maxEScooterDistance\",\n routingTypes: [\"ITINERARY\"],\n applicable: query =>\n query.mode && hasTransit(query.mode) && hasMicromobility(query.mode),\n default: 4828, // 3 mi.\n selector: \"DROPDOWN\",\n label: \"Maximum E-scooter Distance\",\n options: [\n {\n text: \"1/4 mile\",\n value: 402.3\n },\n {\n text: \"1/2 mile\",\n value: 804.7\n },\n {\n text: \"3/4 mile\",\n value: 1207\n },\n {\n text: \"1 mile\",\n value: 1609\n },\n {\n text: \"2 miles\",\n value: 3219\n },\n {\n text: \"3 miles\",\n value: 4828\n },\n {\n text: \"5 miles\",\n value: 8047\n },\n {\n text: \"10 miles\",\n value: 16093\n },\n {\n text: \"20 miles\",\n value: 32187\n },\n {\n text: \"30 miles\",\n value: 48280\n }\n ],\n itineraryRewrite: value => ({\n maxWalkDistance: value,\n // ensures that the value is repopulated when loaded from URL params\n maxEScooterDistance: value\n })\n },\n\n {\n /* bikeSpeed -- the user's bikeSpeed speed in m/s */\n name: \"watts\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: 250,\n selector: \"DROPDOWN\",\n label: \"E-scooter Power\",\n // this configuration should only be allowed for personal E-scooters as these\n // settings will be defined by the vehicle type of an E-scooter being rented\n applicable: query =>\n query.mode &&\n query.mode.indexOf(\"MICROMOBILITY\") !== -1 &&\n query.mode.indexOf(\"MICROMOBILITY_RENT\") === -1,\n options: [\n {\n text: \"Kid's hoverboard (6mph)\",\n value: 125\n },\n {\n text: \"Entry-level scooter (11mph)\",\n value: 250\n },\n {\n text: \"Robust E-scooter (18mph)\",\n value: 500\n },\n {\n text: \"Powerful E-scooter (24mph)\",\n value: 1500\n }\n ],\n // rewrite a few other values to add some baseline assumptions about the\n // vehicle\n itineraryRewrite: value => {\n const watts = value;\n // the maximum cruising and downhill speed. Units in m/s\n let maximumMicromobilitySpeed;\n let weight;\n // see https://en.wikipedia.org/wiki/Human_body_weight#Average_weight_around_the_world\n // estimate is for an average North American human with clothes and stuff\n // units are in kg\n const TYPICAL_RIDER_WEIGHT = 90;\n switch (watts) {\n case 125:\n // exemplar: Swagtron Turbo 5 hoverboard (https://swagtron.com/product/recertified-swagtron-turbo-five-hoverboard-classic/)\n maximumMicromobilitySpeed = 2.8; // ~= 6mph\n weight = TYPICAL_RIDER_WEIGHT + 9;\n break;\n case 250:\n // exemplar: Xiaomi M365 (https://www.gearbest.com/skateboard/pp_596618.html)\n maximumMicromobilitySpeed = 5; // ~= 11.5mph\n weight = TYPICAL_RIDER_WEIGHT + 12.5;\n break;\n case 500:\n // exemplar: Razor EcoSmart Metro (https://www.amazon.com/Razor-EcoSmart-Metro-Electric-Scooter/dp/B002ZDAEIS?SubscriptionId=AKIAJMXJ2YFJTEDLQMUQ&tag=digitren08-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=B002ZDAEIS&ascsubtag=15599460143449ocb)\n maximumMicromobilitySpeed = 8; // ~= 18mph\n weight = TYPICAL_RIDER_WEIGHT + 30;\n break;\n case 1000:\n // exemplar: Boosted Rev (https://boostedboards.com/vehicles/scooters/boosted-rev)\n maximumMicromobilitySpeed = 11; // ~= 24mph\n weight = TYPICAL_RIDER_WEIGHT + 21;\n break;\n default:\n break;\n }\n return { maximumMicromobilitySpeed, watts, weight };\n }\n },\n\n {\n /* ignoreRealtimeUpdates -- if true, do not use realtime updates in routing */\n name: \"ignoreRealtimeUpdates\",\n routingTypes: [\"ITINERARY\"],\n default: false\n },\n\n {\n /* companies -- tnc companies to query */\n name: \"companies\",\n routingTypes: [\"ITINERARY\"]\n },\n\n {\n /* wheelchair -- whether the user requires a wheelchair-accessible trip */\n name: \"wheelchair\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: false,\n selector: \"CHECKBOX\",\n label: \"Prefer Wheelchair Accessible Routes\",\n icon: <Wheelchair />,\n applicable: (query, config) => {\n if (!query.mode || !config.modes) return false;\n const configModes = (config.modes.accessModes || []).concat(\n config.modes.transitModes || []\n );\n return query.mode.split(\",\").some(mode => {\n const configMode = configModes.find(m => m.mode === mode);\n if (!configMode || !configMode.showWheelchairSetting) return false;\n if (\n configMode.company &&\n (!query.companies ||\n !query.companies.split(\",\").includes(configMode.company))\n )\n return false;\n return true;\n });\n }\n },\n\n {\n name: \"bannedRoutes\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"numItineraries\",\n routingTypes: [\"ITINERARY\"],\n default: 3\n },\n {\n name: \"intermediatePlaces\",\n default: [],\n routingTypes: [\"ITINERARY\"],\n itineraryRewrite: places =>\n Array.isArray(places) && places.length > 0\n ? {\n intermediatePlaces: places.map(place => formatPlace(place))\n }\n : undefined\n },\n {\n // Time penalty in seconds the requester is willing to accept in order to\n // complete journey on preferred route. I.e., number of seconds that we are\n // willing to wait for the preferred route.\n name: \"otherThanPreferredRoutesPenalty\",\n default: 15 * 60, // 15 minutes\n routingTypes: [\"ITINERARY\"]\n },\n // Below are less commonly used query params included so that in case they are\n // passed in a query parameter they do not get filtered out from the ultimate\n // API request.\n {\n name: \"preferredRoutes\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"maxPreTransitTime\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"waitReluctance\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"driveDistanceReluctance\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"driveTimeReluctance\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"waitAtBeginningFactor\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bikeSwitchTime\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bikeSwitchCost\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"minTransferTime\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"preferredAgencies\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"unpreferredRoutes\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"unpreferredAgencies\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"walkBoardCost\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bikeBoardCost\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"whiteListedRoutes\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bannedAgencies\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"whiteListedAgencies\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bannedTrips\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bannedStops\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bannedStopsHard\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"transferPenalty\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"nonpreferredTransferPenalty\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"maxTransfers\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"batch\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"startTransitStopId\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"startTransitTripId\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"clampInitialWait\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"reverseOptimizeOnTheFly\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"boardSlack\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"alightSlack\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"locale\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"disableRemainingWeightHeuristic\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"flexFlagStopBufferSize\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"flexUseReservationServices\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"flexUseEligibilityServices\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"flexIgnoreDrtAdvanceBookMin\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"maxHours\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"useRequestedDateTimeInMaxHours\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"disableAlertFiltering\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"geoidElevation\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"invalidDateStrategy\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"minTransitDistance\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"searchTimeout\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"pathComparator\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"onlyTransitTrips\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"minimumMicromobilitySpeed\",\n routingTypes: [\"ITINERARY\"]\n }\n];\n// Iterate over stored settings and update query param defaults.\n// FIXME: this does not get updated if the user defaults are cleared\nqueryParams.forEach(param => {\n if (param.name in storedSettings) {\n param.default = storedSettings[param.name];\n param.userDefaultOverride = true;\n }\n});\n\nexport default queryParams;\n\n/**\n * You can customize the queryParams labels and options, and labels and values for each option.\n * @param customizations The optional customizations to apply: an object whose fields\n * correspond to the items in queryParams with the corresponding name,\n * the value for those fields being an object which fields (label, options...)\n * will override the originals.\n * Example:\n * {\n * // Matches the name param\n * maxWalkDistance: {\n * // Any fields that should be overridden go here\n * options: [\n * // ...new options\n * ],\n * default: 500,\n * label: \"max walk dist\"\n * }\n * }\n * @returns A copy of the default queryParams that has the given customizations applied.\n * If no customizations parameter is provided, returns the queryParams object itself.\n */\nexport function getCustomQueryParams(customizations) {\n if (!customizations) return queryParams;\n\n const clonedParams = cloneDeep(queryParams);\n Object.keys(customizations).forEach(k => {\n // Merge fields into the cloned object\n const paramIndex = clonedParams.findIndex(param => param.name === k);\n if (paramIndex !== -1) {\n clonedParams[paramIndex] = {\n ...clonedParams[paramIndex],\n ...customizations[k]\n };\n }\n });\n return clonedParams;\n}\n"],"file":"query-params.js"}
1
+ {"version":3,"sources":["../src/query-params.js"],"names":["formatPlace","location","alternateName","name","lat","lon","storedSettings","queryParams","routingTypes","default","itineraryRewrite","value","fromPlace","profileRewrite","from","toPlace","to","getCurrentDate","getCurrentTime","arriveBy","accessModes","directModes","transitModes","length","split","forEach","m","push","applicable","query","otp2","mode","indexOf","selector","label","options","text","maxWalkDistance","maxBikeDistance","opts","splice","optimize","low","high","step","labelLow","labelHigh","maxEScooterDistance","watts","maximumMicromobilitySpeed","weight","TYPICAL_RIDER_WEIGHT","icon","config","modes","configModes","concat","some","configMode","find","showWheelchairSetting","company","companies","includes","places","Array","isArray","intermediatePlaces","map","place","undefined","param","userDefaultOverride","getCustomQueryParams","customizations","clonedParams","Object","keys","k","paramIndex","findIndex"],"mappings":"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","sourcesContent":["// TODO: Remove this entire file, as it is deprecated in favor of i18n-queryParams within\n// the SettingsSelector package\n\n// This is only used within stories\nimport cloneDeep from \"lodash.clonedeep\";\nimport React from \"react\";\nimport { Wheelchair } from \"@styled-icons/foundation/Wheelchair\";\n\nimport {\n isTransit,\n isAccessMode,\n isCar,\n hasTransit,\n hasBike,\n hasMicromobility\n} from \"./itinerary\";\nimport { getItem } from \"./storage\";\nimport { getCurrentDate, getCurrentTime } from \"./time\";\n\n/**\n * name: the default name of the parameter used for internal reference and API calls\n *\n * routingTypes: array of routing type(s) (ITINERARY, PROFILE, or both) this param applies to\n *\n * applicable: an optional function (accepting the current full query as a\n * parameter) indicating whether this query parameter is applicable to the query.\n * (Applicability is assumed if this function is not provided.)\n *\n * default: the default value for this parameter. The default can be also be a\n * function that gets executed when accessing the default value.\n *\n * itineraryRewrite: an optional function for translating the key and/or value\n * for ITINERARY mode only (e.g. 'to' is rewritten as 'toPlace'). Accepts the\n * initial internal value as a function parameter.\n *\n * profileRewrite: an optional function for translating the value for PROFILE mode\n *\n * label: a text label for for onscreen display. May either be a text string or a\n * function (accepting the current full query as a parameter) returning a string\n *\n * selector: the default type of UI selector to use in the form. Can be one of:\n * - DROPDOWN: a standard drop-down menu selector\n *\n * options: an array of text/value pairs used with a dropdown selector\n *\n * TODO: validation system for rewrite functions and/or better user documentation\n * TODO: alphabetize below list\n */\n\n// FIXME: Use for parsing URL values?\n// const stringToLocation = string => {\n// const split = string.split(',')\n// return split.length === 2\n// ? {lat: split[0], lon: split[1]}\n// : {lat: null, lon: null}\n// }\n\n/**\n * Format location object as string for use in fromPlace or toPlace query param.\n */\nexport function formatPlace(location, alternateName) {\n if (!location) return null;\n const name =\n location.name ||\n `${alternateName ? `${alternateName} ` : \"\"}(${location.lat},${\n location.lon\n })`;\n // This string is not language-specific\n return `${name}::${location.lat},${location.lon}`;\n}\n\n// Load stored default query settings from local storage\nconst storedSettings = getItem(\"defaultQuery\", {});\n\nconst queryParams = [\n {\n /* from - the trip origin. stored internally as a location (lat/lon/name) object */\n name: \"from\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: null,\n itineraryRewrite: value => ({ fromPlace: formatPlace(value) }),\n profileRewrite: value => ({ from: { lat: value.lat, lon: value.lon } })\n // FIXME: Use for parsing URL values?\n // fromURL: stringToLocation\n },\n\n {\n /* to - the trip destination. stored internally as a location (lat/lon/name) object */\n name: \"to\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: null,\n itineraryRewrite: value => ({ toPlace: formatPlace(value) }),\n profileRewrite: value => ({ to: { lat: value.lat, lon: value.lon } })\n // FIXME: Use for parsing URL values?\n // fromURL: stringToLocation\n },\n\n {\n /* date - the date of travel, in MM-DD-YYYY format */\n name: \"date\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: getCurrentDate\n },\n\n {\n /* time - the arrival/departure time for an itinerary trip, in HH:mm format */\n name: \"time\",\n routingTypes: [\"ITINERARY\"],\n default: getCurrentTime\n },\n\n {\n /* departArrive - whether this is a depart-at, arrive-by, or leave-now trip */\n name: \"departArrive\",\n routingTypes: [\"ITINERARY\"],\n default: \"NOW\",\n itineraryRewrite: value => ({ arriveBy: value === \"ARRIVE\" })\n },\n\n {\n /* startTime - the start time for a profile trip, in HH:mm format */\n name: \"startTime\",\n routingTypes: [\"PROFILE\"],\n default: \"07:00\"\n },\n\n {\n /* endTime - the end time for a profile trip, in HH:mm format */\n name: \"endTime\",\n routingTypes: [\"PROFILE\"],\n default: \"09:00\"\n },\n\n {\n /* mode - the allowed modes for a trip, as a comma-separated list */\n name: \"mode\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: \"WALK,TRANSIT\", // TODO: make this dependent on routingType?\n profileRewrite: value => {\n const accessModes = [];\n const directModes = [];\n const transitModes = [];\n\n if (value && value.length > 0) {\n value.split(\",\").forEach(m => {\n if (isTransit(m)) transitModes.push(m);\n if (isAccessMode(m)) {\n accessModes.push(m);\n // TODO: make configurable whether direct-driving is considered\n if (!isCar(m)) directModes.push(m);\n }\n });\n }\n\n return { accessModes, directModes, transitModes };\n }\n },\n\n {\n /* showIntermediateStops - whether response should include intermediate stops for transit legs */\n name: \"showIntermediateStops\",\n routingTypes: [\"ITINERARY\"],\n default: true\n },\n\n {\n /* maxWalkDistance - the maximum distance in meters the user will walk to transit. */\n name: \"maxWalkDistance\",\n routingTypes: [\"ITINERARY\"],\n applicable: query =>\n /* Since this query variable isn't in this list, it's not included in the generated query\n * It does however allow us to determine if we should show the OTP1 max walk distance\n * dropdown or the OTP2 walk reluctance slider\n */\n !query.otp2 &&\n query.mode &&\n hasTransit(query.mode) &&\n query.mode.indexOf(\"WALK\") !== -1,\n default: 1609, // 1 mi.\n selector: \"DROPDOWN\",\n label: \"Maximum Walk\",\n options: [\n {\n text: \"1/10 mile\",\n value: 160.9\n },\n {\n text: \"1/4 mile\",\n value: 402.3\n },\n {\n text: \"1/2 mile\",\n value: 804.7\n },\n {\n text: \"3/4 mile\",\n value: 1207\n },\n {\n text: \"1 mile\",\n value: 1609\n },\n {\n text: \"2 miles\",\n value: 3219\n },\n {\n text: \"5 miles\",\n value: 8047\n }\n ]\n },\n\n {\n /* maxBikeDistance - the maximum distance in meters the user will bike. Not\n * actually an OTP parameter (maxWalkDistance doubles for biking) but we\n * store it separately internally in order to allow different default values,\n * options, etc. Translated to 'maxWalkDistance' via the rewrite function.\n */\n name: \"maxBikeDistance\",\n routingTypes: [\"ITINERARY\"],\n applicable: query =>\n query.mode &&\n hasTransit(query.mode) &&\n query.mode.indexOf(\"BICYCLE\") !== -1,\n default: 4828, // 3 mi.\n selector: \"DROPDOWN\",\n label: \"Maximum Bike\",\n options: [\n {\n text: \"1/4 mile\",\n value: 402.3\n },\n {\n text: \"1/2 mile\",\n value: 804.7\n },\n {\n text: \"3/4 mile\",\n value: 1207\n },\n {\n text: \"1 mile\",\n value: 1609\n },\n {\n text: \"2 miles\",\n value: 3219\n },\n {\n text: \"3 miles\",\n value: 4828\n },\n {\n text: \"5 miles\",\n value: 8047\n },\n {\n text: \"10 miles\",\n value: 16093\n },\n {\n text: \"20 miles\",\n value: 32187\n },\n {\n text: \"30 miles\",\n value: 48280\n }\n ],\n itineraryRewrite: value => ({\n maxWalkDistance: value,\n // ensures that the value is repopulated when loaded from URL params\n maxBikeDistance: value\n })\n },\n\n {\n /* optimize -- how to optimize a trip (non-bike, non-micromobility trips) */\n name: \"optimize\",\n applicable: query =>\n !query.otp2 && hasTransit(query.mode) && !hasBike(query.mode),\n routingTypes: [\"ITINERARY\"],\n default: \"QUICK\",\n selector: \"DROPDOWN\",\n label: \"Optimize for\",\n options: [\n {\n text: \"Speed\",\n value: \"QUICK\"\n },\n {\n text: \"Fewest Transfers\",\n value: \"TRANSFERS\"\n }\n ]\n },\n\n {\n /* optimizeBike -- how to optimize an bike-based trip */\n name: \"optimizeBike\",\n applicable: query => !query.otp2 && hasBike(query.mode),\n routingTypes: [\"ITINERARY\"],\n default: \"SAFE\",\n selector: \"DROPDOWN\",\n label: \"Optimize for\",\n options: query => {\n const opts = [\n {\n text: \"Speed\",\n value: \"QUICK\"\n },\n {\n text: \"Bike-Friendly Trip\",\n value: \"SAFE\"\n },\n {\n text: \"Flat Trip\",\n value: \"FLAT\"\n }\n ];\n\n // Include transit-specific option, if applicable\n if (hasTransit(query.mode)) {\n opts.splice(1, 0, {\n text: \"Fewest Transfers\",\n value: \"TRANSFERS\"\n });\n }\n\n return opts;\n },\n itineraryRewrite: value => ({ optimize: value })\n },\n\n {\n /* maxWalkTime -- the maximum time the user will spend walking in minutes */\n name: \"maxWalkTime\",\n routingTypes: [\"PROFILE\"],\n default: 15,\n selector: \"DROPDOWN\",\n label: \"Max Walk Time\",\n applicable: query =>\n query.mode && hasTransit(query.mode) && query.mode.indexOf(\"WALK\") !== -1,\n options: [\n {\n text: \"5 minutes\",\n value: 5\n },\n {\n text: \"10 minutes\",\n value: 10\n },\n {\n text: \"15 minutes\",\n value: 15\n },\n {\n text: \"20 minutes\",\n value: 20\n },\n {\n text: \"30 minutes\",\n value: 30\n },\n {\n text: \"45 minutes\",\n value: 45\n },\n {\n text: \"1 hour\",\n value: 60\n }\n ]\n },\n\n {\n /* walkSpeed -- the user's walking speed in m/s */\n name: \"walkSpeed\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: 1.34,\n selector: \"DROPDOWN\",\n label: \"Walk Speed\",\n applicable: query => query.mode && query.mode.indexOf(\"WALK\") !== -1,\n options: [\n {\n text: \"2 MPH\",\n value: 0.89\n },\n {\n text: \"3 MPH\",\n value: 1.34\n },\n {\n text: \"4 MPH\",\n value: 1.79\n }\n ]\n },\n\n {\n name: \"walkReluctance\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n selector: \"SLIDER\",\n low: 0.5,\n high: 20,\n step: 0.5,\n label: \"walk reluctance\",\n labelLow: \"More Walking\",\n labelHigh: \"More Transit\",\n applicable: query =>\n /* Since this query variable isn't in this list, it's not included in the generated query\n * It does however allow us to determine if we should show the OTP1 max walk distance\n * dropdown or the OTP2 walk reluctance slider\n */\n !!query.otp2 && query.mode && query.mode.indexOf(\"WALK\") !== -1\n },\n {\n /* maxBikeTime -- the maximum time the user will spend biking in minutes */\n name: \"maxBikeTime\",\n routingTypes: [\"PROFILE\"],\n default: 20,\n selector: \"DROPDOWN\",\n label: \"Max Bike Time\",\n applicable: query =>\n query.mode &&\n hasTransit(query.mode) &&\n query.mode.indexOf(\"BICYCLE\") !== -1,\n options: [\n {\n text: \"5 minutes\",\n value: 5\n },\n {\n text: \"10 minutes\",\n value: 10\n },\n {\n text: \"15 minutes\",\n value: 15\n },\n {\n text: \"20 minutes\",\n value: 20\n },\n {\n text: \"30 minutes\",\n value: 30\n },\n {\n text: \"45 minutes\",\n value: 45\n },\n {\n text: \"1 hour\",\n value: 60\n }\n ]\n },\n\n {\n /* bikeSpeed -- the user's bikeSpeed speed in m/s */\n name: \"bikeSpeed\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: 3.58,\n selector: \"DROPDOWN\",\n label: \"Bicycle Speed\",\n applicable: query => query.mode && query.mode.indexOf(\"BICYCLE\") !== -1,\n options: [\n {\n text: \"6 MPH\",\n value: 2.68\n },\n {\n text: \"8 MPH\",\n value: 3.58\n },\n {\n text: \"10 MPH\",\n value: 4.47\n },\n {\n text: \"12 MPH\",\n value: 5.36\n }\n ]\n },\n\n {\n /* maxEScooterDistance - the maximum distance in meters the user will ride\n * an E-scooter. Not actually an OTP parameter (maxWalkDistance doubles for\n * any non-transit mode except for car) but we store it separately\n * internally in order to allow different default values, options, etc.\n * Translated to 'maxWalkDistance' via the rewrite function.\n */\n name: \"maxEScooterDistance\",\n routingTypes: [\"ITINERARY\"],\n applicable: query =>\n query.mode && hasTransit(query.mode) && hasMicromobility(query.mode),\n default: 4828, // 3 mi.\n selector: \"DROPDOWN\",\n label: \"Maximum E-scooter Distance\",\n options: [\n {\n text: \"1/4 mile\",\n value: 402.3\n },\n {\n text: \"1/2 mile\",\n value: 804.7\n },\n {\n text: \"3/4 mile\",\n value: 1207\n },\n {\n text: \"1 mile\",\n value: 1609\n },\n {\n text: \"2 miles\",\n value: 3219\n },\n {\n text: \"3 miles\",\n value: 4828\n },\n {\n text: \"5 miles\",\n value: 8047\n },\n {\n text: \"10 miles\",\n value: 16093\n },\n {\n text: \"20 miles\",\n value: 32187\n },\n {\n text: \"30 miles\",\n value: 48280\n }\n ],\n itineraryRewrite: value => ({\n maxWalkDistance: value,\n // ensures that the value is repopulated when loaded from URL params\n maxEScooterDistance: value\n })\n },\n\n {\n /* bikeSpeed -- the user's bikeSpeed speed in m/s */\n name: \"watts\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: 250,\n selector: \"DROPDOWN\",\n label: \"E-scooter Power\",\n // this configuration should only be allowed for personal E-scooters as these\n // settings will be defined by the vehicle type of an E-scooter being rented\n applicable: query =>\n query.mode &&\n query.mode.indexOf(\"MICROMOBILITY\") !== -1 &&\n query.mode.indexOf(\"MICROMOBILITY_RENT\") === -1 &&\n query.mode.indexOf(\"SCOOTER\") === -1,\n options: [\n {\n text: \"Kid's hoverboard (6mph)\",\n value: 125\n },\n {\n text: \"Entry-level scooter (11mph)\",\n value: 250\n },\n {\n text: \"Robust E-scooter (18mph)\",\n value: 500\n },\n {\n text: \"Powerful E-scooter (24mph)\",\n value: 1500\n }\n ],\n // rewrite a few other values to add some baseline assumptions about the\n // vehicle\n itineraryRewrite: value => {\n const watts = value;\n // the maximum cruising and downhill speed. Units in m/s\n let maximumMicromobilitySpeed;\n let weight;\n // see https://en.wikipedia.org/wiki/Human_body_weight#Average_weight_around_the_world\n // estimate is for an average North American human with clothes and stuff\n // units are in kg\n const TYPICAL_RIDER_WEIGHT = 90;\n switch (watts) {\n case 125:\n // exemplar: Swagtron Turbo 5 hoverboard (https://swagtron.com/product/recertified-swagtron-turbo-five-hoverboard-classic/)\n maximumMicromobilitySpeed = 2.8; // ~= 6mph\n weight = TYPICAL_RIDER_WEIGHT + 9;\n break;\n case 250:\n // exemplar: Xiaomi M365 (https://www.gearbest.com/skateboard/pp_596618.html)\n maximumMicromobilitySpeed = 5; // ~= 11.5mph\n weight = TYPICAL_RIDER_WEIGHT + 12.5;\n break;\n case 500:\n // exemplar: Razor EcoSmart Metro (https://www.amazon.com/Razor-EcoSmart-Metro-Electric-Scooter/dp/B002ZDAEIS?SubscriptionId=AKIAJMXJ2YFJTEDLQMUQ&tag=digitren08-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=B002ZDAEIS&ascsubtag=15599460143449ocb)\n maximumMicromobilitySpeed = 8; // ~= 18mph\n weight = TYPICAL_RIDER_WEIGHT + 30;\n break;\n case 1000:\n // exemplar: Boosted Rev (https://boostedboards.com/vehicles/scooters/boosted-rev)\n maximumMicromobilitySpeed = 11; // ~= 24mph\n weight = TYPICAL_RIDER_WEIGHT + 21;\n break;\n default:\n break;\n }\n return { maximumMicromobilitySpeed, watts, weight };\n }\n },\n\n {\n /* ignoreRealtimeUpdates -- if true, do not use realtime updates in routing */\n name: \"ignoreRealtimeUpdates\",\n routingTypes: [\"ITINERARY\"],\n default: false\n },\n\n {\n /* companies -- tnc companies to query */\n name: \"companies\",\n routingTypes: [\"ITINERARY\"]\n },\n\n {\n /* wheelchair -- whether the user requires a wheelchair-accessible trip */\n name: \"wheelchair\",\n routingTypes: [\"ITINERARY\", \"PROFILE\"],\n default: false,\n selector: \"CHECKBOX\",\n label: \"Prefer Wheelchair Accessible Routes\",\n icon: <Wheelchair />,\n applicable: (query, config) => {\n if (!query.mode || !config.modes) return false;\n const configModes = (config.modes.accessModes || []).concat(\n config.modes.transitModes || []\n );\n return query.mode.split(\",\").some(mode => {\n const configMode = configModes.find(m => m.mode === mode);\n if (!configMode || !configMode.showWheelchairSetting) return false;\n if (\n configMode.company &&\n (!query.companies ||\n !query.companies.split(\",\").includes(configMode.company))\n )\n return false;\n return true;\n });\n }\n },\n\n {\n name: \"bannedRoutes\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"numItineraries\",\n routingTypes: [\"ITINERARY\"],\n default: 3\n },\n {\n name: \"intermediatePlaces\",\n default: [],\n routingTypes: [\"ITINERARY\"],\n itineraryRewrite: places =>\n Array.isArray(places) && places.length > 0\n ? {\n intermediatePlaces: places.map(place => formatPlace(place))\n }\n : undefined\n },\n {\n // Time penalty in seconds the requester is willing to accept in order to\n // complete journey on preferred route. I.e., number of seconds that we are\n // willing to wait for the preferred route.\n name: \"otherThanPreferredRoutesPenalty\",\n default: 15 * 60, // 15 minutes\n routingTypes: [\"ITINERARY\"]\n },\n // Below are less commonly used query params included so that in case they are\n // passed in a query parameter they do not get filtered out from the ultimate\n // API request.\n {\n name: \"preferredRoutes\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"maxPreTransitTime\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"waitReluctance\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"driveDistanceReluctance\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"driveTimeReluctance\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"waitAtBeginningFactor\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bikeSwitchTime\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bikeSwitchCost\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"minTransferTime\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"preferredAgencies\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"unpreferredRoutes\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"unpreferredAgencies\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"walkBoardCost\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bikeBoardCost\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"whiteListedRoutes\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bannedAgencies\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"whiteListedAgencies\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bannedTrips\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bannedStops\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"bannedStopsHard\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"transferPenalty\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"nonpreferredTransferPenalty\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"maxTransfers\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"batch\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"startTransitStopId\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"startTransitTripId\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"clampInitialWait\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"reverseOptimizeOnTheFly\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"boardSlack\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"alightSlack\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"locale\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"disableRemainingWeightHeuristic\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"flexFlagStopBufferSize\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"flexUseReservationServices\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"flexUseEligibilityServices\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"flexIgnoreDrtAdvanceBookMin\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"maxHours\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"useRequestedDateTimeInMaxHours\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"disableAlertFiltering\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"geoidElevation\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"invalidDateStrategy\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"minTransitDistance\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"searchTimeout\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"pathComparator\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"onlyTransitTrips\",\n routingTypes: [\"ITINERARY\"]\n },\n {\n name: \"minimumMicromobilitySpeed\",\n routingTypes: [\"ITINERARY\"]\n }\n];\n// Iterate over stored settings and update query param defaults.\n// FIXME: this does not get updated if the user defaults are cleared\nqueryParams.forEach(param => {\n if (param.name in storedSettings) {\n param.default = storedSettings[param.name];\n param.userDefaultOverride = true;\n }\n});\n\nexport default queryParams;\n\n/**\n * You can customize the queryParams labels and options, and labels and values for each option.\n * @param customizations The optional customizations to apply: an object whose fields\n * correspond to the items in queryParams with the corresponding name,\n * the value for those fields being an object which fields (label, options...)\n * will override the originals.\n * Example:\n * {\n * // Matches the name param\n * maxWalkDistance: {\n * // Any fields that should be overridden go here\n * options: [\n * // ...new options\n * ],\n * default: 500,\n * label: \"max walk dist\"\n * }\n * }\n * @returns A copy of the default queryParams that has the given customizations applied.\n * If no customizations parameter is provided, returns the queryParams object itself.\n */\nexport function getCustomQueryParams(customizations) {\n if (!customizations) return queryParams;\n\n const clonedParams = cloneDeep(queryParams);\n Object.keys(customizations).forEach(k => {\n // Merge fields into the cloned object\n const paramIndex = clonedParams.findIndex(param => param.name === k);\n if (paramIndex !== -1) {\n clonedParams[paramIndex] = {\n ...clonedParams[paramIndex],\n ...customizations[k]\n };\n }\n });\n return clonedParams;\n}\n"],"file":"query-params.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opentripplanner/core-utils",
3
- "version": "4.11.1",
3
+ "version": "4.11.4",
4
4
  "description": "Core functionality that is shared among numerous UI components",
5
5
  "engines": {
6
6
  "node": ">=13"
@@ -13,7 +13,7 @@
13
13
  "private": false,
14
14
  "dependencies": {
15
15
  "@mapbox/polyline": "^1.1.0",
16
- "@opentripplanner/geocoder": "^1.1.2",
16
+ "@opentripplanner/geocoder": "^1.2.2",
17
17
  "@styled-icons/foundation": "^10.34.0",
18
18
  "@turf/along": "^6.0.1",
19
19
  "bowser": "^2.7.0",
@@ -77,7 +77,7 @@ Array [
77
77
  },
78
78
  Object {
79
79
  "applicable": [Function],
80
- "default": 1207,
80
+ "default": 1609,
81
81
  "label": "Max Walk Distance In Meters",
82
82
  "name": "maxWalkDistance",
83
83
  "options": Array [
@@ -42,7 +42,7 @@ Object {
42
42
  "maxBikeDistance": 4828,
43
43
  "maxBikeTime": 20,
44
44
  "maxEScooterDistance": 4828,
45
- "maxWalkDistance": 1207,
45
+ "maxWalkDistance": 1609,
46
46
  "maxWalkTime": 15,
47
47
  "mode": "WALK,TRANSIT",
48
48
  "numItineraries": 3,
@@ -66,7 +66,7 @@ Object {
66
66
  "date": "2020-08-24",
67
67
  "fromPlace": "Steamer Lane, Santa Cruz, CA, 95060, USA::36.95471026341096,-122.0248185852425",
68
68
  "ignoreRealtimeUpdates": false,
69
- "maxWalkDistance": 1207,
69
+ "maxWalkDistance": 1609,
70
70
  "mode": "WALK,FLEX_EGRESS,FLEX_ACCESS,FLEX_DIRECT,TRANSIT",
71
71
  "numItineraries": 3,
72
72
  "optimize": "QUICK",
@@ -100,7 +100,7 @@ Object {
100
100
  "date": "2020-08-24",
101
101
  "fromPlace": "Steamer Lane, Santa Cruz, CA, 95060, USA::36.95471026341096,-122.0248185852425",
102
102
  "ignoreRealtimeUpdates": false,
103
- "maxWalkDistance": 1207,
103
+ "maxWalkDistance": 1609,
104
104
  "mode": "FLEX_EGRESS,FLEX_ACCESS,FLEX_DIRECT,WALK,BIKE,WALK,TRANSIT,BUS",
105
105
  "numItineraries": 3,
106
106
  "optimize": "QUICK",
@@ -157,7 +157,7 @@ Object {
157
157
  "Lighthouse Point Park, Santa Cruz, CA, USA::36.95145225211049,-122.02672866668283",
158
158
  "Natural Bridges State Beach, 2531 W Cliff Dr, Santa Cruz, CA, 95060, USA::36.95028619314903,-122.05711810284686",
159
159
  ],
160
- "maxWalkDistance": 1207,
160
+ "maxWalkDistance": 1609,
161
161
  "mode": "WALK,TRANSIT",
162
162
  "numItineraries": 3,
163
163
  "optimize": "QUICK",
@@ -191,13 +191,32 @@ Object {
191
191
  }
192
192
  `;
193
193
 
194
+ exports[`query getRoutingParams should create routing params for personal micromobility query 2`] = `
195
+ Object {
196
+ "arriveBy": false,
197
+ "companies": "FAKECOMPANY",
198
+ "date": "2020-08-24",
199
+ "fromPlace": "Steamer Lane, Santa Cruz, CA, 95060, USA::36.95471026341096,-122.0248185852425",
200
+ "ignoreRealtimeUpdates": false,
201
+ "maxEScooterDistance": 4828,
202
+ "maxWalkDistance": 4828,
203
+ "mode": "SCOOTER,BUS",
204
+ "numItineraries": 3,
205
+ "optimize": "QUICK",
206
+ "otherThanPreferredRoutesPenalty": 900,
207
+ "showIntermediateStops": true,
208
+ "time": "21:53",
209
+ "toPlace": "Municipal Wharf St, Santa Cruz, CA, 95060, USA::36.961843106786766,-122.02402657342725",
210
+ }
211
+ `;
212
+
194
213
  exports[`query getRoutingParams should create routing params for standard flex query 1`] = `
195
214
  Object {
196
215
  "arriveBy": false,
197
216
  "date": "2020-08-24",
198
217
  "fromPlace": "Steamer Lane, Santa Cruz, CA, 95060, USA::36.95471026341096,-122.0248185852425",
199
218
  "ignoreRealtimeUpdates": false,
200
- "maxWalkDistance": 1207,
219
+ "maxWalkDistance": 1609,
201
220
  "mode": "WALK,TRANSIT,FLEX_EGRESS,FLEX_ACCESS,FLEX_DIRECT",
202
221
  "numItineraries": 3,
203
222
  "optimize": "QUICK",
@@ -230,7 +249,7 @@ Object {
230
249
  "date": "2020-08-24",
231
250
  "fromPlace": "Steamer Lane, Santa Cruz, CA, 95060, USA::36.95471026341096,-122.0248185852425",
232
251
  "ignoreRealtimeUpdates": false,
233
- "maxWalkDistance": 1207,
252
+ "maxWalkDistance": 1609,
234
253
  "mode": "WALK,TRANSIT",
235
254
  "numItineraries": 3,
236
255
  "optimize": "QUICK",
@@ -80,6 +80,14 @@ describe("query", () => {
80
80
  watts: 250
81
81
  })
82
82
  ).toMatchSnapshot();
83
+ expect(
84
+ getRoutingParams(fakeConfig, {
85
+ ...makeBaseTestQuery(),
86
+ companies: "FAKECOMPANY",
87
+ mode: "SCOOTER,BUS",
88
+ watts: 250
89
+ })
90
+ ).toMatchSnapshot();
83
91
  });
84
92
 
85
93
  it("should create routing params for intermediate places query", () => {
package/src/deprecated.js CHANGED
@@ -90,6 +90,7 @@ export function getLegModeLabel(leg) {
90
90
  return "Streetcar";
91
91
  return "Light Rail";
92
92
  case "MICROMOBILITY":
93
+ case "SCOOTER":
93
94
  return "Ride";
94
95
  default:
95
96
  return require("./itinerary").toSentenceCase(leg.mode);
package/src/itinerary.js CHANGED
@@ -104,7 +104,7 @@ export function isCar(mode) {
104
104
 
105
105
  export function isMicromobility(mode) {
106
106
  if (!mode) return false;
107
- return mode.startsWith("MICROMOBILITY");
107
+ return mode.startsWith("MICROMOBILITY") || mode.startsWith("SCOOTER");
108
108
  }
109
109
 
110
110
  export function isAccessMode(mode) {
@@ -177,7 +177,7 @@ export function getMapColor(mode) {
177
177
  if (mode === "TRAM") return "#800";
178
178
  if (mode === "FERRY") return "#008";
179
179
  if (mode === "CAR") return "#444";
180
- if (mode === "MICROMOBILITY") return "#f5a729";
180
+ if (mode === "MICROMOBILITY" || mode === "SCOOTER") return "#f5a729";
181
181
  return "#aaa";
182
182
  }
183
183
 
@@ -204,7 +204,11 @@ export function getCompanyFromLeg(leg) {
204
204
  if (mode === "BICYCLE" && rentedBike && from.networks) {
205
205
  return from.networks[0];
206
206
  }
207
- if (mode === "MICROMOBILITY" && rentedVehicle && from.networks) {
207
+ if (
208
+ (mode === "MICROMOBILITY" || mode === "SCOOTER") &&
209
+ rentedVehicle &&
210
+ from.networks
211
+ ) {
208
212
  return from.networks[0];
209
213
  }
210
214
  return null;
package/src/map.js CHANGED
@@ -1,4 +1,10 @@
1
- import { getPlaceName, isTransit, isFlex, toSentenceCase } from "./itinerary";
1
+ import {
2
+ getPlaceName,
3
+ isTransit,
4
+ isFlex,
5
+ toSentenceCase,
6
+ isAccessMode
7
+ } from "./itinerary";
2
8
 
3
9
  import {
4
10
  coordsToString,
@@ -102,15 +108,11 @@ export function itineraryToTransitive(
102
108
  });
103
109
 
104
110
  itin.legs.forEach((leg, idx) => {
105
- if (
106
- leg.mode === "WALK" ||
107
- leg.mode === "BICYCLE" ||
108
- leg.mode === "CAR" ||
109
- leg.mode === "MICROMOBILITY"
110
- ) {
111
+ if (isAccessMode(leg.mode)) {
111
112
  let fromPlaceId;
112
113
  if (leg.from.bikeShareId) {
113
114
  fromPlaceId = `bicycle_rent_station_${leg.from.bikeShareId}`;
115
+ // TODO: does this need to change to be OTP2 compatible?
114
116
  } else if (leg.from.vertexType === "VEHICLERENTAL") {
115
117
  fromPlaceId = `escooter_rent_station_${leg.from.name}`;
116
118
  } else if (
@@ -176,7 +176,7 @@ const queryParams = [
176
176
  query.mode &&
177
177
  hasTransit(query.mode) &&
178
178
  query.mode.indexOf("WALK") !== -1,
179
- default: 1207, // 3/4 mi.
179
+ default: 1609, // 1 mi.
180
180
  selector: "DROPDOWN",
181
181
  label: "Maximum Walk",
182
182
  options: [
@@ -561,7 +561,8 @@ const queryParams = [
561
561
  applicable: query =>
562
562
  query.mode &&
563
563
  query.mode.indexOf("MICROMOBILITY") !== -1 &&
564
- query.mode.indexOf("MICROMOBILITY_RENT") === -1,
564
+ query.mode.indexOf("MICROMOBILITY_RENT") === -1 &&
565
+ query.mode.indexOf("SCOOTER") === -1,
565
566
  options: [
566
567
  {
567
568
  text: "Kid's hoverboard (6mph)",