@opentripplanner/core-utils 5.0.1-alpha.1 → 5.0.3-alpha.1

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/esm/map.js CHANGED
@@ -95,28 +95,35 @@ export function itineraryToTransitive(itin, companies, getRouteLabel, disableFle
95
95
 
96
96
  if ( // OTP2 Scooter case
97
97
  leg.mode === "SCOOTER") {
98
- fromPlaceId = "escooter_rent_station_".concat(leg.from.name);
99
- } // OTP1 Scooter case
100
-
98
+ fromPlaceId = "escooter_rent_station_".concat(leg.from.bikeShareId);
99
+ }
101
100
  } else if (leg.from.vertexType === "VEHICLERENTAL") {
101
+ // OTP1 Scooter case
102
102
  fromPlaceId = "escooter_rent_station_".concat(leg.from.name);
103
103
  } else if (leg.mode === "CAR" && idx > 0 && itin.legs[idx - 1].mode === "WALK") {
104
104
  // create a special place ID for car legs preceded by walking legs
105
105
  fromPlaceId = "itin_car_".concat(streetEdgeId, "_from");
106
- } else {
106
+ } else if (!fromPlaceId) {
107
107
  fromPlaceId = "itin_street_".concat(streetEdgeId, "_from");
108
108
  }
109
109
 
110
110
  var toPlaceId;
111
111
 
112
112
  if (leg.to.bikeShareId) {
113
- toPlaceId = "bicycle_rent_station_".concat(leg.to.bikeShareId);
113
+ var _itin$legs;
114
+
115
+ toPlaceId = "bicycle_rent_station_".concat(leg.to.bikeShareId); // OTP2 scooter case
116
+ // Need to check next leg since this is a "to" place "
117
+
118
+ if (leg.mode === "SCOOTER" || ((_itin$legs = itin.legs) === null || _itin$legs === void 0 ? void 0 : _itin$legs[idx + 1].mode) === "SCOOTER") {
119
+ toPlaceId = "escooter_rent_station_".concat(leg.to.bikeShareId);
120
+ }
114
121
  } else if (leg.to.vertexType === "VEHICLERENTAL") {
115
122
  toPlaceId = "escooter_rent_station_".concat(leg.to.name);
116
123
  } else if (leg.mode === "CAR" && idx < itin.legs.length - 1 && itin.legs[idx + 1].mode === "WALK") {
117
124
  // create a special place ID for car legs followed by walking legs
118
125
  toPlaceId = "itin_car_".concat(streetEdgeId, "_to");
119
- } else {
126
+ } else if (!toPlaceId) {
120
127
  toPlaceId = "itin_street_".concat(streetEdgeId, "_to");
121
128
  }
122
129
 
package/esm/map.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/map.ts"],"names":["getPlaceName","isAccessMode","isFlex","isTransit","toSentenceCase","coordsToString","getDetailText","latlngToString","logDeprecationWarning","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","arc","hailedCar","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 Company,\n Itinerary,\n LatLngArray,\n Leg,\n Location,\n TransitiveData,\n UserPosition\n} from \"@opentripplanner/types\";\nimport {\n getPlaceName,\n isAccessMode,\n isFlex,\n isTransit,\n toSentenceCase\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(\n currentPosition: UserPosition\n): Location {\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: string): number[] {\n return (str && str.split(\",\").map(c => +c)) || [];\n}\n\nexport function constructLocation(latlng: {\n lat: number;\n lng: number;\n}): Location {\n return {\n lat: latlng.lat,\n lon: latlng.lng\n };\n}\n\nexport function formatStoredPlaceName(\n location: Location,\n withDetails = true\n): string {\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: Location, location2: Location): boolean {\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: Itinerary,\n companies: Company[],\n getRouteLabel: (leg: Leg) => string,\n disableFlexArc: boolean\n): TransitiveData {\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: string;\n if (leg.from.bikeShareId) {\n fromPlaceId = `bicycle_rent_station_${leg.from.bikeShareId}`;\n if (\n // OTP2 Scooter case\n leg.mode === \"SCOOTER\"\n ) {\n fromPlaceId = `escooter_rent_station_${leg.from.name}`;\n }\n // OTP1 Scooter case\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 arc: false,\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\ntype TransitivePlaceRaw = {\n place_id: string;\n};\nexport function isBikeshareStation(place: TransitivePlaceRaw): boolean {\n return place.place_id.lastIndexOf(\"bicycle_rent_station\") !== -1;\n}\n\nexport function isEScooterStation(place: TransitivePlaceRaw): boolean {\n return place.place_id.lastIndexOf(\"escooter_rent_station\") !== -1;\n}\n\nexport function isCarWalkTransition(place: TransitivePlaceRaw): boolean {\n return place.place_id.lastIndexOf(\"itin_car_\") !== -1;\n}\n\nexport function isValidLat(lat: number): boolean {\n return Number.isFinite(lat) && lat >= -90 && lat <= 90;\n}\n\nexport function isValidLng(lng: number): boolean {\n return Number.isFinite(lng) && lng >= -180 && lng <= 180;\n}\n\nexport function isValidLatLng(arr: LatLngArray): boolean {\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.ts"],"names":["getPlaceName","isAccessMode","isFlex","isTransit","toSentenceCase","coordsToString","getDetailText","latlngToString","logDeprecationWarning","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","arc","hailedCar","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 Company,\n Itinerary,\n LatLngArray,\n Leg,\n Location,\n TransitiveData,\n UserPosition\n} from \"@opentripplanner/types\";\nimport {\n getPlaceName,\n isAccessMode,\n isFlex,\n isTransit,\n toSentenceCase\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(\n currentPosition: UserPosition\n): Location {\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: string): number[] {\n return (str && str.split(\",\").map(c => +c)) || [];\n}\n\nexport function constructLocation(latlng: {\n lat: number;\n lng: number;\n}): Location {\n return {\n lat: latlng.lat,\n lon: latlng.lng\n };\n}\n\nexport function formatStoredPlaceName(\n location: Location,\n withDetails = true\n): string {\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: Location, location2: Location): boolean {\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: Itinerary,\n companies: Company[],\n getRouteLabel: (leg: Leg) => string,\n disableFlexArc: boolean\n): TransitiveData {\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: string;\n if (leg.from.bikeShareId) {\n fromPlaceId = `bicycle_rent_station_${leg.from.bikeShareId}`;\n if (\n // OTP2 Scooter case\n leg.mode === \"SCOOTER\"\n ) {\n fromPlaceId = `escooter_rent_station_${leg.from.bikeShareId}`;\n }\n } else if (leg.from.vertexType === \"VEHICLERENTAL\") {\n // OTP1 Scooter case\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 if (!fromPlaceId) {\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 // OTP2 scooter case\n // Need to check next leg since this is a \"to\" place \"\n if (leg.mode === \"SCOOTER\" || itin.legs?.[idx + 1].mode === \"SCOOTER\") {\n toPlaceId = `escooter_rent_station_${leg.to.bikeShareId}`;\n }\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 if (!toPlaceId) {\n toPlaceId = `itin_street_${streetEdgeId}_to`;\n }\n\n const segment = {\n arc: false,\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\ntype TransitivePlaceRaw = {\n place_id: string;\n};\nexport function isBikeshareStation(place: TransitivePlaceRaw): boolean {\n return place.place_id.lastIndexOf(\"bicycle_rent_station\") !== -1;\n}\n\nexport function isEScooterStation(place: TransitivePlaceRaw): boolean {\n return place.place_id.lastIndexOf(\"escooter_rent_station\") !== -1;\n}\n\nexport function isCarWalkTransition(place: TransitivePlaceRaw): boolean {\n return place.place_id.lastIndexOf(\"itin_car_\") !== -1;\n}\n\nexport function isValidLat(lat: number): boolean {\n return Number.isFinite(lat) && lat >= -90 && lat <= 90;\n}\n\nexport function isValidLng(lng: number): boolean {\n return Number.isFinite(lng) && lng >= -180 && lng <= 180;\n}\n\nexport function isValidLatLng(arr: LatLngArray): boolean {\n return (\n Array.isArray(arr) &&\n arr.length === 2 &&\n isValidLat(arr[0]) &&\n isValidLng(arr[1])\n );\n}\n"],"file":"map.js"}
@@ -360,8 +360,8 @@ var queryParams = [{
360
360
  name: "walkReluctance",
361
361
  routingTypes: ["ITINERARY", "PROFILE"],
362
362
  selector: "SLIDER",
363
- low: 0.5,
364
- high: 20,
363
+ low: 1,
364
+ high: 10,
365
365
  step: 0.5,
366
366
  label: "walk reluctance",
367
367
  labelLow: "More Walking",
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/query-params.js"],"names":["cloneDeep","React","Wheelchair","isTransit","isAccessMode","isCar","hasTransit","hasBike","hasMicromobility","getItem","getCurrentDate","getCurrentTime","formatPlace","location","alternateName","name","lat","lon","storedSettings","queryParams","routingTypes","itineraryRewrite","value","fromPlace","profileRewrite","from","toPlace","to","arriveBy","accessModes","directModes","transitModes","length","split","forEach","m","push","applicable","query","otp2","mode","indexOf","selector","label","options","text","maxWalkDistance","maxBikeDistance","opts","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 // This parameter doesn't seem to do anything\n applicable: () => false,\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: () => {\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 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"}
1
+ {"version":3,"sources":["../src/query-params.js"],"names":["cloneDeep","React","Wheelchair","isTransit","isAccessMode","isCar","hasTransit","hasBike","hasMicromobility","getItem","getCurrentDate","getCurrentTime","formatPlace","location","alternateName","name","lat","lon","storedSettings","queryParams","routingTypes","itineraryRewrite","value","fromPlace","profileRewrite","from","toPlace","to","arriveBy","accessModes","directModes","transitModes","length","split","forEach","m","push","applicable","query","otp2","mode","indexOf","selector","label","options","text","maxWalkDistance","maxBikeDistance","opts","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 // This parameter doesn't seem to do anything\n applicable: () => false,\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: () => {\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 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: 1,\n high: 10,\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/lib/map.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../src/map.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,SAAS,EACT,WAAW,EACX,GAAG,EACH,QAAQ,EACR,cAAc,EACd,YAAY,EACb,MAAM,wBAAwB,CAAC;AAShC,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,EAEf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC;AAEzD,wBAAgB,yBAAyB,CACvC,eAAe,EAAE,YAAY,GAC5B,QAAQ,CAYV;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,QAAQ,CAKX;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,QAAQ,EAClB,WAAW,UAAO,GACjB,MAAM,CAcR;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,GAAG,OAAO,CAG7E;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,OAAO,EAAE,EACpB,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,EACnC,cAAc,EAAE,OAAO,GACtB,cAAc,CAqOhB;AAED,aAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AACF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAErE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAEpE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAEtE;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAOvD"}
1
+ {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../src/map.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,SAAS,EACT,WAAW,EACX,GAAG,EACH,QAAQ,EACR,cAAc,EACd,YAAY,EACb,MAAM,wBAAwB,CAAC;AAShC,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,EAEf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC;AAEzD,wBAAgB,yBAAyB,CACvC,eAAe,EAAE,YAAY,GAC5B,QAAQ,CAYV;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,QAAQ,CAKX;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,QAAQ,EAClB,WAAW,UAAO,GACjB,MAAM,CAcR;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,GAAG,OAAO,CAG7E;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,OAAO,EAAE,EACpB,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,EACnC,cAAc,EAAE,OAAO,GACtB,cAAc,CA0OhB;AAED,aAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AACF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAErE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAEpE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAEtE;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAOvD"}
package/lib/map.js CHANGED
@@ -130,28 +130,35 @@ function itineraryToTransitive(itin, companies, getRouteLabel, disableFlexArc) {
130
130
 
131
131
  if ( // OTP2 Scooter case
132
132
  leg.mode === "SCOOTER") {
133
- fromPlaceId = `escooter_rent_station_${leg.from.name}`;
134
- } // OTP1 Scooter case
135
-
133
+ fromPlaceId = `escooter_rent_station_${leg.from.bikeShareId}`;
134
+ }
136
135
  } else if (leg.from.vertexType === "VEHICLERENTAL") {
136
+ // OTP1 Scooter case
137
137
  fromPlaceId = `escooter_rent_station_${leg.from.name}`;
138
138
  } else if (leg.mode === "CAR" && idx > 0 && itin.legs[idx - 1].mode === "WALK") {
139
139
  // create a special place ID for car legs preceded by walking legs
140
140
  fromPlaceId = `itin_car_${streetEdgeId}_from`;
141
- } else {
141
+ } else if (!fromPlaceId) {
142
142
  fromPlaceId = `itin_street_${streetEdgeId}_from`;
143
143
  }
144
144
 
145
145
  let toPlaceId;
146
146
 
147
147
  if (leg.to.bikeShareId) {
148
- toPlaceId = `bicycle_rent_station_${leg.to.bikeShareId}`;
148
+ var _itin$legs;
149
+
150
+ toPlaceId = `bicycle_rent_station_${leg.to.bikeShareId}`; // OTP2 scooter case
151
+ // Need to check next leg since this is a "to" place "
152
+
153
+ if (leg.mode === "SCOOTER" || ((_itin$legs = itin.legs) === null || _itin$legs === void 0 ? void 0 : _itin$legs[idx + 1].mode) === "SCOOTER") {
154
+ toPlaceId = `escooter_rent_station_${leg.to.bikeShareId}`;
155
+ }
149
156
  } else if (leg.to.vertexType === "VEHICLERENTAL") {
150
157
  toPlaceId = `escooter_rent_station_${leg.to.name}`;
151
158
  } else if (leg.mode === "CAR" && idx < itin.legs.length - 1 && itin.legs[idx + 1].mode === "WALK") {
152
159
  // create a special place ID for car legs followed by walking legs
153
160
  toPlaceId = `itin_car_${streetEdgeId}_to`;
154
- } else {
161
+ } else if (!toPlaceId) {
155
162
  toPlaceId = `itin_street_${streetEdgeId}_to`;
156
163
  }
157
164
 
package/lib/map.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/map.ts"],"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","arc","hailedCar","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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA;;AAQA;;AASO,SAASA,yBAAT,CACLC,eADK,EAEK;AACV,MAAIA,eAAe,CAACC,KAAhB,IAAyB,CAACD,eAAe,CAACE,MAA9C,EAAsD;AACpDC,IAAAA,OAAO,CAACC,IAAR,CACE,kGADF;AAGA,WAAO,IAAP;AACD;;AACD,SAAO;AACLC,IAAAA,GAAG,EAAEL,eAAe,CAACE,MAAhB,CAAuBI,QADvB;AAELC,IAAAA,GAAG,EAAEP,eAAe,CAACE,MAAhB,CAAuBM,SAFvB;AAGLC,IAAAA,QAAQ,EAAE;AAHL,GAAP;AAKD;;AAEM,SAASC,cAAT,CAAwBC,GAAxB,EAA+C;AACpD,SAAQA,GAAG,IAAIA,GAAG,CAACC,KAAJ,CAAU,GAAV,EAAeC,GAAf,CAAmBC,CAAC,IAAI,CAACA,CAAzB,CAAR,IAAwC,EAA/C;AACD;;AAEM,SAASC,iBAAT,CAA2BC,MAA3B,EAGM;AACX,SAAO;AACLX,IAAAA,GAAG,EAAEW,MAAM,CAACX,GADP;AAELE,IAAAA,GAAG,EAAES,MAAM,CAACC;AAFP,GAAP;AAID;;AAEM,SAASC,qBAAT,CACLC,QADK,EAELC,WAAW,GAAG,IAFT,EAGG;AACR,MAAIA,WAAJ,EAAiB;AACf,2CAAsB,iDAAtB;AACD;;AAED,MAAIC,WAAW,GACbF,QAAQ,CAACG,IAAT,KAAkB,MAAlB,IAA4BH,QAAQ,CAACG,IAAT,KAAkB,MAA9C,GACI,+BAAeH,QAAQ,CAACG,IAAxB,CADJ,GAEIH,QAAQ,CAACI,IAHf;;AAIA,MAAIH,WAAJ,EAAiB;AACf,UAAMI,UAAU,GAAG,+BAAcL,QAAd,CAAnB;AACA,QAAIK,UAAJ,EAAgBH,WAAW,IAAK,KAAIG,UAAW,GAA/B;AACjB;;AACD,SAAOH,WAAP;AACD;;AAEM,SAASI,WAAT,CAAqBC,SAArB,EAA0CC,SAA1C,EAAwE;AAC7E,MAAI,CAACD,SAAD,IAAc,CAACC,SAAnB,EAA8B,OAAOD,SAAS,KAAKC,SAArB;AAC9B,SAAOD,SAAS,CAACrB,GAAV,KAAkBsB,SAAS,CAACtB,GAA5B,IAAmCqB,SAAS,CAACnB,GAAV,KAAkBoB,SAAS,CAACpB,GAAtE;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASqB,qBAAT,CACLC,IADK,EAELC,SAFK,EAGLC,aAHK,EAILC,cAJK,EAKW;AAChB,QAAMC,KAAK,GAAG;AACZC,IAAAA,QAAQ,EAAE,EADE;AAEZC,IAAAA,WAAW,EAAE,EAFD;AAGZC,IAAAA,MAAM,EAAE,EAHI;AAIZC,IAAAA,QAAQ,EAAE,EAJE;AAKZC,IAAAA,MAAM,EAAE,EALI;AAMZC,IAAAA,KAAK,EAAE;AANK,GAAd;AAQA,QAAMD,MAAM,GAAG,EAAf;AACA,QAAMC,KAAK,GAAG,EAAd;AACA,MAAIC,YAAY,GAAG,CAAnB;AACA,MAAIC,SAAS,GAAG,CAAhB;AAEA,QAAMC,OAAO,GAAG;AACdC,IAAAA,UAAU,EAAE,MADE;AAEd;AACAC,IAAAA,YAAY,EAAE,2BAHA;AAIdC,IAAAA,QAAQ,EAAE;AAJI,GAAhB,CAdgB,CAqBhB;;AACAZ,EAAAA,KAAK,CAACG,MAAN,CAAaU,IAAb,CAAkB;AAChBC,IAAAA,QAAQ,EAAE,MADM;AAEhBC,IAAAA,SAAS,EAAEnB,IAAI,CAACoB,IAAL,CAAU,CAAV,EAAaC,IAAb,CAAkB7C,GAFb;AAGhB8C,IAAAA,SAAS,EAAEtB,IAAI,CAACoB,IAAL,CAAU,CAAV,EAAaC,IAAb,CAAkB3C;AAHb,GAAlB;AAKA0B,EAAAA,KAAK,CAACG,MAAN,CAAaU,IAAb,CAAkB;AAChBC,IAAAA,QAAQ,EAAE,IADM;AAEhBC,IAAAA,SAAS,EAAEnB,IAAI,CAACoB,IAAL,CAAUpB,IAAI,CAACoB,IAAL,CAAUG,MAAV,GAAmB,CAA7B,EAAgCC,EAAhC,CAAmChD,GAF9B;AAGhB8C,IAAAA,SAAS,EAAEtB,IAAI,CAACoB,IAAL,CAAUpB,IAAI,CAACoB,IAAL,CAAUG,MAAV,GAAmB,CAA7B,EAAgCC,EAAhC,CAAmC9C;AAH9B,GAAlB;AAMAsB,EAAAA,IAAI,CAACoB,IAAL,CAAUK,OAAV,CAAkB,CAACC,GAAD,EAAMC,GAAN,KAAc;AAC9B,QAAI,6BAAaD,GAAG,CAACE,IAAjB,CAAJ,EAA4B;AAC1B,UAAIC,WAAJ;;AACA,UAAIH,GAAG,CAACL,IAAJ,CAASS,WAAb,EAA0B;AACxBD,QAAAA,WAAW,GAAI,wBAAuBH,GAAG,CAACL,IAAJ,CAASS,WAAY,EAA3D;;AACA,aACE;AACAJ,QAAAA,GAAG,CAACE,IAAJ,KAAa,SAFf,EAGE;AACAC,UAAAA,WAAW,GAAI,yBAAwBH,GAAG,CAACL,IAAJ,CAAS3B,IAAK,EAArD;AACD,SAPuB,CAQxB;;AACD,OATD,MASO,IAAIgC,GAAG,CAACL,IAAJ,CAASU,UAAT,KAAwB,eAA5B,EAA6C;AAClDF,QAAAA,WAAW,GAAI,yBAAwBH,GAAG,CAACL,IAAJ,CAAS3B,IAAK,EAArD;AACD,OAFM,MAEA,IACLgC,GAAG,CAACE,IAAJ,KAAa,KAAb,IACAD,GAAG,GAAG,CADN,IAEA3B,IAAI,CAACoB,IAAL,CAAUO,GAAG,GAAG,CAAhB,EAAmBC,IAAnB,KAA4B,MAHvB,EAIL;AACA;AACAC,QAAAA,WAAW,GAAI,YAAWlB,YAAa,OAAvC;AACD,OAPM,MAOA;AACLkB,QAAAA,WAAW,GAAI,eAAclB,YAAa,OAA1C;AACD;;AAED,UAAIqB,SAAJ;;AACA,UAAIN,GAAG,CAACF,EAAJ,CAAOM,WAAX,EAAwB;AACtBE,QAAAA,SAAS,GAAI,wBAAuBN,GAAG,CAACF,EAAJ,CAAOM,WAAY,EAAvD;AACD,OAFD,MAEO,IAAIJ,GAAG,CAACF,EAAJ,CAAOO,UAAP,KAAsB,eAA1B,EAA2C;AAChDC,QAAAA,SAAS,GAAI,yBAAwBN,GAAG,CAACF,EAAJ,CAAO9B,IAAK,EAAjD;AACD,OAFM,MAEA,IACLgC,GAAG,CAACE,IAAJ,KAAa,KAAb,IACAD,GAAG,GAAG3B,IAAI,CAACoB,IAAL,CAAUG,MAAV,GAAmB,CADzB,IAEAvB,IAAI,CAACoB,IAAL,CAAUO,GAAG,GAAG,CAAhB,EAAmBC,IAAnB,KAA4B,MAHvB,EAIL;AACA;AACAI,QAAAA,SAAS,GAAI,YAAWrB,YAAa,KAArC;AACD,OAPM,MAOA;AACLqB,QAAAA,SAAS,GAAI,eAAcrB,YAAa,KAAxC;AACD;;AAED,YAAMsB,OAAO,GAAG;AACdC,QAAAA,GAAG,EAAE,KADS;AAEdzC,QAAAA,IAAI,EAAEiC,GAAG,CAACE,IAFI;AAGdtB,QAAAA,WAAW,EAAE,CAACK,YAAD,CAHC;AAIdU,QAAAA,IAAI,EAAE;AAAE5B,UAAAA,IAAI,EAAE,OAAR;AAAiByB,UAAAA,QAAQ,EAAEW;AAA3B,SAJQ;AAKdL,QAAAA,EAAE,EAAE;AAAE/B,UAAAA,IAAI,EAAE,OAAR;AAAiByB,UAAAA,QAAQ,EAAEc;AAA3B;AALU,OAAhB,CAxC0B,CA+C1B;;AACA,UAAIN,GAAG,CAACE,IAAJ,KAAa,KAAb,IAAsBF,GAAG,CAACS,SAA9B,EAAyCF,OAAO,CAACC,GAAR,GAAc,IAAd;AACzCrB,MAAAA,OAAO,CAACG,QAAR,CAAiBC,IAAjB,CAAsBgB,OAAtB;AAEA7B,MAAAA,KAAK,CAACE,WAAN,CAAkBW,IAAlB,CAAuB;AACrBmB,QAAAA,OAAO,EAAEzB,YADY;AAErB0B,QAAAA,QAAQ,EAAEX,GAAG,CAACY;AAFO,OAAvB;AAIAlC,MAAAA,KAAK,CAACG,MAAN,CAAaU,IAAb,CAAkB;AAChBC,QAAAA,QAAQ,EAAEW,WADM;AAEhB;AACA;AACA;AACA;AACA;AACAV,QAAAA,SAAS,EAAEO,GAAG,CAACL,IAAJ,CAAS7C,GAPJ;AAQhB8C,QAAAA,SAAS,EAAEI,GAAG,CAACL,IAAJ,CAAS3C;AARJ,OAAlB;AAUA0B,MAAAA,KAAK,CAACG,MAAN,CAAaU,IAAb,CAAkB;AAChBC,QAAAA,QAAQ,EAAEc,SADM;AAEhB;AACAO,QAAAA,UAAU,EAAE,6BAAab,GAAG,CAACF,EAAjB,EAAqBvB,SAArB,CAHI;AAIhBkB,QAAAA,SAAS,EAAEO,GAAG,CAACF,EAAJ,CAAOhD,GAJF;AAKhB8C,QAAAA,SAAS,EAAEI,GAAG,CAACF,EAAJ,CAAO9C;AALF,OAAlB;AAOAiC,MAAAA,YAAY;AACb;;AAED,QAAI,0BAAUe,GAAG,CAACE,IAAd,CAAJ,EAAyB;AAAA;;AACvB;AACA;AACA,UAAIF,GAAG,CAACL,IAAJ,CAASmB,MAAT,KAAoBd,GAAG,CAACF,EAAJ,CAAOgB,MAA/B,EAAuC;AACrCd,QAAAA,GAAG,CAACF,EAAJ,CAAOgB,MAAP,GAAiB,GAAEd,GAAG,CAACF,EAAJ,CAAOgB,MAAO,YAAjC;AACD,OALsB,CAMvB;;;AACA,YAAMC,oBAAoB,GAAG,CAAC,CAACf,GAAG,CAACgB,iBAAnC;AACA,YAAMC,cAAc,GAAG,CAAC,sBAACjB,GAAG,CAACY,WAAL,6CAAC,iBAAiBM,MAAlB,CAAxB;AACA,YAAMC,2BAA2B,GAC/BJ,oBAAoB,IACpBf,GAAG,CAACoB,iBADJ,IAEApB,GAAG,CAACgB,iBAAJ,CAAsBnB,MAAtB,KAAiCG,GAAG,CAACoB,iBAAJ,CAAsBvB,MAAtB,GAA+B,CAHlE,CATuB,CAcvB;;AACA,YAAMwB,KAAK,GAAI,OAAMnC,SAAU,EAA/B;AACA,YAAMoC,OAAO,GAAG;AACdC,QAAAA,UAAU,EAAEF,KADE;AAEd;AACAG,QAAAA,YAAY,EAAG,WAAUtC,SAAU,EAHrB;AAIduC,QAAAA,QAAQ,EAAEzB,GAAG,CAAC0B,OAJA;AAKd1C,QAAAA,KAAK,EAAE;AALO,OAAhB,CAhBuB,CAwBvB;;AACAA,MAAAA,KAAK,CAACgB,GAAG,CAACL,IAAJ,CAASmB,MAAV,CAAL,GAAyB;AACvBa,QAAAA,OAAO,EAAE3B,GAAG,CAACL,IAAJ,CAASmB,MADK;AAEvBc,QAAAA,SAAS,EAAE5B,GAAG,CAACL,IAAJ,CAAS3B,IAFG;AAGvB6D,QAAAA,QAAQ,EAAE7B,GAAG,CAACL,IAAJ,CAAS7C,GAHI;AAIvBgF,QAAAA,QAAQ,EAAE9B,GAAG,CAACL,IAAJ,CAAS3C;AAJI,OAAzB;AAMAsE,MAAAA,OAAO,CAACtC,KAAR,CAAcO,IAAd,CAAmB;AAAEoC,QAAAA,OAAO,EAAE3B,GAAG,CAACL,IAAJ,CAASmB;AAApB,OAAnB,EA/BuB,CAiCvB;AACA;AACA;AACA;;AACA,UACEd,GAAG,CAACoB,iBAAJ,KACCD,2BAA2B,IAAI,CAACF,cADjC,CADF,EAGE;AACAjB,QAAAA,GAAG,CAACoB,iBAAJ,CAAsBrB,OAAtB,CAA8B,CAACgC,IAAD,EAAOC,CAAP,KAAa;AACzChD,UAAAA,KAAK,CAAC+C,IAAI,CAACjB,MAAN,CAAL,GAAqB;AACnBa,YAAAA,OAAO,EAAEI,IAAI,CAACjB,MADK;AAEnBc,YAAAA,SAAS,EAAEG,IAAI,CAAC/D,IAFG;AAGnB6D,YAAAA,QAAQ,EAAEE,IAAI,CAACjF,GAHI;AAInBgF,YAAAA,QAAQ,EAAEC,IAAI,CAAC/E;AAJI,WAArB;AAMAsE,UAAAA,OAAO,CAACtC,KAAR,CAAcO,IAAd,CAAmB;AACjBoC,YAAAA,OAAO,EAAEI,IAAI,CAACjB,MADG;AAEjBH,YAAAA,QAAQ,EACNQ,2BAA2B,IAAInB,GAAG,CAACgB,iBAAJ,CAAsBgB,CAAtB,EAAyBd;AAHzC,WAAnB;AAKD,SAZD;AAaD,OAtDsB,CAwDvB;;;AACAlC,MAAAA,KAAK,CAACgB,GAAG,CAACF,EAAJ,CAAOgB,MAAR,CAAL,GAAuB;AACrBa,QAAAA,OAAO,EAAE3B,GAAG,CAACF,EAAJ,CAAOgB,MADK;AAErBc,QAAAA,SAAS,EAAE5B,GAAG,CAACF,EAAJ,CAAO9B,IAFG;AAGrB6D,QAAAA,QAAQ,EAAE7B,GAAG,CAACF,EAAJ,CAAOhD,GAHI;AAIrBgF,QAAAA,QAAQ,EAAE9B,GAAG,CAACF,EAAJ,CAAO9C;AAJI,OAAvB;AAMAsE,MAAAA,OAAO,CAACtC,KAAR,CAAcO,IAAd,CAAmB;AACjBoC,QAAAA,OAAO,EAAE3B,GAAG,CAACF,EAAJ,CAAOgB,MADC;AAEjBH,QAAAA,QAAQ,EACN;AACA,SAACI,oBAAoB,IAAIE,cAAzB,MACCE,2BAA2B,GACxBnB,GAAG,CAACgB,iBAAJ,CAAsBhB,GAAG,CAACgB,iBAAJ,CAAsBnB,MAAtB,GAA+B,CAArD,EAAwDqB,MADhC,GAExBlB,GAAG,CAACY,WAAJ,CAAgBM,MAHpB;AAJe,OAAnB,EA/DuB,CAyEvB;AACA;;AACA,YAAMe,UAAU,GACd,OAAOzD,aAAP,KAAyB,UAAzB,GACIA,aAAa,CAACwB,GAAD,CADjB,GAEIA,GAAG,CAACkC,cAHV;AAIAnD,MAAAA,MAAM,CAACiB,GAAG,CAAC0B,OAAL,CAAN,GAAsB;AACpBS,QAAAA,SAAS,EAAEnC,GAAG,CAACoC,QADK;AAEpBX,QAAAA,QAAQ,EAAEzB,GAAG,CAAC0B,OAFM;AAGpBW,QAAAA,gBAAgB,EAAEJ,UAAU,IAAI,EAHZ;AAIpBK,QAAAA,eAAe,EAAEtC,GAAG,CAACuC,aAAJ,IAAqB,EAJlB;AAKpBC,QAAAA,UAAU,EAAExC,GAAG,CAACyC,SALI;AAMpBC,QAAAA,WAAW,EAAE1C,GAAG,CAAC2C;AANG,OAAtB,CA/EuB,CAwFvB;;AACAjE,MAAAA,KAAK,CAACI,QAAN,CAAeS,IAAf,CAAoB+B,OAApB,EAzFuB,CA2FvB;;AACAnC,MAAAA,OAAO,CAACG,QAAR,CAAiBC,IAAjB,CAAsB;AACpBiB,QAAAA,GAAG,EACD,OAAO/B,cAAP,KAA0B,WAA1B,GAAwC,uBAAOuB,GAAP,CAAxC,GAAsD,CAACvB,cAFrC;AAGpBV,QAAAA,IAAI,EAAE,SAHc;AAIpBe,QAAAA,QAAQ,EAAE,CACR;AACEyC,UAAAA,UAAU,EAAEF,KADd;AAEEuB,UAAAA,eAAe,EAAE,CAFnB;AAGEC,UAAAA,aAAa,EAAE1B,2BAA2B,GACtCnB,GAAG,CAACoB,iBAAJ,CAAsBvB,MAAtB,GAA+B,CAA/B,GAAmC,CADG,GAEtC;AALN,SADQ;AAJU,OAAtB;AAeAX,MAAAA,SAAS;AACV;AACF,GAzLD,EAjCgB,CA4NhB;;AACAR,EAAAA,KAAK,CAACK,MAAN,CAAaQ,IAAb,CAAkB,GAAGuD,MAAM,CAACC,MAAP,CAAchE,MAAd,CAArB;AACAL,EAAAA,KAAK,CAACM,KAAN,CAAYO,IAAZ,CAAiB,GAAGuD,MAAM,CAACC,MAAP,CAAc/D,KAAd,CAApB,EA9NgB,CAgOhB;;AACAN,EAAAA,KAAK,CAACC,QAAN,CAAeY,IAAf,CAAoBJ,OAApB,EAjOgB,CAmOhB;;AACA,SAAOT,KAAP;AACD;;AAKM,SAASsE,kBAAT,CAA4BC,KAA5B,EAAgE;AACrE,SAAOA,KAAK,CAACzD,QAAN,CAAe0D,WAAf,CAA2B,sBAA3B,MAAuD,CAAC,CAA/D;AACD;;AAEM,SAASC,iBAAT,CAA2BF,KAA3B,EAA+D;AACpE,SAAOA,KAAK,CAACzD,QAAN,CAAe0D,WAAf,CAA2B,uBAA3B,MAAwD,CAAC,CAAhE;AACD;;AAEM,SAASE,mBAAT,CAA6BH,KAA7B,EAAiE;AACtE,SAAOA,KAAK,CAACzD,QAAN,CAAe0D,WAAf,CAA2B,WAA3B,MAA4C,CAAC,CAApD;AACD;;AAEM,SAASG,UAAT,CAAoBvG,GAApB,EAA0C;AAC/C,SAAOwG,MAAM,CAACC,QAAP,CAAgBzG,GAAhB,KAAwBA,GAAG,IAAI,CAAC,EAAhC,IAAsCA,GAAG,IAAI,EAApD;AACD;;AAEM,SAAS0G,UAAT,CAAoB9F,GAApB,EAA0C;AAC/C,SAAO4F,MAAM,CAACC,QAAP,CAAgB7F,GAAhB,KAAwBA,GAAG,IAAI,CAAC,GAAhC,IAAuCA,GAAG,IAAI,GAArD;AACD;;AAEM,SAAS+F,aAAT,CAAuBC,GAAvB,EAAkD;AACvD,SACEC,KAAK,CAACC,OAAN,CAAcF,GAAd,KACAA,GAAG,CAAC7D,MAAJ,KAAe,CADf,IAEAwD,UAAU,CAACK,GAAG,CAAC,CAAD,CAAJ,CAFV,IAGAF,UAAU,CAACE,GAAG,CAAC,CAAD,CAAJ,CAJZ;AAMD","sourcesContent":["import {\n Company,\n Itinerary,\n LatLngArray,\n Leg,\n Location,\n TransitiveData,\n UserPosition\n} from \"@opentripplanner/types\";\nimport {\n getPlaceName,\n isAccessMode,\n isFlex,\n isTransit,\n toSentenceCase\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(\n currentPosition: UserPosition\n): Location {\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: string): number[] {\n return (str && str.split(\",\").map(c => +c)) || [];\n}\n\nexport function constructLocation(latlng: {\n lat: number;\n lng: number;\n}): Location {\n return {\n lat: latlng.lat,\n lon: latlng.lng\n };\n}\n\nexport function formatStoredPlaceName(\n location: Location,\n withDetails = true\n): string {\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: Location, location2: Location): boolean {\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: Itinerary,\n companies: Company[],\n getRouteLabel: (leg: Leg) => string,\n disableFlexArc: boolean\n): TransitiveData {\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: string;\n if (leg.from.bikeShareId) {\n fromPlaceId = `bicycle_rent_station_${leg.from.bikeShareId}`;\n if (\n // OTP2 Scooter case\n leg.mode === \"SCOOTER\"\n ) {\n fromPlaceId = `escooter_rent_station_${leg.from.name}`;\n }\n // OTP1 Scooter case\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 arc: false,\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\ntype TransitivePlaceRaw = {\n place_id: string;\n};\nexport function isBikeshareStation(place: TransitivePlaceRaw): boolean {\n return place.place_id.lastIndexOf(\"bicycle_rent_station\") !== -1;\n}\n\nexport function isEScooterStation(place: TransitivePlaceRaw): boolean {\n return place.place_id.lastIndexOf(\"escooter_rent_station\") !== -1;\n}\n\nexport function isCarWalkTransition(place: TransitivePlaceRaw): boolean {\n return place.place_id.lastIndexOf(\"itin_car_\") !== -1;\n}\n\nexport function isValidLat(lat: number): boolean {\n return Number.isFinite(lat) && lat >= -90 && lat <= 90;\n}\n\nexport function isValidLng(lng: number): boolean {\n return Number.isFinite(lng) && lng >= -180 && lng <= 180;\n}\n\nexport function isValidLatLng(arr: LatLngArray): boolean {\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.ts"],"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","arc","hailedCar","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 Company,\n Itinerary,\n LatLngArray,\n Leg,\n Location,\n TransitiveData,\n UserPosition\n} from \"@opentripplanner/types\";\nimport {\n getPlaceName,\n isAccessMode,\n isFlex,\n isTransit,\n toSentenceCase\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(\n currentPosition: UserPosition\n): Location {\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: string): number[] {\n return (str && str.split(\",\").map(c => +c)) || [];\n}\n\nexport function constructLocation(latlng: {\n lat: number;\n lng: number;\n}): Location {\n return {\n lat: latlng.lat,\n lon: latlng.lng\n };\n}\n\nexport function formatStoredPlaceName(\n location: Location,\n withDetails = true\n): string {\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: Location, location2: Location): boolean {\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: Itinerary,\n companies: Company[],\n getRouteLabel: (leg: Leg) => string,\n disableFlexArc: boolean\n): TransitiveData {\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: string;\n if (leg.from.bikeShareId) {\n fromPlaceId = `bicycle_rent_station_${leg.from.bikeShareId}`;\n if (\n // OTP2 Scooter case\n leg.mode === \"SCOOTER\"\n ) {\n fromPlaceId = `escooter_rent_station_${leg.from.bikeShareId}`;\n }\n } else if (leg.from.vertexType === \"VEHICLERENTAL\") {\n // OTP1 Scooter case\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 if (!fromPlaceId) {\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 // OTP2 scooter case\n // Need to check next leg since this is a \"to\" place \"\n if (leg.mode === \"SCOOTER\" || itin.legs?.[idx + 1].mode === \"SCOOTER\") {\n toPlaceId = `escooter_rent_station_${leg.to.bikeShareId}`;\n }\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 if (!toPlaceId) {\n toPlaceId = `itin_street_${streetEdgeId}_to`;\n }\n\n const segment = {\n arc: false,\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\ntype TransitivePlaceRaw = {\n place_id: string;\n};\nexport function isBikeshareStation(place: TransitivePlaceRaw): boolean {\n return place.place_id.lastIndexOf(\"bicycle_rent_station\") !== -1;\n}\n\nexport function isEScooterStation(place: TransitivePlaceRaw): boolean {\n return place.place_id.lastIndexOf(\"escooter_rent_station\") !== -1;\n}\n\nexport function isCarWalkTransition(place: TransitivePlaceRaw): boolean {\n return place.place_id.lastIndexOf(\"itin_car_\") !== -1;\n}\n\nexport function isValidLat(lat: number): boolean {\n return Number.isFinite(lat) && lat >= -90 && lat <= 90;\n}\n\nexport function isValidLng(lng: number): boolean {\n return Number.isFinite(lng) && lng >= -180 && lng <= 180;\n}\n\nexport function isValidLatLng(arr: LatLngArray): boolean {\n return (\n Array.isArray(arr) &&\n arr.length === 2 &&\n isValidLat(arr[0]) &&\n isValidLng(arr[1])\n );\n}\n"],"file":"map.js"}
@@ -345,8 +345,8 @@ const queryParams = [{
345
345
  name: "walkReluctance",
346
346
  routingTypes: ["ITINERARY", "PROFILE"],
347
347
  selector: "SLIDER",
348
- low: 0.5,
349
- high: 20,
348
+ low: 1,
349
+ high: 10,
350
350
  step: 0.5,
351
351
  label: "walk reluctance",
352
352
  labelLow: "More Walking",
@@ -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","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 // This parameter doesn't seem to do anything\n applicable: () => false,\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: () => {\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 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"}
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","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 // This parameter doesn't seem to do anything\n applicable: () => false,\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: () => {\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 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: 1,\n high: 10,\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": "5.0.1-alpha.1",
3
+ "version": "5.0.3-alpha.1",
4
4
  "description": "Core functionality that is shared among numerous UI components",
5
5
  "engines": {
6
6
  "node": ">=13"
@@ -247,11 +247,11 @@ Array [
247
247
  },
248
248
  Object {
249
249
  "applicable": [Function],
250
- "high": 20,
250
+ "high": 10,
251
251
  "label": "walk reluctance",
252
252
  "labelHigh": "More Transit",
253
253
  "labelLow": "More Walking",
254
- "low": 0.5,
254
+ "low": 1,
255
255
  "name": "walkReluctance",
256
256
  "routingTypes": Array [
257
257
  "ITINERARY",
package/src/map.ts CHANGED
@@ -133,10 +133,10 @@ export function itineraryToTransitive(
133
133
  // OTP2 Scooter case
134
134
  leg.mode === "SCOOTER"
135
135
  ) {
136
- fromPlaceId = `escooter_rent_station_${leg.from.name}`;
136
+ fromPlaceId = `escooter_rent_station_${leg.from.bikeShareId}`;
137
137
  }
138
- // OTP1 Scooter case
139
138
  } else if (leg.from.vertexType === "VEHICLERENTAL") {
139
+ // OTP1 Scooter case
140
140
  fromPlaceId = `escooter_rent_station_${leg.from.name}`;
141
141
  } else if (
142
142
  leg.mode === "CAR" &&
@@ -145,13 +145,18 @@ export function itineraryToTransitive(
145
145
  ) {
146
146
  // create a special place ID for car legs preceded by walking legs
147
147
  fromPlaceId = `itin_car_${streetEdgeId}_from`;
148
- } else {
148
+ } else if (!fromPlaceId) {
149
149
  fromPlaceId = `itin_street_${streetEdgeId}_from`;
150
150
  }
151
151
 
152
152
  let toPlaceId;
153
153
  if (leg.to.bikeShareId) {
154
154
  toPlaceId = `bicycle_rent_station_${leg.to.bikeShareId}`;
155
+ // OTP2 scooter case
156
+ // Need to check next leg since this is a "to" place "
157
+ if (leg.mode === "SCOOTER" || itin.legs?.[idx + 1].mode === "SCOOTER") {
158
+ toPlaceId = `escooter_rent_station_${leg.to.bikeShareId}`;
159
+ }
155
160
  } else if (leg.to.vertexType === "VEHICLERENTAL") {
156
161
  toPlaceId = `escooter_rent_station_${leg.to.name}`;
157
162
  } else if (
@@ -161,7 +166,7 @@ export function itineraryToTransitive(
161
166
  ) {
162
167
  // create a special place ID for car legs followed by walking legs
163
168
  toPlaceId = `itin_car_${streetEdgeId}_to`;
164
- } else {
169
+ } else if (!toPlaceId) {
165
170
  toPlaceId = `itin_street_${streetEdgeId}_to`;
166
171
  }
167
172
 
@@ -394,8 +394,8 @@ const queryParams = [
394
394
  name: "walkReluctance",
395
395
  routingTypes: ["ITINERARY", "PROFILE"],
396
396
  selector: "SLIDER",
397
- low: 0.5,
398
- high: 20,
397
+ low: 1,
398
+ high: 10,
399
399
  step: 0.5,
400
400
  label: "walk reluctance",
401
401
  labelLow: "More Walking",
@@ -227,7 +227,7 @@
227
227
  "affectsGlobalScope": false
228
228
  },
229
229
  "./src/map.ts": {
230
- "version": "92be90a598e2cc6b090c21370cf29ce69c7b5b4d2f7fe4929bf81e5be7a9729e",
230
+ "version": "a0e805c7d0db4a9a52d6b2135e414cb146186f16d6da866b8fb0a527cedd573f",
231
231
  "signature": "bfd604d32f4b9db8bfec69a5a12f13afc760d5ad4010667b01c391d69d1a30e6",
232
232
  "affectsGlobalScope": false
233
233
  },