From 7d35c985f4a218d331d6a601f52294beb942fc85 Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Fri, 18 Apr 2025 12:31:21 -0400 Subject: [PATCH 01/24] chore(deps): Upgrade maplibre-gl and react-map-gl. Fix imports. --- lib/components/app/responsive-webapp.js | 2 +- lib/components/map/default-map.tsx | 2 +- lib/components/map/elevation-point-marker.tsx | 2 +- .../map/itinerary-summary-overlay.tsx | 2 +- .../map/nearby-view-dot-overlay.tsx | 2 +- lib/components/map/point-popup.tsx | 2 +- lib/components/map/route-preview-overlay.tsx | 2 +- lib/components/map/simple-map.tsx | 2 +- lib/components/map/with-map.tsx | 2 +- lib/components/mobile/batch-results-screen.js | 2 +- lib/components/viewers/nearby/nearby-view.tsx | 2 +- package.json | 4 +- yarn.lock | 268 +++++++++++++++++- 13 files changed, 277 insertions(+), 17 deletions(-) diff --git a/lib/components/app/responsive-webapp.js b/lib/components/app/responsive-webapp.js index e3d98f835..b49678115 100644 --- a/lib/components/app/responsive-webapp.js +++ b/lib/components/app/responsive-webapp.js @@ -7,7 +7,7 @@ import { ConnectedRouter } from 'connected-react-router' import { createHashHistory } from 'history' import { getFitBoundsPadding } from '@opentripplanner/base-map/lib/util' import { injectIntl, IntlProvider } from 'react-intl' -import { MapProvider } from 'react-map-gl' +import { MapProvider } from 'react-map-gl/maplibre' import { QueryParamProvider } from 'use-query-params' import { ReactRouter5Adapter } from 'use-query-params/adapters/react-router-5' import { Route, Switch, withRouter } from 'react-router' diff --git a/lib/components/map/default-map.tsx b/lib/components/map/default-map.tsx index e88fa5211..86d4f429b 100644 --- a/lib/components/map/default-map.tsx +++ b/lib/components/map/default-map.tsx @@ -2,7 +2,7 @@ // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-nocheck import { connect } from 'react-redux' -import { GeolocateControl, NavigationControl } from 'react-map-gl' +import { GeolocateControl, NavigationControl } from 'react-map-gl/maplibre' import { getCurrentDate } from '@opentripplanner/core-utils/lib/time' import { injectIntl } from 'react-intl' import BaseMap from '@opentripplanner/base-map' diff --git a/lib/components/map/elevation-point-marker.tsx b/lib/components/map/elevation-point-marker.tsx index 842a0ec1b..083f85530 100644 --- a/lib/components/map/elevation-point-marker.tsx +++ b/lib/components/map/elevation-point-marker.tsx @@ -2,7 +2,7 @@ import { connect } from 'react-redux' import { ELEVATION_BLUE } from '../util/colors' import { Leg } from '@opentripplanner/types' -import { Marker } from 'react-map-gl' +import { Marker } from 'react-map-gl/maplibre' import coreUtils from '@opentripplanner/core-utils' import React from 'react' import styled from 'styled-components' diff --git a/lib/components/map/itinerary-summary-overlay.tsx b/lib/components/map/itinerary-summary-overlay.tsx index 5f47f527d..124e539e8 100644 --- a/lib/components/map/itinerary-summary-overlay.tsx +++ b/lib/components/map/itinerary-summary-overlay.tsx @@ -1,7 +1,7 @@ import { connect } from 'react-redux' import { Feature, lineString, LineString, Position } from '@turf/helpers' import { Itinerary, Location } from '@opentripplanner/types' -import { Marker } from 'react-map-gl' +import { Marker } from 'react-map-gl/maplibre' import centroid from '@turf/centroid' import distance from '@turf/distance' import polyline from '@mapbox/polyline' diff --git a/lib/components/map/nearby-view-dot-overlay.tsx b/lib/components/map/nearby-view-dot-overlay.tsx index 2bf65a49b..be9b10eb2 100644 --- a/lib/components/map/nearby-view-dot-overlay.tsx +++ b/lib/components/map/nearby-view-dot-overlay.tsx @@ -1,6 +1,6 @@ import { connect } from 'react-redux' import { Location } from '@opentripplanner/types' -import { Marker } from 'react-map-gl' +import { Marker } from 'react-map-gl/maplibre' import React from 'react' import styled from 'styled-components' diff --git a/lib/components/map/point-popup.tsx b/lib/components/map/point-popup.tsx index 071901434..f3783821e 100644 --- a/lib/components/map/point-popup.tsx +++ b/lib/components/map/point-popup.tsx @@ -3,7 +3,7 @@ import { FocusTrapWrapper } from '@opentripplanner/building-blocks' import { Popup } from '@opentripplanner/base-map' import { Search } from '@styled-icons/fa-solid/Search' import { useIntl, WrappedComponentProps } from 'react-intl' -import { useMap } from 'react-map-gl' +import { useMap } from 'react-map-gl/maplibre' import FromToLocationPicker from '@opentripplanner/from-to-location-picker' import React, { useCallback } from 'react' import styled from 'styled-components' diff --git a/lib/components/map/route-preview-overlay.tsx b/lib/components/map/route-preview-overlay.tsx index 1e071c0c3..141edfe5c 100644 --- a/lib/components/map/route-preview-overlay.tsx +++ b/lib/components/map/route-preview-overlay.tsx @@ -1,7 +1,7 @@ import { connect } from 'react-redux' import { getFitBoundsPadding } from '@opentripplanner/base-map/lib/util' import { Itinerary, Location } from '@opentripplanner/types' -import { Layer, Source, useMap } from 'react-map-gl' +import { Layer, Source, useMap } from 'react-map-gl/maplibre' import polyline from '@mapbox/polyline' import React, { useEffect } from 'react' diff --git a/lib/components/map/simple-map.tsx b/lib/components/map/simple-map.tsx index f9312a9a4..b1cbe7de0 100644 --- a/lib/components/map/simple-map.tsx +++ b/lib/components/map/simple-map.tsx @@ -1,5 +1,5 @@ import { connect } from 'react-redux' -import { GeolocateControl, NavigationControl } from 'react-map-gl' +import { GeolocateControl, NavigationControl } from 'react-map-gl/maplibre' import { Itinerary } from '@opentripplanner/types' import { useIntl } from 'react-intl' import BaseMap from '@opentripplanner/base-map' diff --git a/lib/components/map/with-map.tsx b/lib/components/map/with-map.tsx index c694b8553..51518931c 100644 --- a/lib/components/map/with-map.tsx +++ b/lib/components/map/with-map.tsx @@ -1,4 +1,4 @@ -import { MapRef, useMap } from 'react-map-gl' +import { MapRef, useMap } from 'react-map-gl/maplibre' import React, { ComponentType, FC } from 'react' /** diff --git a/lib/components/mobile/batch-results-screen.js b/lib/components/mobile/batch-results-screen.js index 69119f1c3..3cb41c7c9 100644 --- a/lib/components/mobile/batch-results-screen.js +++ b/lib/components/mobile/batch-results-screen.js @@ -4,7 +4,7 @@ import { Button } from 'react-bootstrap' import { connect } from 'react-redux' import { FormattedMessage } from 'react-intl' import { ListUl } from '@styled-icons/fa-solid/ListUl' -import { useMap } from 'react-map-gl' +import { useMap } from 'react-map-gl/maplibre' import coreUtils from '@opentripplanner/core-utils' import React, { useEffect } from 'react' import styled, { css } from 'styled-components' diff --git a/lib/components/viewers/nearby/nearby-view.tsx b/lib/components/viewers/nearby/nearby-view.tsx index 28aa0a108..5eac00dfa 100644 --- a/lib/components/viewers/nearby/nearby-view.tsx +++ b/lib/components/viewers/nearby/nearby-view.tsx @@ -2,7 +2,7 @@ import { connect } from 'react-redux' import { FormattedMessage, useIntl } from 'react-intl' import { Location } from '@opentripplanner/types' import { LonLatInput } from '@conveyal/lonlat' -import { MapRef, useMap } from 'react-map-gl' +import { MapRef, useMap } from 'react-map-gl/maplibre' import { Search } from '@styled-icons/fa-solid/Search' import coreUtils from '@opentripplanner/core-utils' import getGeocoder from '@opentripplanner/geocoder' diff --git a/package.json b/package.json index 6d1173c0b..2c5a18427 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "lodash.isempty": "^4.4.0", "lodash.isequal": "^4.5.0", "lodash.memoize": "^4.1.2", - "maplibre-gl": "^2.1.9", + "maplibre-gl": "^5.3.1", "object-hash": "^3.0.0", "object-path": "^0.11.8", "object-to-formdata": "^4.1.0", @@ -107,7 +107,7 @@ "react-hot-toast": "^2.4.1", "react-intl": "^5.20.10", "react-loading-skeleton": "^2.1.1", - "react-map-gl": "^7.0.15", + "react-map-gl": "^8.0.4", "react-phone-number-input": "^3.1.0", "react-redux": "^7.1.0", "react-resize-detector": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index 82eea5f47..444150e58 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2319,7 +2319,7 @@ resolved "https://registry.yarnpkg.com/dry-uninstall/-/dry-uninstall-0.3.0.tgz#29847a27ed3b3bb94e6212547a677e37f4427011" integrity sha512-b8h94RVpETWkVV59x62NsY++79bM7Si6Dxq7a4iVxRcJU3ZJJ4vaiC7wUZwM8WDK0ySRL+i+T/1SMAzbJLejYA== -"@mapbox/geojson-rewind@^0.5.1": +"@mapbox/geojson-rewind@^0.5.1", "@mapbox/geojson-rewind@^0.5.2": version "0.5.2" resolved "https://registry.yarnpkg.com/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz#591a5d71a9cd1da1a0bf3420b3bea31b0fc7946a" integrity sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA== @@ -2327,7 +2327,7 @@ get-stream "^6.0.1" minimist "^1.2.6" -"@mapbox/jsonlint-lines-primitives@^2.0.2": +"@mapbox/jsonlint-lines-primitives@^2.0.2", "@mapbox/jsonlint-lines-primitives@~2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz#ce56e539f83552b58d10d672ea4d6fc9adc7b234" integrity sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ== @@ -2354,6 +2354,11 @@ resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-2.0.5.tgz#cdba698d3d65087643130f9af43a2b622ce0b372" integrity sha512-OhXt2lS//WpLdkqrzo/KwB7SRD8AiNTFFzuo9n14IBupzIMa67yGItcK7I2W9D8Ghpa4T04Sw9FWsKCJG50Bxw== +"@mapbox/tiny-sdf@^2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-2.0.6.tgz#9a1d33e5018093e88f6a4df2343e886056287282" + integrity sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA== + "@mapbox/unitbezier@^0.0.1": version "0.0.1" resolved "https://registry.yarnpkg.com/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz#d32deb66c7177e9e9dfc3bbd697083e2e657ff01" @@ -2371,6 +2376,31 @@ resolved "https://registry.yarnpkg.com/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz#497c67a1cef50d1a2459ba60f315e448d2ad87fe" integrity sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q== +"@maplibre/maplibre-gl-style-spec@^19.2.1": + version "19.3.3" + resolved "https://registry.yarnpkg.com/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-19.3.3.tgz#a106248bd2e25e77c963a362aeaf630e00f924e9" + integrity sha512-cOZZOVhDSulgK0meTsTkmNXb1ahVvmTmWmfx9gRBwc6hq98wS9JP35ESIoNq3xqEan+UN+gn8187Z6E4NKhLsw== + dependencies: + "@mapbox/jsonlint-lines-primitives" "~2.0.2" + "@mapbox/unitbezier" "^0.0.1" + json-stringify-pretty-compact "^3.0.0" + minimist "^1.2.8" + rw "^1.3.3" + sort-object "^3.0.3" + +"@maplibre/maplibre-gl-style-spec@^23.1.0": + version "23.1.0" + resolved "https://registry.yarnpkg.com/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-23.1.0.tgz#ad59731b0547ee0986ba4ccff699894dd60f0650" + integrity sha512-R6/ihEuC5KRexmKIYkWqUv84Gm+/QwsOUgHyt1yy2XqCdGdLvlBWVWIIeTZWN4NGdwmY6xDzdSGU2R9oBLNg2w== + dependencies: + "@mapbox/jsonlint-lines-primitives" "~2.0.2" + "@mapbox/unitbezier" "^0.0.1" + json-stringify-pretty-compact "^4.0.0" + minimist "^1.2.8" + quickselect "^3.0.0" + rw "^1.3.3" + tinyqueue "^3.0.0" + "@modyfi/vite-plugin-yaml@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@modyfi/vite-plugin-yaml/-/vite-plugin-yaml-1.1.1.tgz#f3d85a76aebbbe3c143e8f783a59ce1dcf391670" @@ -3896,11 +3926,23 @@ dependencies: "@types/node" "*" +"@types/geojson-vt@3.2.5": + version "3.2.5" + resolved "https://registry.yarnpkg.com/@types/geojson-vt/-/geojson-vt-3.2.5.tgz#b6c356874991d9ab4207533476dfbcdb21e38408" + integrity sha512-qDO7wqtprzlpe8FfQ//ClPV9xiuoh2nkIgiouIptON9w5jvD/fA4szvP9GBlDVdJ5dldAl0kX/sy3URbWwLx0g== + dependencies: + "@types/geojson" "*" + "@types/geojson@*", "@types/geojson@^7946.0.8": version "7946.0.8" resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.8.tgz#30744afdb385e2945e22f3b033f897f76b1f12ca" integrity sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA== +"@types/geojson@^7946.0.16": + version "7946.0.16" + resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.16.tgz#8ebe53d69efada7044454e3305c19017d97ced2a" + integrity sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg== + "@types/glob@^7.1.1", "@types/glob@^7.1.3": version "7.2.0" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" @@ -4013,6 +4055,11 @@ resolved "https://registry.yarnpkg.com/@types/mapbox__point-geometry/-/mapbox__point-geometry-0.1.2.tgz#488a9b76e8457d6792ea2504cdd4ecdd9860a27e" integrity sha512-D0lgCq+3VWV85ey1MZVkE8ZveyuvW5VAfuahVTQRpXFQTxw03SuIf1/K4UQ87MMIXVKzpFjXFiFMZzLj2kU+iA== +"@types/mapbox__point-geometry@^0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@types/mapbox__point-geometry/-/mapbox__point-geometry-0.1.4.tgz#0ef017b75eedce02ff6243b4189210e2e6d5e56d" + integrity sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA== + "@types/mapbox__polyline@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@types/mapbox__polyline/-/mapbox__polyline-1.0.2.tgz#788cf4d72326961eacf44cb1abca435860ec4673" @@ -4029,6 +4076,15 @@ "@types/mapbox__point-geometry" "*" "@types/pbf" "*" +"@types/mapbox__vector-tile@^1.3.4": + version "1.3.4" + resolved "https://registry.yarnpkg.com/@types/mapbox__vector-tile/-/mapbox__vector-tile-1.3.4.tgz#ad757441ef1d34628d9e098afd9c91423c1f8734" + integrity sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg== + dependencies: + "@types/geojson" "*" + "@types/mapbox__point-geometry" "*" + "@types/pbf" "*" + "@types/minimatch@*": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" @@ -4069,6 +4125,11 @@ resolved "https://registry.yarnpkg.com/@types/pbf/-/pbf-3.0.2.tgz#8d291ad68b4b8c533e96c174a2e3e6399a59ed61" integrity sha512-EDrLIPaPXOZqDjrkzxxbX7UlJSeQVgah3i0aA4pOSzmK9zq3BIh7/MZIQxED7slJByvKM4Gc6Hypyu2lJzh3SQ== +"@types/pbf@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/pbf/-/pbf-3.0.5.tgz#a9495a58d8c75be4ffe9a0bd749a307715c07404" + integrity sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA== + "@types/prettier@^2.0.0", "@types/prettier@^2.1.5": version "2.3.2" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.3.2.tgz#fc8c2825e4ed2142473b4a81064e6e081463d1b3" @@ -4187,6 +4248,13 @@ "@types/react" "*" csstype "^3.0.2" +"@types/supercluster@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/supercluster/-/supercluster-7.1.3.tgz#1a1bc2401b09174d9c9e44124931ec7874a72b27" + integrity sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA== + dependencies: + "@types/geojson" "*" + "@types/tapable@^1", "@types/tapable@^1.0.5": version "1.0.8" resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" @@ -4357,6 +4425,18 @@ "@typescript-eslint/types" "4.30.0" eslint-visitor-keys "^2.0.0" +"@vis.gl/react-mapbox@8.0.4": + version "8.0.4" + resolved "https://registry.yarnpkg.com/@vis.gl/react-mapbox/-/react-mapbox-8.0.4.tgz#f87fc26fa89ccf62f39e04cea690a1faa0b23178" + integrity sha512-NFk0vsWcNzSs0YCsVdt2100Zli9QWR+pje8DacpLkkGEAXFaJsFtI1oKD0Hatiate4/iAIW39SQHhgfhbeEPfQ== + +"@vis.gl/react-maplibre@8.0.4": + version "8.0.4" + resolved "https://registry.yarnpkg.com/@vis.gl/react-maplibre/-/react-maplibre-8.0.4.tgz#f7c4c38aa57d03510c9456667ba36dbeab0cfeda" + integrity sha512-HwZyfLjEu+y1mUFvwDAkVxinGm8fEegaWN+O8np/WZ2Sqe5Lv6OXFpV6GWz9LOEvBYMbGuGk1FQdejo+4HCJ5w== + dependencies: + "@maplibre/maplibre-gl-style-spec" "^19.2.1" + "@vitejs/plugin-react@^4.3.4": version "4.4.1" resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.4.1.tgz#d7d1e9c9616d7536b0953637edfee7c6cbe2fe0f" @@ -5964,6 +6044,21 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +bytewise-core@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/bytewise-core/-/bytewise-core-1.2.3.tgz#3fb410c7e91558eb1ab22a82834577aa6bd61d42" + integrity sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA== + dependencies: + typewise-core "^1.2" + +bytewise@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/bytewise/-/bytewise-1.1.0.tgz#1d13cbff717ae7158094aa881b35d081b387253e" + integrity sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ== + dependencies: + bytewise-core "^1.2.2" + typewise "^1.0.3" + cacache@^12.0.2: version "12.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" @@ -7873,6 +7968,11 @@ earcut@^2.2.3: resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.3.tgz#d44ced2ff5a18859568e327dd9c7d46b16f55cf4" integrity sha512-iRDI1QeCQIhMCZk48DRDMVgQSSBDmbzzNhnxIo+pwx3swkfjMh6vh0nWLq1NdvGHLKH6wIrAM3vQWeTj6qeoug== +earcut@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/earcut/-/earcut-3.0.1.tgz#f60b3f671c5657cca9d3e131c5527c5dde00ef38" + integrity sha512-0l1/0gOjESMeQyYaK5IDiPNvFeu93Z/cO0TjZh9eZ1vyCtZnA7KMZ8rQggpsJHIbGSdrqYq9OhuveadOVHCshw== + easy-bem@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/easy-bem/-/easy-bem-1.1.1.tgz#1bfcc10425498090bcfddc0f9c000aba91399e03" @@ -9529,6 +9629,11 @@ geojson-vt@^3.2.1: resolved "https://registry.yarnpkg.com/geojson-vt/-/geojson-vt-3.2.1.tgz#f8adb614d2c1d3f6ee7c4265cad4bbf3ad60c8b7" integrity sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg== +geojson-vt@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/geojson-vt/-/geojson-vt-4.0.2.tgz#1162f6c7d61a0ba305b1030621e6e111f847828a" + integrity sha512-AV9ROqlNqoZEIJGfm1ncNjEXfkz2hdFlZf0qkVfmkwdKa8vj7H16YUOT81rJw1rdFhyEDlN2Tds91p/glzbl5A== + get-assigned-identifiers@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" @@ -9613,7 +9718,7 @@ get-stream@^6.0.0, get-stream@^6.0.1: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -get-value@^2.0.3, get-value@^2.0.6: +get-value@^2.0.2, get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= @@ -9742,6 +9847,15 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" +global-prefix@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-4.0.0.tgz#e9cc79aab9be1d03287e156a3f912dd0895463ed" + integrity sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA== + dependencies: + ini "^4.1.3" + kind-of "^6.0.3" + which "^4.0.0" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -10484,6 +10598,11 @@ ini@^2.0.0: resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== +ini@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.3.tgz#4c359675a6071a46985eb39b14e4a2c0ec98a795" + integrity sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg== + init-package-json@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-2.0.4.tgz#9f9f66cd5934e6d5f645150e15013d384d0b90d2" @@ -11076,6 +11195,11 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= +isexe@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" + integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== + isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" @@ -12221,6 +12345,16 @@ json-stringify-nice@^1.1.4: resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== +json-stringify-pretty-compact@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-stringify-pretty-compact/-/json-stringify-pretty-compact-3.0.0.tgz#f71ef9d82ef16483a407869556588e91b681d9ab" + integrity sha512-Rc2suX5meI0S3bfdZuA7JMFBGkJ875ApfVyq2WHELjBiiG22My/l7/8zPpH/CfFVQHuVLd8NLR0nv6vi0BYYKA== + +json-stringify-pretty-compact@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/json-stringify-pretty-compact/-/json-stringify-pretty-compact-4.0.0.tgz#cf4844770bddee3cb89a6170fe4b00eee5dbf1d4" + integrity sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q== + json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -12309,6 +12443,11 @@ kdbush@^3.0.0: resolved "https://registry.yarnpkg.com/kdbush/-/kdbush-3.0.0.tgz#f8484794d47004cc2d85ed3a79353dbe0abc2bf0" integrity sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew== +kdbush@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/kdbush/-/kdbush-4.0.2.tgz#2f7b7246328b4657dd122b6c7f025fbc2c868e39" + integrity sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA== + keycode@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04" @@ -12981,6 +13120,38 @@ maplibre-gl@^2.1.9: tinyqueue "^2.0.3" vt-pbf "^3.1.3" +maplibre-gl@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/maplibre-gl/-/maplibre-gl-5.3.1.tgz#bae6408da2d708ee20aa2d8b44f8e39de8c7cd93" + integrity sha512-Ihx+oUUSsZkjMou1Cw5J6silE+5OtFFQSPslWF9+7v4yFC/XDHrpsORYO9lWE4KZI0djCEUpZQJpkpnMArAbeA== + dependencies: + "@mapbox/geojson-rewind" "^0.5.2" + "@mapbox/jsonlint-lines-primitives" "^2.0.2" + "@mapbox/point-geometry" "^0.1.0" + "@mapbox/tiny-sdf" "^2.0.6" + "@mapbox/unitbezier" "^0.0.1" + "@mapbox/vector-tile" "^1.3.1" + "@mapbox/whoots-js" "^3.1.0" + "@maplibre/maplibre-gl-style-spec" "^23.1.0" + "@types/geojson" "^7946.0.16" + "@types/geojson-vt" "3.2.5" + "@types/mapbox__point-geometry" "^0.1.4" + "@types/mapbox__vector-tile" "^1.3.4" + "@types/pbf" "^3.0.5" + "@types/supercluster" "^7.1.3" + earcut "^3.0.1" + geojson-vt "^4.0.2" + gl-matrix "^3.4.3" + global-prefix "^4.0.0" + kdbush "^4.0.2" + murmurhash-js "^1.0.0" + pbf "^3.3.0" + potpack "^2.0.0" + quickselect "^3.0.0" + supercluster "^8.0.1" + tinyqueue "^3.0.0" + vt-pbf "^3.1.3" + marked-terminal@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-4.1.1.tgz#34a6f063cd6cfe26bffaf5bac3724e24242168a9" @@ -13244,6 +13415,11 @@ minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@^1. resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== +minimist@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + minipass-collect@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" @@ -14563,6 +14739,14 @@ pbf@^3.2.1: ieee754 "^1.1.12" resolve-protobuf-schema "^2.1.0" +pbf@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/pbf/-/pbf-3.3.0.tgz#1790f3d99118333cc7f498de816028a346ef367f" + integrity sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q== + dependencies: + ieee754 "^1.1.12" + resolve-protobuf-schema "^2.1.0" + pbkdf2@^3.0.3, pbkdf2@^3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.3.tgz#8be674d591d65658113424592a95d1517318dd4b" @@ -15412,6 +15596,11 @@ potpack@^1.0.2: resolved "https://registry.yarnpkg.com/potpack/-/potpack-1.0.2.tgz#23b99e64eb74f5741ffe7656b5b5c4ddce8dfc14" integrity sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ== +potpack@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/potpack/-/potpack-2.0.0.tgz#61f4dd2dc4b3d5e996e3698c0ec9426d0e169104" + integrity sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -15796,6 +15985,11 @@ quickselect@^2.0.0: resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018" integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw== +quickselect@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-3.0.0.tgz#a37fc953867d56f095a20ac71c6d27063d2de603" + integrity sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g== + quote-stream@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/quote-stream/-/quote-stream-1.0.2.tgz#84963f8c9c26b942e153feeb53aae74652b7e0b2" @@ -16051,6 +16245,14 @@ react-map-gl@^7.0.15: dependencies: "@types/mapbox-gl" "^2.6.0" +react-map-gl@^8.0.4: + version "8.0.4" + resolved "https://registry.yarnpkg.com/react-map-gl/-/react-map-gl-8.0.4.tgz#7eebcb83e281ffd86820befe27d030a071e4c980" + integrity sha512-SHdpvFIvswsZBg6BCPcwY/nbKuCo3sJM1Cj7Sd+gA3gFRFOixD+KtZ2XSuUWq2WySL2emYEXEgrLZoXsV4Ut4Q== + dependencies: + "@vis.gl/react-mapbox" "8.0.4" + "@vis.gl/react-maplibre" "8.0.4" + react-modal@^3.12.1: version "3.14.3" resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.14.3.tgz#7eb7c5ec85523e5843e2d4737cc17fc3f6aeb1c0" @@ -17003,6 +17205,11 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" +rw@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" + integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== + rxjs@^6.4.0, rxjs@^6.6.7: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" @@ -17606,6 +17813,16 @@ socks@^2.6.1: ip "^1.1.5" smart-buffer "^4.1.0" +sort-asc@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/sort-asc/-/sort-asc-0.2.0.tgz#00a49e947bc25d510bfde2cbb8dffda9f50eb2fc" + integrity sha512-umMGhjPeHAI6YjABoSTrFp2zaBtXBej1a0yKkuMUyjjqu6FJsTF+JYwCswWDg+zJfk/5npWUUbd33HH/WLzpaA== + +sort-desc@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/sort-desc/-/sort-desc-0.2.0.tgz#280c1bdafc6577887cedbad1ed2e41c037976646" + integrity sha512-NqZqyvL4VPW+RAxxXnB8gvE1kyikh8+pR+T+CXLksVRN9eiQqkQlPwqWYU0mF9Jm7UnctShlxLyAt1CaBOTL1w== + sort-keys@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" @@ -17613,6 +17830,18 @@ sort-keys@^1.0.0: dependencies: is-plain-obj "^1.0.0" +sort-object@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/sort-object/-/sort-object-3.0.3.tgz#945727165f244af9dc596ad4c7605a8dee80c269" + integrity sha512-nK7WOY8jik6zaG9CRwZTaD5O7ETWDLZYMM12pqY8htll+7dYeqGfEUPcUBHOpSJg2vJOrvFIY2Dl5cX2ih1hAQ== + dependencies: + bytewise "^1.1.0" + get-value "^2.0.2" + is-extendable "^0.1.1" + sort-asc "^0.2.0" + sort-desc "^0.2.0" + union-value "^1.0.1" + source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -18188,6 +18417,13 @@ supercluster@^7.1.4: dependencies: kdbush "^3.0.0" +supercluster@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-8.0.1.tgz#9946ba123538e9e9ab15de472531f604e7372df5" + integrity sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ== + dependencies: + kdbush "^4.0.2" + supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -18521,6 +18757,11 @@ tinyqueue@^2.0.3: resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08" integrity sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA== +tinyqueue@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-3.0.0.tgz#101ea761ccc81f979e29200929e78f1556e3661e" + integrity sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g== + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -18904,6 +19145,18 @@ typescript@^4.4.2, typescript@^4.5: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== +typewise-core@^1.2, typewise-core@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/typewise-core/-/typewise-core-1.2.0.tgz#97eb91805c7f55d2f941748fa50d315d991ef195" + integrity sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg== + +typewise@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typewise/-/typewise-1.0.3.tgz#1067936540af97937cc5dcf9922486e9fa284651" + integrity sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ== + dependencies: + typewise-core "^1.2.0" + uglify-js@^3.1.4: version "3.14.1" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.1.tgz#e2cb9fe34db9cb4cf7e35d1d26dfea28e09a7d06" @@ -18994,7 +19247,7 @@ unicode-trie@^2.0.0: pako "^0.2.5" tiny-inflate "^1.0.0" -union-value@^1.0.0: +union-value@^1.0.0, union-value@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== @@ -19597,6 +19850,13 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" +which@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a" + integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg== + dependencies: + isexe "^3.1.1" + wide-align@^1.1.0, wide-align@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" From d961b64dbdc99d410047dd082c145b71946ba3d7 Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Fri, 18 Apr 2025 12:57:03 -0400 Subject: [PATCH 02/24] refactor(getFitBoundsPadding): Import from OTP-UI base-map ESM --- lib/components/app/responsive-webapp.js | 4 ++-- lib/components/map/route-preview-overlay.tsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/components/app/responsive-webapp.js b/lib/components/app/responsive-webapp.js index b49678115..c5e209177 100644 --- a/lib/components/app/responsive-webapp.js +++ b/lib/components/app/responsive-webapp.js @@ -5,13 +5,13 @@ import { Col, Grid, Row } from 'react-bootstrap' import { connect } from 'react-redux' import { ConnectedRouter } from 'connected-react-router' import { createHashHistory } from 'history' -import { getFitBoundsPadding } from '@opentripplanner/base-map/lib/util' import { injectIntl, IntlProvider } from 'react-intl' import { MapProvider } from 'react-map-gl/maplibre' import { QueryParamProvider } from 'use-query-params' import { ReactRouter5Adapter } from 'use-query-params/adapters/react-router-5' import { Route, Switch, withRouter } from 'react-router' import { Toaster } from 'react-hot-toast' +import { util } from '@opentripplanner/base-map' import coreUtils from '@opentripplanner/core-utils' import isEqual from 'lodash.isequal' import PropTypes from 'prop-types' @@ -110,7 +110,7 @@ class ResponsiveWebapp extends Component { if (query.from && query.to) { map?.fitBounds([query.from, query.to], { duration: 600, - padding: getFitBoundsPadding(map, 0.2) + padding: util.getFitBoundsPadding(map, 0.2) }) } else if (query.from && !query.to) { setMapCenter(map, query.from) diff --git a/lib/components/map/route-preview-overlay.tsx b/lib/components/map/route-preview-overlay.tsx index 141edfe5c..4f0b5c0d4 100644 --- a/lib/components/map/route-preview-overlay.tsx +++ b/lib/components/map/route-preview-overlay.tsx @@ -1,7 +1,7 @@ import { connect } from 'react-redux' -import { getFitBoundsPadding } from '@opentripplanner/base-map/lib/util' import { Itinerary, Location } from '@opentripplanner/types' import { Layer, Source, useMap } from 'react-map-gl/maplibre' +import { util } from '@opentripplanner/base-map' import polyline from '@mapbox/polyline' import React, { useEffect } from 'react' @@ -36,7 +36,7 @@ const RoutePreviewOverlay = ({ if (visible && mainPanelContent === null) { map?.fitBounds([from, to], { duration: 600, - padding: getFitBoundsPadding(map, 0.2) + padding: util.getFitBoundsPadding(map, 0.2) }) } }, [map, visible, from, to, mainPanelContent]) From d2f2d22ba607233df58232179a11f902359c8b6a Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Fri, 18 Apr 2025 15:22:11 -0400 Subject: [PATCH 03/24] refactor: Update imports for react-map-gl --- lib/components/util/types.ts | 2 +- lib/components/viewers/nearby/nearby-view.tsx | 8 +++++--- lib/components/viewers/stop-schedule-viewer.tsx | 2 +- lib/util/config-types.ts | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/components/util/types.ts b/lib/components/util/types.ts index 83bcd7930..125405636 100644 --- a/lib/components/util/types.ts +++ b/lib/components/util/types.ts @@ -5,7 +5,7 @@ import { Route, Stop } from '@opentripplanner/types' -import { MapRef } from 'react-map-gl' +import { MapRef } from 'react-map-gl/maplibre' export interface StopTimeTrip { blockId?: string diff --git a/lib/components/viewers/nearby/nearby-view.tsx b/lib/components/viewers/nearby/nearby-view.tsx index 5eac00dfa..87f05cfc8 100644 --- a/lib/components/viewers/nearby/nearby-view.tsx +++ b/lib/components/viewers/nearby/nearby-view.tsx @@ -2,7 +2,8 @@ import { connect } from 'react-redux' import { FormattedMessage, useIntl } from 'react-intl' import { Location } from '@opentripplanner/types' import { LonLatInput } from '@conveyal/lonlat' -import { MapRef, useMap } from 'react-map-gl/maplibre' +import { MapLibreEvent } from 'maplibre-gl' +import { MapRef, useMap, ViewStateChangeEvent } from 'react-map-gl/maplibre' import { Search } from '@styled-icons/fa-solid/Search' import coreUtils from '@opentripplanner/core-utils' import getGeocoder from '@opentripplanner/geocoder' @@ -173,7 +174,8 @@ function NearbyView({ }, [location, setHighlightedLocation]) useEffect(() => { - const moveListener = (e: mapboxgl.EventData) => { + const moveListener = (e: ViewStateChangeEvent) => { + // @ts-expect-error TODO: What is this condition supposed to capture? if (e.geolocateSource) { const coords = { lat: e.viewState.latitude, @@ -184,7 +186,7 @@ function NearbyView({ } } - const dragListener = (e: mapboxgl.EventData) => { + const dragListener = (e: ViewStateChangeEvent) => { const coords = { lat: e.viewState.latitude, lon: e.viewState.longitude diff --git a/lib/components/viewers/stop-schedule-viewer.tsx b/lib/components/viewers/stop-schedule-viewer.tsx index 8b62234c8..67ceb58b7 100644 --- a/lib/components/viewers/stop-schedule-viewer.tsx +++ b/lib/components/viewers/stop-schedule-viewer.tsx @@ -5,7 +5,7 @@ import { ExclamationCircle } from '@styled-icons/fa-solid/ExclamationCircle' import { format, parse } from 'date-fns' import { FormattedMessage, injectIntl, IntlShape } from 'react-intl' import { MagnifyingGlass } from '@styled-icons/fa-solid/MagnifyingGlass' -import { MapRef } from 'react-map-gl' +import { MapRef } from 'react-map-gl/maplibre' import { utcToZonedTime } from 'date-fns-tz' import coreUtils from '@opentripplanner/core-utils' import React, { Component, FormEvent } from 'react' diff --git a/lib/util/config-types.ts b/lib/util/config-types.ts index ed70eda01..604db2d53 100644 --- a/lib/util/config-types.ts +++ b/lib/util/config-types.ts @@ -15,7 +15,7 @@ import { TransitOperator, VehicleRentalMapOverlaySymbol } from '@opentripplanner/types' -import { ControlPosition } from 'react-map-gl' +import { ControlPosition } from 'react-map-gl/maplibre' import { GeocoderConfig as GeocoderConfigOtpUI } from '@opentripplanner/geocoder' /** Accessibility threshold settings */ From 1d4090a775efaa07c31d263146bf2c2917a3927b Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Wed, 23 Apr 2025 11:20:30 -0400 Subject: [PATCH 04/24] chore(deps): Use OTP-UI test packages --- yarn.lock | 98 ++++++++++++++++++++++++------------------------------- 1 file changed, 43 insertions(+), 55 deletions(-) diff --git a/yarn.lock b/yarn.lock index 444150e58..4a3a584df 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2319,7 +2319,7 @@ resolved "https://registry.yarnpkg.com/dry-uninstall/-/dry-uninstall-0.3.0.tgz#29847a27ed3b3bb94e6212547a677e37f4427011" integrity sha512-b8h94RVpETWkVV59x62NsY++79bM7Si6Dxq7a4iVxRcJU3ZJJ4vaiC7wUZwM8WDK0ySRL+i+T/1SMAzbJLejYA== -"@mapbox/geojson-rewind@^0.5.1", "@mapbox/geojson-rewind@^0.5.2": +"@mapbox/geojson-rewind@^0.5.2": version "0.5.2" resolved "https://registry.yarnpkg.com/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz#591a5d71a9cd1da1a0bf3420b3bea31b0fc7946a" integrity sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA== @@ -2349,12 +2349,7 @@ dependencies: meow "^6.1.1" -"@mapbox/tiny-sdf@^2.0.4": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-2.0.5.tgz#cdba698d3d65087643130f9af43a2b622ce0b372" - integrity sha512-OhXt2lS//WpLdkqrzo/KwB7SRD8AiNTFFzuo9n14IBupzIMa67yGItcK7I2W9D8Ghpa4T04Sw9FWsKCJG50Bxw== - -"@mapbox/tiny-sdf@^2.0.6": +"@mapbox/tiny-sdf@^2.0.5", "@mapbox/tiny-sdf@^2.0.6": version "2.0.6" resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-2.0.6.tgz#9a1d33e5018093e88f6a4df2343e886056287282" integrity sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA== @@ -2388,10 +2383,10 @@ rw "^1.3.3" sort-object "^3.0.3" -"@maplibre/maplibre-gl-style-spec@^23.1.0": - version "23.1.0" - resolved "https://registry.yarnpkg.com/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-23.1.0.tgz#ad59731b0547ee0986ba4ccff699894dd60f0650" - integrity sha512-R6/ihEuC5KRexmKIYkWqUv84Gm+/QwsOUgHyt1yy2XqCdGdLvlBWVWIIeTZWN4NGdwmY6xDzdSGU2R9oBLNg2w== +"@maplibre/maplibre-gl-style-spec@^23.2.2": + version "23.3.0" + resolved "https://registry.yarnpkg.com/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-23.3.0.tgz#b69ab48cb3abead4e49213396c8f83492638b97c" + integrity sha512-IGJtuBbaGzOUgODdBRg66p8stnwj9iDXkgbYKoYcNiiQmaez5WVRfXm4b03MCDwmZyX93csbfHFWEJJYHnn5oA== dependencies: "@mapbox/jsonlint-lines-primitives" "~2.0.2" "@mapbox/unitbezier" "^0.0.1" @@ -3933,12 +3928,12 @@ dependencies: "@types/geojson" "*" -"@types/geojson@*", "@types/geojson@^7946.0.8": +"@types/geojson@*": version "7946.0.8" resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.8.tgz#30744afdb385e2945e22f3b033f897f76b1f12ca" integrity sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA== -"@types/geojson@^7946.0.16": +"@types/geojson@^7946.0.10", "@types/geojson@^7946.0.16": version "7946.0.16" resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.16.tgz#8ebe53d69efada7044454e3305c19017d97ced2a" integrity sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg== @@ -4043,19 +4038,19 @@ resolved "https://registry.yarnpkg.com/@types/long/-/long-3.0.32.tgz#f4e5af31e9e9b196d8e5fca8a5e2e20aa3d60b69" integrity sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA== -"@types/mapbox-gl@^2.6.0": - version "2.7.3" - resolved "https://registry.yarnpkg.com/@types/mapbox-gl/-/mapbox-gl-2.7.3.tgz#d75049251f1cb5f5a5453d6c20ffb9d2de6cbd75" - integrity sha512-XdveeJptNNZw7ZoeiAJ2/dupNtWaV6qpBG/SOFEpQNQAc+oiO6qUznX85n+W1XbLeD8SVRVfVORKuR+I4CHDZw== +"@types/mapbox-gl@>=1.0.0": + version "3.4.1" + resolved "https://registry.yarnpkg.com/@types/mapbox-gl/-/mapbox-gl-3.4.1.tgz#b6a1b81b802e62fb7e1d1d13a97ccece63b232a3" + integrity sha512-NsGKKtgW93B+UaLPti6B7NwlxYlES5DpV5Gzj9F75rK5ALKsqSk15CiEHbOnTr09RGbr6ZYiCdI+59NNNcAImg== dependencies: "@types/geojson" "*" -"@types/mapbox__point-geometry@*", "@types/mapbox__point-geometry@^0.1.2": +"@types/mapbox__point-geometry@*": version "0.1.2" resolved "https://registry.yarnpkg.com/@types/mapbox__point-geometry/-/mapbox__point-geometry-0.1.2.tgz#488a9b76e8457d6792ea2504cdd4ecdd9860a27e" integrity sha512-D0lgCq+3VWV85ey1MZVkE8ZveyuvW5VAfuahVTQRpXFQTxw03SuIf1/K4UQ87MMIXVKzpFjXFiFMZzLj2kU+iA== -"@types/mapbox__point-geometry@^0.1.4": +"@types/mapbox__point-geometry@^0.1.2", "@types/mapbox__point-geometry@^0.1.4": version "0.1.4" resolved "https://registry.yarnpkg.com/@types/mapbox__point-geometry/-/mapbox__point-geometry-0.1.4.tgz#0ef017b75eedce02ff6243b4189210e2e6d5e56d" integrity sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA== @@ -4067,16 +4062,7 @@ dependencies: "@types/geojson" "*" -"@types/mapbox__vector-tile@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@types/mapbox__vector-tile/-/mapbox__vector-tile-1.3.0.tgz#8fa1379dbaead1e1b639b8d96cfd174404c379d6" - integrity sha512-kDwVreQO5V4c8yAxzZVQLE5tyWF+IPToAanloQaSnwfXmIcJ7cyOrv8z4Ft4y7PsLYmhWXmON8MBV8RX0Rgr8g== - dependencies: - "@types/geojson" "*" - "@types/mapbox__point-geometry" "*" - "@types/pbf" "*" - -"@types/mapbox__vector-tile@^1.3.4": +"@types/mapbox__vector-tile@^1.3.0", "@types/mapbox__vector-tile@^1.3.4": version "1.3.4" resolved "https://registry.yarnpkg.com/@types/mapbox__vector-tile/-/mapbox__vector-tile-1.3.4.tgz#ad757441ef1d34628d9e098afd9c91423c1f8734" integrity sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg== @@ -4120,12 +4106,12 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/pbf@*", "@types/pbf@^3.0.2": +"@types/pbf@*": version "3.0.2" resolved "https://registry.yarnpkg.com/@types/pbf/-/pbf-3.0.2.tgz#8d291ad68b4b8c533e96c174a2e3e6399a59ed61" integrity sha512-EDrLIPaPXOZqDjrkzxxbX7UlJSeQVgah3i0aA4pOSzmK9zq3BIh7/MZIQxED7slJByvKM4Gc6Hypyu2lJzh3SQ== -"@types/pbf@^3.0.5": +"@types/pbf@^3.0.2", "@types/pbf@^3.0.5": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/pbf/-/pbf-3.0.5.tgz#a9495a58d8c75be4ffe9a0bd749a307715c07404" integrity sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA== @@ -4775,9 +4761,9 @@ acorn@^7.0.0, acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^8.2.4: - version "8.14.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" - integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== + version "8.14.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb" + integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== address@1.1.2, address@^1.0.1: version "1.1.2" @@ -7963,10 +7949,10 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" -earcut@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.3.tgz#d44ced2ff5a18859568e327dd9c7d46b16f55cf4" - integrity sha512-iRDI1QeCQIhMCZk48DRDMVgQSSBDmbzzNhnxIo+pwx3swkfjMh6vh0nWLq1NdvGHLKH6wIrAM3vQWeTj6qeoug== +earcut@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.4.tgz#6d02fd4d68160c114825d06890a92ecaae60343a" + integrity sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ== earcut@^3.0.1: version "3.0.1" @@ -13092,38 +13078,39 @@ map-visit@^1.0.0: integrity sha512-q4Mq/+XO7UNDdMiPpR/LIBIW1Zl4V0Z6UT9aKGqIAnBCtCb3lvZJM1KbDbdzdC8fKflwflModfjR29Nt0EpcwA== maplibre-gl@^2.1.9: - version "2.1.9" - resolved "https://registry.yarnpkg.com/maplibre-gl/-/maplibre-gl-2.1.9.tgz#042f3ef4224fa890ecf7a410145243f1fc943dcd" - integrity sha512-pnWJmILeZpgA5QSI7K7xFK3yrkyYTd9srw3fCi2Ca52Phm78hsznPwUErEQcZLfxXKn/1h9t8IPdj0TH0NBNbg== + version "2.4.0" + resolved "https://registry.yarnpkg.com/maplibre-gl/-/maplibre-gl-2.4.0.tgz#2b53dbf526626bf4ee92ad4f33f13ef09e5af182" + integrity sha512-csNFylzntPmHWidczfgCZpvbTSmhaWvLRj9e1ezUDBEPizGgshgm3ea1T5TCNEEBq0roauu7BPuRZjA3wO4KqA== dependencies: - "@mapbox/geojson-rewind" "^0.5.1" + "@mapbox/geojson-rewind" "^0.5.2" "@mapbox/jsonlint-lines-primitives" "^2.0.2" "@mapbox/mapbox-gl-supported" "^2.0.1" "@mapbox/point-geometry" "^0.1.0" - "@mapbox/tiny-sdf" "^2.0.4" + "@mapbox/tiny-sdf" "^2.0.5" "@mapbox/unitbezier" "^0.0.1" "@mapbox/vector-tile" "^1.3.1" "@mapbox/whoots-js" "^3.1.0" - "@types/geojson" "^7946.0.8" + "@types/geojson" "^7946.0.10" "@types/mapbox__point-geometry" "^0.1.2" "@types/mapbox__vector-tile" "^1.3.0" "@types/pbf" "^3.0.2" csscolorparser "~1.0.3" - earcut "^2.2.3" + earcut "^2.2.4" geojson-vt "^3.2.1" gl-matrix "^3.4.3" + global-prefix "^3.0.0" murmurhash-js "^1.0.0" pbf "^3.2.1" potpack "^1.0.2" quickselect "^2.0.0" - supercluster "^7.1.4" + supercluster "^7.1.5" tinyqueue "^2.0.3" vt-pbf "^3.1.3" maplibre-gl@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/maplibre-gl/-/maplibre-gl-5.3.1.tgz#bae6408da2d708ee20aa2d8b44f8e39de8c7cd93" - integrity sha512-Ihx+oUUSsZkjMou1Cw5J6silE+5OtFFQSPslWF9+7v4yFC/XDHrpsORYO9lWE4KZI0djCEUpZQJpkpnMArAbeA== + version "5.5.0" + resolved "https://registry.yarnpkg.com/maplibre-gl/-/maplibre-gl-5.5.0.tgz#0a295a634e745a5c31848ac7198893da417d09ae" + integrity sha512-p8AOPuzzqn1ZA9gcXxKw0IED715we/2Owa/YUr6PANmgMvNMe/JG+V/C1hRra43Wm62Biz+Aa8AgbOLJimA8tA== dependencies: "@mapbox/geojson-rewind" "^0.5.2" "@mapbox/jsonlint-lines-primitives" "^2.0.2" @@ -13132,7 +13119,7 @@ maplibre-gl@^5.3.1: "@mapbox/unitbezier" "^0.0.1" "@mapbox/vector-tile" "^1.3.1" "@mapbox/whoots-js" "^3.1.0" - "@maplibre/maplibre-gl-style-spec" "^23.1.0" + "@maplibre/maplibre-gl-style-spec" "^23.2.2" "@types/geojson" "^7946.0.16" "@types/geojson-vt" "3.2.5" "@types/mapbox__point-geometry" "^0.1.4" @@ -16239,11 +16226,12 @@ react-loading-skeleton@^2.1.1: "@emotion/core" "^10.0.22" react-map-gl@^7.0.15: - version "7.0.15" - resolved "https://registry.yarnpkg.com/react-map-gl/-/react-map-gl-7.0.15.tgz#ded08ccff49012099a9945b6c2ef7f266dfbde49" - integrity sha512-l7x8lBhIEcHTreSgrc7hsKv5HsMY1wQg2PVXuKAPmQtgRZc9C3NGwurVJFe24gOlAwzta5UavAHWDiZdU1ZNCw== + version "7.1.9" + resolved "https://registry.yarnpkg.com/react-map-gl/-/react-map-gl-7.1.9.tgz#d41093ce266c342f89a2c49dec3739e980835fa7" + integrity sha512-KsCc8Gyn05wVGlHZoopaiiCr0RCAQ6LDISo5sEy1/pV/d7RlozkF946tiX7IgyijJQMRujHol5QdwUPESjh73w== dependencies: - "@types/mapbox-gl" "^2.6.0" + "@maplibre/maplibre-gl-style-spec" "^19.2.1" + "@types/mapbox-gl" ">=1.0.0" react-map-gl@^8.0.4: version "8.0.4" @@ -18410,7 +18398,7 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" -supercluster@^7.1.4: +supercluster@^7.1.5: version "7.1.5" resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-7.1.5.tgz#65a6ce4a037a972767740614c19051b64b8be5a3" integrity sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg== From 0a4de65ca17fe1c76973a59a3c0c6cb862c95e55 Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Mon, 2 Jun 2025 09:41:06 -0400 Subject: [PATCH 05/24] chore(deps): Use tmp dependencies for test --- package.json | 38 +++---- yarn.lock | 287 +++++++++++++++------------------------------------ 2 files changed, 100 insertions(+), 225 deletions(-) diff --git a/package.json b/package.json index 2c5a18427..2ea4b96fb 100644 --- a/package.json +++ b/package.json @@ -39,30 +39,30 @@ "@bugsnag/js": "^7.17.0", "@bugsnag/plugin-react": "^7.17.0", "@floating-ui/react": "^0.19.2", - "@opentripplanner/base-map": "5.2.0", - "@opentripplanner/building-blocks": "3.0.1", - "@opentripplanner/core-utils": "13.0.1", - "@opentripplanner/endpoints-overlay": "4.0.1", - "@opentripplanner/from-to-location-picker": "4.0.1", - "@opentripplanner/geocoder": "^3.0.5", + "@opentripplanner/base-map": "/tmp/otp-ui-pkg/base-map", + "@opentripplanner/building-blocks": "/tmp/otp-ui-pkg/building-blocks", + "@opentripplanner/core-utils": "/tmp/otp-ui-pkg/core-utils", + "@opentripplanner/endpoints-overlay": "/tmp/otp-ui-pkg/endpoints-overlay", + "@opentripplanner/from-to-location-picker": "4.0.0", + "@opentripplanner/geocoder": "/tmp/otp-ui-pkg/geocoder", "@opentripplanner/humanize-distance": "^2.0.0", "@opentripplanner/icons": "4.0.0", "@opentripplanner/itinerary-body": "7.0.4", "@opentripplanner/location-field": "4.0.4", "@opentripplanner/location-icon": "^2.0.0", - "@opentripplanner/map-popup": "6.0.4", - "@opentripplanner/otp2-tile-overlay": "3.1.0", - "@opentripplanner/park-and-ride-overlay": "4.0.1", - "@opentripplanner/printable-itinerary": "4.0.1", - "@opentripplanner/route-viewer-overlay": "4.0.1", - "@opentripplanner/stop-viewer-overlay": "4.0.1", - "@opentripplanner/stops-overlay": "7.0.2", - "@opentripplanner/transit-vehicle-overlay": "6.0.2", - "@opentripplanner/transitive-overlay": "6.0.0", + "@opentripplanner/map-popup": "/tmp/otp-ui-pkg/map-popup", + "@opentripplanner/otp2-tile-overlay": "/tmp/otp-ui-pkg/otp2-tile-overlay", + "@opentripplanner/park-and-ride-overlay": "/tmp/otp-ui-pkg/park-and-ride-overlay", + "@opentripplanner/printable-itinerary": "4.0.0", + "@opentripplanner/route-viewer-overlay": "/tmp/otp-ui-pkg/route-viewer-overlay", + "@opentripplanner/stop-viewer-overlay": "/tmp/otp-ui-pkg/stop-viewer-overlay", + "@opentripplanner/stops-overlay": "/tmp/otp-ui-pkg/stops-overlay", + "@opentripplanner/transit-vehicle-overlay": "/tmp/otp-ui-pkg/transit-vehicle-overlay", + "@opentripplanner/transitive-overlay": "/tmp/otp-ui-pkg/transitive-overlay", "@opentripplanner/trip-details": "7.0.0", - "@opentripplanner/trip-form": "6.0.1", - "@opentripplanner/trip-viewer-overlay": "4.0.1", - "@opentripplanner/vehicle-rental-overlay": "4.0.2", + "@opentripplanner/trip-form": "5.0.0", + "@opentripplanner/trip-viewer-overlay": "/tmp/otp-ui-pkg/trip-viewer-overlay", + "@opentripplanner/vehicle-rental-overlay": "/tmp/otp-ui-pkg/vehicle-rental-overlay", "@styled-icons/fa-regular": "^10.34.0", "@styled-icons/fa-solid": "^10.34.0", "@turf/centroid": "^6.5.0", @@ -91,7 +91,7 @@ "lodash.isempty": "^4.4.0", "lodash.isequal": "^4.5.0", "lodash.memoize": "^4.1.2", - "maplibre-gl": "^5.3.1", + "maplibre-gl": "^5.5.0", "object-hash": "^3.0.0", "object-path": "^0.11.8", "object-to-formdata": "^4.1.0", diff --git a/yarn.lock b/yarn.lock index 4a3a584df..d5b789e48 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2332,11 +2332,6 @@ resolved "https://registry.yarnpkg.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz#ce56e539f83552b58d10d672ea4d6fc9adc7b234" integrity sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ== -"@mapbox/mapbox-gl-supported@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-2.0.1.tgz#c15367178d8bfe4765e6b47b542fe821ce259c7b" - integrity sha512-HP6XvfNIzfoMVfyGjBckjiAOQK9WfX0ywdLubuPMPv+Vqf5fj0uCbgBQYpiqcWZT6cbyyRnTSXDheT1ugvF6UQ== - "@mapbox/point-geometry@0.1.0", "@mapbox/point-geometry@^0.1.0", "@mapbox/point-geometry@~0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz#8a83f9335c7860effa2eeeca254332aa0aeed8f2" @@ -2349,7 +2344,7 @@ dependencies: meow "^6.1.1" -"@mapbox/tiny-sdf@^2.0.5", "@mapbox/tiny-sdf@^2.0.6": +"@mapbox/tiny-sdf@^2.0.6": version "2.0.6" resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-2.0.6.tgz#9a1d33e5018093e88f6a4df2343e886056287282" integrity sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA== @@ -2678,25 +2673,12 @@ dependencies: "@octokit/openapi-types" "^10.0.0" -"@opentripplanner/base-map@5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@opentripplanner/base-map/-/base-map-5.0.1.tgz#53fd0989ea2ab8b207fa450710af64de4e03bb40" - integrity sha512-IJPrQbajzDhscMGtVmLwti3wk9y5zW0buvyQxFZ2v0xccyVvDrakis/IxK4HaO8ht/MUQIe7TC5TCF3NK0bUew== - dependencies: - "@opentripplanner/building-blocks" "3.0.0" - mapbox-gl "npm:empty-npm-package@1.0.0" - maplibre-gl "^2.1.9" - react-map-gl "^7.0.15" - -"@opentripplanner/base-map@5.0.2": +"@opentripplanner/base-map@5.0.2", "@opentripplanner/base-map@file:../../../../tmp/otp-ui-pkg/base-map": version "5.0.2" - resolved "https://registry.yarnpkg.com/@opentripplanner/base-map/-/base-map-5.0.2.tgz#4eb7bd86b33185c1844f50434f73346ae24ab3c5" - integrity sha512-Ov1Sdc28upEbJJkXpKsDdqGo48zVng3284x3SMHh1GrHUr/xlIQrXXujgr6M1gPIEmUZZo7sQrw5+3qmDUGl6w== dependencies: "@opentripplanner/building-blocks" "3.0.0" - mapbox-gl "npm:empty-npm-package@1.0.0" - maplibre-gl "^2.1.9" - react-map-gl "^7.0.15" + maplibre-gl "^5.5.0" + react-map-gl "^8.0.4" "@opentripplanner/base-map@5.2.0": version "5.2.0" @@ -2715,10 +2697,8 @@ dependencies: "@styled-icons/bootstrap" "^10.47.0" -"@opentripplanner/building-blocks@3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@opentripplanner/building-blocks/-/building-blocks-3.0.1.tgz#c75be7d0af3404ea9c8df23373d0b8f03827393b" - integrity sha512-0kJQiIcquFltl320Ht4uHbA+21u7sYjC8uGp4R6DzEVFLMDajogP7lPulSUx+qPQMES0cj5XjE3PRi5TRCWZ3Q== +"@opentripplanner/building-blocks@file:../../../../tmp/otp-ui-pkg/building-blocks": + version "3.0.0" dependencies: "@styled-icons/bootstrap" "^10.47.0" @@ -2740,10 +2720,8 @@ lodash.isequal "^4.5.0" qs "^6.9.1" -"@opentripplanner/core-utils@13.0.1": +"@opentripplanner/core-utils@13.0.1", "@opentripplanner/core-utils@file:../../../../tmp/otp-ui-pkg/core-utils": version "13.0.1" - resolved "https://registry.yarnpkg.com/@opentripplanner/core-utils/-/core-utils-13.0.1.tgz#53c222bbe7f72cf6cda50046daab1480b5b3aa3e" - integrity sha512-377rE/5y/9cLJfyrCaXBYJopdA4MzJpepdyc7Wr05xxexM6xj7H/MhAgNyM14XXfF/Kz2I08RioD87QX6iTQLA== dependencies: "@conveyal/lonlat" "^1.4.1" "@mapbox/polyline" "^1.1.1" @@ -2758,14 +2736,12 @@ lodash.isequal "^4.5.0" qs "^6.9.1" -"@opentripplanner/endpoints-overlay@4.0.1": +"@opentripplanner/endpoints-overlay@file:../../../../tmp/otp-ui-pkg/endpoints-overlay": version "4.0.1" - resolved "https://registry.yarnpkg.com/@opentripplanner/endpoints-overlay/-/endpoints-overlay-4.0.1.tgz#ecc62b729db876ed3e331b7cab1a638c77a9ebf5" - integrity sha512-QIgEBBIzxGLVtiPBHXh1s+gu7QHvAyJzQ7Tlu8lzjSndx2d0zB/Mk+npZMM+rryjELGLqouse4OZ/ep6JsEyLw== dependencies: - "@opentripplanner/base-map" "5.0.1" + "@opentripplanner/base-map" "5.0.2" "@opentripplanner/building-blocks" "3.0.0" - "@opentripplanner/core-utils" "13.0.0" + "@opentripplanner/core-utils" "13.0.1" "@opentripplanner/location-icon" "2.0.0" "@styled-icons/fa-solid" "^10.34.0" flat "^5.0.2" @@ -2797,7 +2773,7 @@ isomorphic-mapzen-search "^1.6.1" lodash.memoize "^4.1.2" -"@opentripplanner/geocoder@3.0.5", "@opentripplanner/geocoder@^3.0.5": +"@opentripplanner/geocoder@3.0.5": version "3.0.5" resolved "https://registry.yarnpkg.com/@opentripplanner/geocoder/-/geocoder-3.0.5.tgz#e1faacc0bfe76060b7a08f8c835232f611fa4bf3" integrity sha512-bxFO42xlV3utyI/wwQIPzkL9osiUMAvyfdVfIvYDvabcKEFyYNAVOerz8vjOHryViZ3p7eALWeC77HBMOIYdHg== @@ -2808,6 +2784,15 @@ isomorphic-mapzen-search "^1.6.1" lodash.memoize "^4.1.2" +"@opentripplanner/geocoder@file:../../../../tmp/otp-ui-pkg/geocoder": + version "3.0.5" + dependencies: + "@conveyal/geocoder-arcgis-geojson" "^0.0.3" + "@conveyal/lonlat" "^1.4.1" + "@leeoniya/ufuzzy" "^1.0.14" + isomorphic-mapzen-search "^1.6.1" + lodash.memoize "^4.1.2" + "@opentripplanner/humanize-distance@2.0.0", "@opentripplanner/humanize-distance@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@opentripplanner/humanize-distance/-/humanize-distance-2.0.0.tgz#a898a63c5ec881972e82b308622b2351659e0f83" @@ -2857,10 +2842,28 @@ react-resize-detector "^4.2.1" string-similarity "^4.0.4" -"@opentripplanner/location-field@4.0.4": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@opentripplanner/location-field/-/location-field-4.0.4.tgz#8e1ed4db74b8b919355d22cb1a55fe51b1915319" - integrity sha512-RQQxdvwrzvmBWijeU1iZN0ceYk29QxN46PfHsxh7EA9yrg5vPBhuTPcxXQyefKU5+cIzYgXtIai1iz+qIM3+jQ== +"@opentripplanner/itinerary-body@7.0.3": + version "7.0.3" + resolved "https://registry.yarnpkg.com/@opentripplanner/itinerary-body/-/itinerary-body-7.0.3.tgz#35e23c275c57ee5444d368fc8c59c10d055d6ab1" + integrity sha512-7btQvQWNTVMXyGe34+zgsehPlZAb6oq53ujPwCEXbcdXzhBjz9T4GG5pQ1FLH0XpbVsePMZCEgFjiKLlzk3dfw== + dependencies: + "@opentripplanner/core-utils" "13.0.1" + "@opentripplanner/humanize-distance" "2.0.0" + "@opentripplanner/icons" "4.0.0" + "@opentripplanner/location-icon" "2.0.0" + "@styled-icons/fa-solid" "^10.34.0" + "@styled-icons/foundation" "^10.34.0" + date-fns "^2.28.0" + date-fns-tz "^1.2.2" + flat "^5.0.2" + react-animate-height "^3.0.4" + react-resize-detector "^4.2.1" + string-similarity "^4.0.4" + +"@opentripplanner/location-field@4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@opentripplanner/location-field/-/location-field-4.0.1.tgz#f114d311ef16b74d381a5dc91ed4401c7f0b3c0e" + integrity sha512-nGpNJYkZ/pYiKpDzTUEMJZl4333inajQTUSm8TGFDrcx6aW8bmgVJTxAlWkpCrs+ZIjzJcYq6IzfCu1eJqYD2w== dependencies: "@conveyal/geocoder-arcgis-geojson" "^0.0.3" "@opentripplanner/core-utils" "13.0.1" @@ -2878,43 +2881,26 @@ "@styled-icons/fa-regular" "^10.34.0" "@styled-icons/fa-solid" "^10.34.0" -"@opentripplanner/map-popup@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@opentripplanner/map-popup/-/map-popup-6.0.1.tgz#480e1512287a01ab515f7d9d900e5209ee0934b0" - integrity sha512-TUGc+pFYHPfy/tUL5SPDGv64MT/nj9SlHrd8lNQmn4Z/LVAXmXSbRhbcaIA9zgfoPQ9YFS488wvWwAzyucYd9A== +"@opentripplanner/map-popup@6.0.2", "@opentripplanner/map-popup@file:../../../../tmp/otp-ui-pkg/map-popup": + version "6.0.2" dependencies: - "@opentripplanner/base-map" "5.0.1" + "@opentripplanner/base-map" "5.0.2" "@opentripplanner/building-blocks" "3.0.0" - "@opentripplanner/core-utils" "13.0.0" - "@opentripplanner/from-to-location-picker" "4.0.0" - flat "^5.0.2" - -"@opentripplanner/map-popup@6.0.4": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@opentripplanner/map-popup/-/map-popup-6.0.4.tgz#e9641b7c56a26767c5cf1841aec866e3bafb6720" - integrity sha512-vf/OcX1kkleIPlHWDZPky0SVUJJXW+cGAJxuQEEwhG8etrsvS5730Yeoy0jgs8+p/JyZmIaz7HnxIaEmLZncTQ== - dependencies: - "@opentripplanner/base-map" "5.2.0" - "@opentripplanner/building-blocks" "3.0.1" "@opentripplanner/core-utils" "13.0.1" - "@opentripplanner/from-to-location-picker" "4.0.1" + "@opentripplanner/from-to-location-picker" "4.0.0" flat "^5.0.2" -"@opentripplanner/otp2-tile-overlay@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@opentripplanner/otp2-tile-overlay/-/otp2-tile-overlay-3.1.0.tgz#125b524347ee2eca2e3ee3f636247549ad68e3fb" - integrity sha512-2326ORn+CvnedVm8HLjb+nc/Nmt7/w54I8NmmBY6kHdU38ui8CmnZVNFrWwJ+IsZ9CqSkAZSwFXgDhQPoRBl7Q== +"@opentripplanner/otp2-tile-overlay@file:../../../../tmp/otp-ui-pkg/otp2-tile-overlay": + version "3.0.3" dependencies: - "@opentripplanner/map-popup" "6.0.4" + "@opentripplanner/map-popup" "6.0.2" -"@opentripplanner/park-and-ride-overlay@4.0.1": +"@opentripplanner/park-and-ride-overlay@file:../../../../tmp/otp-ui-pkg/park-and-ride-overlay": version "4.0.1" - resolved "https://registry.yarnpkg.com/@opentripplanner/park-and-ride-overlay/-/park-and-ride-overlay-4.0.1.tgz#7c4920b3103e29f12f75527d069f539770bfb07f" - integrity sha512-QzGSTEi0Jq+R1iYgYU8qEEhtIpTswh28Iv/q7qKsg4NmuSq7SPEUL2n7X47MxZDEQg932yqvdzq+7aMt2zjY8Q== dependencies: - "@opentripplanner/base-map" "5.0.1" + "@opentripplanner/base-map" "5.0.2" "@opentripplanner/from-to-location-picker" "4.0.0" - "@opentripplanner/types" "6.5.2" + "@opentripplanner/types" "6.5.3" "@opentripplanner/printable-itinerary@4.0.1": version "4.0.1" @@ -2924,14 +2910,12 @@ "@opentripplanner/core-utils" "13.0.1" "@opentripplanner/itinerary-body" "7.0.4" -"@opentripplanner/route-viewer-overlay@4.0.1": +"@opentripplanner/route-viewer-overlay@file:../../../../tmp/otp-ui-pkg/route-viewer-overlay": version "4.0.1" - resolved "https://registry.yarnpkg.com/@opentripplanner/route-viewer-overlay/-/route-viewer-overlay-4.0.1.tgz#e797dbe28d75ab8322b09b7f9922803004bee899" - integrity sha512-p+Tyql9S89PEsJ5RCx8MOWj2PC7mutDKzQIYWkiJlHQ/GtQBlCzD8rNS3/vsQkQcEJQiXkAtXCY25MdGnZBCgw== dependencies: - "@mapbox/polyline" "^1.1.0" - "@opentripplanner/base-map" "5.0.1" - "@opentripplanner/core-utils" "13.0.0" + "@mapbox/polyline" "^1.1.1" + "@opentripplanner/base-map" "5.0.2" + "@opentripplanner/core-utils" "13.0.1" point-in-polygon "^1.1.0" "@opentripplanner/scripts@^1.2.0": @@ -2945,38 +2929,30 @@ glob-promise "^4.2.2" js-yaml "^4.1.0" -"@opentripplanner/stop-viewer-overlay@4.0.1": +"@opentripplanner/stop-viewer-overlay@file:../../../../tmp/otp-ui-pkg/stop-viewer-overlay": version "4.0.1" - resolved "https://registry.yarnpkg.com/@opentripplanner/stop-viewer-overlay/-/stop-viewer-overlay-4.0.1.tgz#2a24c6626002820bd44ad98197a7163eceff03a9" - integrity sha512-isQ31GvYVb2MDqQecdV7q2g6XlsAutqV+eefKwkWCH2pRc7wNpKi1jGe1uwh6TztgAZAOO+5kPTGbQ0cQFXPzQ== dependencies: - "@opentripplanner/base-map" "5.0.1" - "@opentripplanner/core-utils" "13.0.0" + "@opentripplanner/base-map" "5.0.2" + "@opentripplanner/core-utils" "13.0.1" -"@opentripplanner/stops-overlay@7.0.2": +"@opentripplanner/stops-overlay@file:../../../../tmp/otp-ui-pkg/stops-overlay": version "7.0.2" - resolved "https://registry.yarnpkg.com/@opentripplanner/stops-overlay/-/stops-overlay-7.0.2.tgz#0f69de84c3ee228f8d5118e8c17faabb67000882" - integrity sha512-CDrKilmwJcPhLwPzu27IqyPROPF75fO0ZRfgGaRn64Zgzlk1DE3cX1xQjXlb9qRkwykhnLQ6SoGRaQkStfet6w== dependencies: - "@opentripplanner/base-map" "5.0.1" + "@opentripplanner/base-map" "5.0.2" "@opentripplanner/from-to-location-picker" "4.0.0" - "@opentripplanner/map-popup" "6.0.1" + "@opentripplanner/map-popup" "6.0.2" flat "^5.0.2" -"@opentripplanner/transit-vehicle-overlay@6.0.2": - version "6.0.2" - resolved "https://registry.yarnpkg.com/@opentripplanner/transit-vehicle-overlay/-/transit-vehicle-overlay-6.0.2.tgz#bd2fd194b52a8195e2cafcefdb38a0a81339bc88" - integrity sha512-4D4qMkvTig4X9U9iiHjAP++vcbGnehA1Y87wjClAkkm/i4XS9y5UgvskbkicPlaIsmMe9kVUO6USb0Pp5o65sQ== +"@opentripplanner/transit-vehicle-overlay@file:../../../../tmp/otp-ui-pkg/transit-vehicle-overlay": + version "6.0.1" dependencies: - "@opentripplanner/base-map" "5.2.0" + "@opentripplanner/base-map" "5.0.2" "@opentripplanner/core-utils" "13.0.1" "@opentripplanner/icons" "4.0.0" flat "^5.0.2" -"@opentripplanner/transitive-overlay@6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@opentripplanner/transitive-overlay/-/transitive-overlay-6.0.0.tgz#be041140ec852253a4c9128169878e7ba0303cf9" - integrity sha512-2wPTIZDmcmq9Ar+6i6to8puAZIdUt3CGgNOEyLHL11ocyo54LW8mZMp5Jh/Hk6N2wTUvMi5DraRwlDxUKYn8nw== +"@opentripplanner/transitive-overlay@file:../../../../tmp/otp-ui-pkg/transitive-overlay": + version "5.0.2" dependencies: "@mapbox/polyline" "^1.1.1" "@opentripplanner/base-map" "5.0.2" @@ -3019,34 +2995,25 @@ react-indiana-drag-scroll "^2.0.1" react-inlinesvg "^2.3.0" -"@opentripplanner/trip-viewer-overlay@4.0.1": +"@opentripplanner/trip-viewer-overlay@file:../../../../tmp/otp-ui-pkg/trip-viewer-overlay": version "4.0.1" - resolved "https://registry.yarnpkg.com/@opentripplanner/trip-viewer-overlay/-/trip-viewer-overlay-4.0.1.tgz#6d221c4e0b88f6d7701b58d1bbf743ae1ceb8120" - integrity sha512-N++4BAP75fEhR1sAT41Q46SHbmrV0zQCZnbbg89Vjs/wZuTHOjXYnsJvJ/xj7nZopCnl0baKzaUj/UBTpABtAg== dependencies: - "@mapbox/polyline" "^1.1.0" - "@opentripplanner/base-map" "5.0.1" - "@opentripplanner/core-utils" "13.0.0" - -"@opentripplanner/types@6.5.2": - version "6.5.2" - resolved "https://registry.yarnpkg.com/@opentripplanner/types/-/types-6.5.2.tgz#1373d738479568d880a3b13670b0ec53a1a75bd5" - integrity sha512-2qDcKOrsLoXdwjRAdi4xcdDUsZGTnwBM+vfEf8TTuuWSnA+WYav3ldlMB4sugxIdLaVKXlOfe3F5lCEh9jAHWA== + "@mapbox/polyline" "^1.1.1" + "@opentripplanner/base-map" "5.0.2" + "@opentripplanner/core-utils" "13.0.1" -"@opentripplanner/types@^6.5.3": +"@opentripplanner/types@6.5.3", "@opentripplanner/types@^6.5.2": version "6.5.3" resolved "https://registry.yarnpkg.com/@opentripplanner/types/-/types-6.5.3.tgz#cde99b1b5a1f16b88cfd1baa7005918151cebde3" integrity sha512-zcr/IIkZ9P9U5G0j9IsT4nbxplIEc1NQRpfgvEqqI3GPAkr7wTPe2KtyjgxcTIszZ2qLzUwwhmVWkNYjekcMyA== -"@opentripplanner/vehicle-rental-overlay@4.0.2": +"@opentripplanner/vehicle-rental-overlay@file:../../../../tmp/otp-ui-pkg/vehicle-rental-overlay": version "4.0.2" - resolved "https://registry.yarnpkg.com/@opentripplanner/vehicle-rental-overlay/-/vehicle-rental-overlay-4.0.2.tgz#4f37417e8e5cb98806a5c2b29766608fa21e0aea" - integrity sha512-BXYY2fpEQ9EMFZLhACFsnxIWyfQVeHcGX6OK0f/BtIux07NzMvOcZJQS/gFWQBm6r4XAZcm5VPwQc/ck83L5Cw== dependencies: - "@opentripplanner/base-map" "5.0.1" - "@opentripplanner/core-utils" "13.0.0" + "@opentripplanner/base-map" "5.0.2" + "@opentripplanner/core-utils" "13.0.1" "@opentripplanner/from-to-location-picker" "4.0.0" - "@opentripplanner/map-popup" "6.0.1" + "@opentripplanner/map-popup" "6.0.2" "@styled-icons/fa-solid" "^10.34.0" flat "^5.0.2" lodash.memoize "^4.1.2" @@ -3933,7 +3900,7 @@ resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.8.tgz#30744afdb385e2945e22f3b033f897f76b1f12ca" integrity sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA== -"@types/geojson@^7946.0.10", "@types/geojson@^7946.0.16": +"@types/geojson@^7946.0.16": version "7946.0.16" resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.16.tgz#8ebe53d69efada7044454e3305c19017d97ced2a" integrity sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg== @@ -4038,19 +4005,12 @@ resolved "https://registry.yarnpkg.com/@types/long/-/long-3.0.32.tgz#f4e5af31e9e9b196d8e5fca8a5e2e20aa3d60b69" integrity sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA== -"@types/mapbox-gl@>=1.0.0": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@types/mapbox-gl/-/mapbox-gl-3.4.1.tgz#b6a1b81b802e62fb7e1d1d13a97ccece63b232a3" - integrity sha512-NsGKKtgW93B+UaLPti6B7NwlxYlES5DpV5Gzj9F75rK5ALKsqSk15CiEHbOnTr09RGbr6ZYiCdI+59NNNcAImg== - dependencies: - "@types/geojson" "*" - "@types/mapbox__point-geometry@*": version "0.1.2" resolved "https://registry.yarnpkg.com/@types/mapbox__point-geometry/-/mapbox__point-geometry-0.1.2.tgz#488a9b76e8457d6792ea2504cdd4ecdd9860a27e" integrity sha512-D0lgCq+3VWV85ey1MZVkE8ZveyuvW5VAfuahVTQRpXFQTxw03SuIf1/K4UQ87MMIXVKzpFjXFiFMZzLj2kU+iA== -"@types/mapbox__point-geometry@^0.1.2", "@types/mapbox__point-geometry@^0.1.4": +"@types/mapbox__point-geometry@^0.1.4": version "0.1.4" resolved "https://registry.yarnpkg.com/@types/mapbox__point-geometry/-/mapbox__point-geometry-0.1.4.tgz#0ef017b75eedce02ff6243b4189210e2e6d5e56d" integrity sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA== @@ -4062,7 +4022,7 @@ dependencies: "@types/geojson" "*" -"@types/mapbox__vector-tile@^1.3.0", "@types/mapbox__vector-tile@^1.3.4": +"@types/mapbox__vector-tile@^1.3.4": version "1.3.4" resolved "https://registry.yarnpkg.com/@types/mapbox__vector-tile/-/mapbox__vector-tile-1.3.4.tgz#ad757441ef1d34628d9e098afd9c91423c1f8734" integrity sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg== @@ -4111,7 +4071,7 @@ resolved "https://registry.yarnpkg.com/@types/pbf/-/pbf-3.0.2.tgz#8d291ad68b4b8c533e96c174a2e3e6399a59ed61" integrity sha512-EDrLIPaPXOZqDjrkzxxbX7UlJSeQVgah3i0aA4pOSzmK9zq3BIh7/MZIQxED7slJByvKM4Gc6Hypyu2lJzh3SQ== -"@types/pbf@^3.0.2", "@types/pbf@^3.0.5": +"@types/pbf@^3.0.5": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/pbf/-/pbf-3.0.5.tgz#a9495a58d8c75be4ffe9a0bd749a307715c07404" integrity sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA== @@ -7248,11 +7208,6 @@ css@^2.0.0: source-map-resolve "^0.5.2" urix "^0.1.0" -csscolorparser@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/csscolorparser/-/csscolorparser-1.0.3.tgz#b34f391eea4da8f3e98231e2ccd8df9c041f171b" - integrity sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w== - cssdb@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" @@ -7949,11 +7904,6 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" -earcut@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.4.tgz#6d02fd4d68160c114825d06890a92ecaae60343a" - integrity sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ== - earcut@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/earcut/-/earcut-3.0.1.tgz#f60b3f671c5657cca9d3e131c5527c5dde00ef38" @@ -9610,11 +9560,6 @@ geocoder-arcgis@^2.0.5: lodash.isobject "^3.0.2" lodash.isstring "^4.0.1" -geojson-vt@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/geojson-vt/-/geojson-vt-3.2.1.tgz#f8adb614d2c1d3f6ee7c4265cad4bbf3ad60c8b7" - integrity sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg== - geojson-vt@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/geojson-vt/-/geojson-vt-4.0.2.tgz#1162f6c7d61a0ba305b1030621e6e111f847828a" @@ -12424,11 +12369,6 @@ just-diff@^3.0.1: resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-3.1.1.tgz#d50c597c6fd4776495308c63bdee1b6839082647" integrity sha512-sdMWKjRq8qWZEjDcVA6llnUT8RDEBIfOiGpYFPYa9u+2c39JCsejktSP7mj5eRid5EIvTzIpQ2kDOCw1Nq9BjQ== -kdbush@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/kdbush/-/kdbush-3.0.0.tgz#f8484794d47004cc2d85ed3a79353dbe0abc2bf0" - integrity sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew== - kdbush@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/kdbush/-/kdbush-4.0.2.tgz#2f7b7246328b4657dd122b6c7f025fbc2c868e39" @@ -13072,42 +13012,7 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -"mapbox-gl@npm:empty-npm-package@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/empty-npm-package/-/empty-npm-package-1.0.0.tgz#fda29eb6de5efa391f73d578697853af55f6793a" - integrity sha512-q4Mq/+XO7UNDdMiPpR/LIBIW1Zl4V0Z6UT9aKGqIAnBCtCb3lvZJM1KbDbdzdC8fKflwflModfjR29Nt0EpcwA== - -maplibre-gl@^2.1.9: - version "2.4.0" - resolved "https://registry.yarnpkg.com/maplibre-gl/-/maplibre-gl-2.4.0.tgz#2b53dbf526626bf4ee92ad4f33f13ef09e5af182" - integrity sha512-csNFylzntPmHWidczfgCZpvbTSmhaWvLRj9e1ezUDBEPizGgshgm3ea1T5TCNEEBq0roauu7BPuRZjA3wO4KqA== - dependencies: - "@mapbox/geojson-rewind" "^0.5.2" - "@mapbox/jsonlint-lines-primitives" "^2.0.2" - "@mapbox/mapbox-gl-supported" "^2.0.1" - "@mapbox/point-geometry" "^0.1.0" - "@mapbox/tiny-sdf" "^2.0.5" - "@mapbox/unitbezier" "^0.0.1" - "@mapbox/vector-tile" "^1.3.1" - "@mapbox/whoots-js" "^3.1.0" - "@types/geojson" "^7946.0.10" - "@types/mapbox__point-geometry" "^0.1.2" - "@types/mapbox__vector-tile" "^1.3.0" - "@types/pbf" "^3.0.2" - csscolorparser "~1.0.3" - earcut "^2.2.4" - geojson-vt "^3.2.1" - gl-matrix "^3.4.3" - global-prefix "^3.0.0" - murmurhash-js "^1.0.0" - pbf "^3.2.1" - potpack "^1.0.2" - quickselect "^2.0.0" - supercluster "^7.1.5" - tinyqueue "^2.0.3" - vt-pbf "^3.1.3" - -maplibre-gl@^5.3.1: +maplibre-gl@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/maplibre-gl/-/maplibre-gl-5.5.0.tgz#0a295a634e745a5c31848ac7198893da417d09ae" integrity sha512-p8AOPuzzqn1ZA9gcXxKw0IED715we/2Owa/YUr6PANmgMvNMe/JG+V/C1hRra43Wm62Biz+Aa8AgbOLJimA8tA== @@ -15578,11 +15483,6 @@ postcss@^8.1.0, postcss@^8.1.10, postcss@^8.5.3: picocolors "^1.1.1" source-map-js "^1.2.1" -potpack@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/potpack/-/potpack-1.0.2.tgz#23b99e64eb74f5741ffe7656b5b5c4ddce8dfc14" - integrity sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ== - potpack@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/potpack/-/potpack-2.0.0.tgz#61f4dd2dc4b3d5e996e3698c0ec9426d0e169104" @@ -15967,11 +15867,6 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -quickselect@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018" - integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw== - quickselect@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-3.0.0.tgz#a37fc953867d56f095a20ac71c6d27063d2de603" @@ -16225,14 +16120,6 @@ react-loading-skeleton@^2.1.1: dependencies: "@emotion/core" "^10.0.22" -react-map-gl@^7.0.15: - version "7.1.9" - resolved "https://registry.yarnpkg.com/react-map-gl/-/react-map-gl-7.1.9.tgz#d41093ce266c342f89a2c49dec3739e980835fa7" - integrity sha512-KsCc8Gyn05wVGlHZoopaiiCr0RCAQ6LDISo5sEy1/pV/d7RlozkF946tiX7IgyijJQMRujHol5QdwUPESjh73w== - dependencies: - "@maplibre/maplibre-gl-style-spec" "^19.2.1" - "@types/mapbox-gl" ">=1.0.0" - react-map-gl@^8.0.4: version "8.0.4" resolved "https://registry.yarnpkg.com/react-map-gl/-/react-map-gl-8.0.4.tgz#7eebcb83e281ffd86820befe27d030a071e4c980" @@ -18398,13 +18285,6 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" -supercluster@^7.1.5: - version "7.1.5" - resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-7.1.5.tgz#65a6ce4a037a972767740614c19051b64b8be5a3" - integrity sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg== - dependencies: - kdbush "^3.0.0" - supercluster@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-8.0.1.tgz#9946ba123538e9e9ab15de472531f604e7372df5" @@ -18740,11 +18620,6 @@ tinyglobby@^0.2.13: fdir "^6.4.4" picomatch "^4.0.2" -tinyqueue@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08" - integrity sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA== - tinyqueue@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-3.0.0.tgz#101ea761ccc81f979e29200929e78f1556e3661e" From 636d7405dca953b4442356c656cc59924d438168 Mon Sep 17 00:00:00 2001 From: miles-grant-ibigroup Date: Tue, 8 Jul 2025 12:47:44 -0400 Subject: [PATCH 06/24] upgrade trip-form --- package.json | 2 +- yarn.lock | 164 ++++++++++++++++++++++++++------------------------- 2 files changed, 84 insertions(+), 82 deletions(-) diff --git a/package.json b/package.json index 2ea4b96fb..6f11efe80 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "@opentripplanner/transit-vehicle-overlay": "/tmp/otp-ui-pkg/transit-vehicle-overlay", "@opentripplanner/transitive-overlay": "/tmp/otp-ui-pkg/transitive-overlay", "@opentripplanner/trip-details": "7.0.0", - "@opentripplanner/trip-form": "5.0.0", + "@opentripplanner/trip-form": "/tmp/otp-ui-pkg/trip-form", "@opentripplanner/trip-viewer-overlay": "/tmp/otp-ui-pkg/trip-viewer-overlay", "@opentripplanner/vehicle-rental-overlay": "/tmp/otp-ui-pkg/vehicle-rental-overlay", "@styled-icons/fa-regular": "^10.34.0", diff --git a/yarn.lock b/yarn.lock index d5b789e48..92970f817 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2378,7 +2378,7 @@ rw "^1.3.3" sort-object "^3.0.3" -"@maplibre/maplibre-gl-style-spec@^23.2.2": +"@maplibre/maplibre-gl-style-spec@^23.2.2", "@maplibre/maplibre-gl-style-spec@^23.3.0": version "23.3.0" resolved "https://registry.yarnpkg.com/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-23.3.0.tgz#b69ab48cb3abead4e49213396c8f83492638b97c" integrity sha512-IGJtuBbaGzOUgODdBRg66p8stnwj9iDXkgbYKoYcNiiQmaez5WVRfXm4b03MCDwmZyX93csbfHFWEJJYHnn5oA== @@ -2673,32 +2673,22 @@ dependencies: "@octokit/openapi-types" "^10.0.0" -"@opentripplanner/base-map@5.0.2", "@opentripplanner/base-map@file:../../../../tmp/otp-ui-pkg/base-map": - version "5.0.2" - dependencies: - "@opentripplanner/building-blocks" "3.0.0" - maplibre-gl "^5.5.0" - react-map-gl "^8.0.4" - -"@opentripplanner/base-map@5.2.0": +"@opentripplanner/base-map@5.2.0", "@opentripplanner/base-map@file:../../../../tmp/otp-ui-pkg/base-map": version "5.2.0" - resolved "https://registry.yarnpkg.com/@opentripplanner/base-map/-/base-map-5.2.0.tgz#67992efcf9ed492d478e03d1e505f9a03b189028" - integrity sha512-UoPkmbDyiKO7Fm3vtsEFFgTLa6SLN6cFd9UdPjoJbhpjXB36ihEreE+DKvVUGPOdzBeT4EY+Hl2NNzkLRSYrtg== dependencies: "@opentripplanner/building-blocks" "3.0.1" - mapbox-gl "npm:empty-npm-package@1.0.0" - maplibre-gl "^2.1.9" - react-map-gl "^7.0.15" + maplibre-gl "^5.6.0" + react-map-gl "^8.0.4" -"@opentripplanner/building-blocks@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@opentripplanner/building-blocks/-/building-blocks-3.0.0.tgz#79952990a3ea8fdcbc4ac718d2d5e8793605aa9a" - integrity sha512-ThwCeWL4qZalayM3zg/D+Vzl4a+xY+289WWAU2D5lwI5f8/CAj8XDlLWuU6vcEYPI7pEf/GWnz01hBJ7KLeMrg== +"@opentripplanner/building-blocks@3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@opentripplanner/building-blocks/-/building-blocks-3.0.1.tgz#c75be7d0af3404ea9c8df23373d0b8f03827393b" + integrity sha512-0kJQiIcquFltl320Ht4uHbA+21u7sYjC8uGp4R6DzEVFLMDajogP7lPulSUx+qPQMES0cj5XjE3PRi5TRCWZ3Q== dependencies: "@styled-icons/bootstrap" "^10.47.0" "@opentripplanner/building-blocks@file:../../../../tmp/otp-ui-pkg/building-blocks": - version "3.0.0" + version "3.0.1" dependencies: "@styled-icons/bootstrap" "^10.47.0" @@ -2739,8 +2729,8 @@ "@opentripplanner/endpoints-overlay@file:../../../../tmp/otp-ui-pkg/endpoints-overlay": version "4.0.1" dependencies: - "@opentripplanner/base-map" "5.0.2" - "@opentripplanner/building-blocks" "3.0.0" + "@opentripplanner/base-map" "5.2.0" + "@opentripplanner/building-blocks" "3.0.1" "@opentripplanner/core-utils" "13.0.1" "@opentripplanner/location-icon" "2.0.0" "@styled-icons/fa-solid" "^10.34.0" @@ -2806,12 +2796,12 @@ "@opentripplanner/core-utils" "13.0.0" prop-types "^15.7.2" -"@opentripplanner/itinerary-body@7.0.3": - version "7.0.3" - resolved "https://registry.yarnpkg.com/@opentripplanner/itinerary-body/-/itinerary-body-7.0.3.tgz#35e23c275c57ee5444d368fc8c59c10d055d6ab1" - integrity sha512-7btQvQWNTVMXyGe34+zgsehPlZAb6oq53ujPwCEXbcdXzhBjz9T4GG5pQ1FLH0XpbVsePMZCEgFjiKLlzk3dfw== +"@opentripplanner/itinerary-body@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@opentripplanner/itinerary-body/-/itinerary-body-7.0.0.tgz#1128760bb4a8dee672d0492a17b5400102670fc7" + integrity sha512-VeEFHRPmYp6CgA5QVyWTnnlYkWPEUQPU6eWgVpxb/6aBUnS7TrquDmiJeByNaEl4EISbpewbimdfegJPijZ2tw== dependencies: - "@opentripplanner/core-utils" "13.0.1" + "@opentripplanner/core-utils" "13.0.0" "@opentripplanner/humanize-distance" "2.0.0" "@opentripplanner/icons" "4.0.0" "@opentripplanner/location-icon" "2.0.0" @@ -2842,28 +2832,10 @@ react-resize-detector "^4.2.1" string-similarity "^4.0.4" -"@opentripplanner/itinerary-body@7.0.3": - version "7.0.3" - resolved "https://registry.yarnpkg.com/@opentripplanner/itinerary-body/-/itinerary-body-7.0.3.tgz#35e23c275c57ee5444d368fc8c59c10d055d6ab1" - integrity sha512-7btQvQWNTVMXyGe34+zgsehPlZAb6oq53ujPwCEXbcdXzhBjz9T4GG5pQ1FLH0XpbVsePMZCEgFjiKLlzk3dfw== - dependencies: - "@opentripplanner/core-utils" "13.0.1" - "@opentripplanner/humanize-distance" "2.0.0" - "@opentripplanner/icons" "4.0.0" - "@opentripplanner/location-icon" "2.0.0" - "@styled-icons/fa-solid" "^10.34.0" - "@styled-icons/foundation" "^10.34.0" - date-fns "^2.28.0" - date-fns-tz "^1.2.2" - flat "^5.0.2" - react-animate-height "^3.0.4" - react-resize-detector "^4.2.1" - string-similarity "^4.0.4" - -"@opentripplanner/location-field@4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@opentripplanner/location-field/-/location-field-4.0.1.tgz#f114d311ef16b74d381a5dc91ed4401c7f0b3c0e" - integrity sha512-nGpNJYkZ/pYiKpDzTUEMJZl4333inajQTUSm8TGFDrcx6aW8bmgVJTxAlWkpCrs+ZIjzJcYq6IzfCu1eJqYD2w== +"@opentripplanner/location-field@4.0.4": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@opentripplanner/location-field/-/location-field-4.0.4.tgz#8e1ed4db74b8b919355d22cb1a55fe51b1915319" + integrity sha512-RQQxdvwrzvmBWijeU1iZN0ceYk29QxN46PfHsxh7EA9yrg5vPBhuTPcxXQyefKU5+cIzYgXtIai1iz+qIM3+jQ== dependencies: "@conveyal/geocoder-arcgis-geojson" "^0.0.3" "@opentripplanner/core-utils" "13.0.1" @@ -2881,40 +2853,40 @@ "@styled-icons/fa-regular" "^10.34.0" "@styled-icons/fa-solid" "^10.34.0" -"@opentripplanner/map-popup@6.0.2", "@opentripplanner/map-popup@file:../../../../tmp/otp-ui-pkg/map-popup": - version "6.0.2" +"@opentripplanner/map-popup@6.0.4", "@opentripplanner/map-popup@file:../../../../tmp/otp-ui-pkg/map-popup": + version "6.0.4" dependencies: - "@opentripplanner/base-map" "5.0.2" - "@opentripplanner/building-blocks" "3.0.0" + "@opentripplanner/base-map" "5.2.0" + "@opentripplanner/building-blocks" "3.0.1" "@opentripplanner/core-utils" "13.0.1" - "@opentripplanner/from-to-location-picker" "4.0.0" + "@opentripplanner/from-to-location-picker" "4.0.1" flat "^5.0.2" "@opentripplanner/otp2-tile-overlay@file:../../../../tmp/otp-ui-pkg/otp2-tile-overlay": - version "3.0.3" + version "3.1.0" dependencies: - "@opentripplanner/map-popup" "6.0.2" + "@opentripplanner/map-popup" "6.0.4" "@opentripplanner/park-and-ride-overlay@file:../../../../tmp/otp-ui-pkg/park-and-ride-overlay": version "4.0.1" dependencies: - "@opentripplanner/base-map" "5.0.2" - "@opentripplanner/from-to-location-picker" "4.0.0" + "@opentripplanner/base-map" "5.2.0" + "@opentripplanner/from-to-location-picker" "4.0.1" "@opentripplanner/types" "6.5.3" -"@opentripplanner/printable-itinerary@4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@opentripplanner/printable-itinerary/-/printable-itinerary-4.0.1.tgz#0fda9284ecaa1298b6f6a7a22ff51712f8c90e8f" - integrity sha512-Fn9lVpKVi3GdLbVwdQ0gt42loqUwFSUsQX4Ndj1yVsSLAjDGjZz0YmY5AhF3YVNtFEmOSacyqB6+EovNbmL5cg== +"@opentripplanner/printable-itinerary@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@opentripplanner/printable-itinerary/-/printable-itinerary-4.0.0.tgz#b165f3005251c526beb20b238392a37cec86619c" + integrity sha512-hgaDRSckf3QipXLnIFTFUTQb08Tg08sGW+hZR1J9/npyNAcceczPVMnAJn7lrZ1NQCP73tsQ3iw3xnYblPRWbw== dependencies: - "@opentripplanner/core-utils" "13.0.1" - "@opentripplanner/itinerary-body" "7.0.4" + "@opentripplanner/core-utils" "13.0.0" + "@opentripplanner/itinerary-body" "7.0.0" "@opentripplanner/route-viewer-overlay@file:../../../../tmp/otp-ui-pkg/route-viewer-overlay": version "4.0.1" dependencies: "@mapbox/polyline" "^1.1.1" - "@opentripplanner/base-map" "5.0.2" + "@opentripplanner/base-map" "5.2.0" "@opentripplanner/core-utils" "13.0.1" point-in-polygon "^1.1.0" @@ -2932,32 +2904,32 @@ "@opentripplanner/stop-viewer-overlay@file:../../../../tmp/otp-ui-pkg/stop-viewer-overlay": version "4.0.1" dependencies: - "@opentripplanner/base-map" "5.0.2" + "@opentripplanner/base-map" "5.2.0" "@opentripplanner/core-utils" "13.0.1" "@opentripplanner/stops-overlay@file:../../../../tmp/otp-ui-pkg/stops-overlay": version "7.0.2" dependencies: - "@opentripplanner/base-map" "5.0.2" - "@opentripplanner/from-to-location-picker" "4.0.0" - "@opentripplanner/map-popup" "6.0.2" + "@opentripplanner/base-map" "5.2.0" + "@opentripplanner/from-to-location-picker" "4.0.1" + "@opentripplanner/map-popup" "6.0.4" flat "^5.0.2" "@opentripplanner/transit-vehicle-overlay@file:../../../../tmp/otp-ui-pkg/transit-vehicle-overlay": - version "6.0.1" + version "6.0.2" dependencies: - "@opentripplanner/base-map" "5.0.2" + "@opentripplanner/base-map" "5.2.0" "@opentripplanner/core-utils" "13.0.1" "@opentripplanner/icons" "4.0.0" flat "^5.0.2" "@opentripplanner/transitive-overlay@file:../../../../tmp/otp-ui-pkg/transitive-overlay": - version "5.0.2" + version "6.0.1" dependencies: "@mapbox/polyline" "^1.1.1" - "@opentripplanner/base-map" "5.0.2" + "@opentripplanner/base-map" "5.2.0" "@opentripplanner/core-utils" "13.0.1" - "@opentripplanner/itinerary-body" "7.0.3" + "@opentripplanner/itinerary-body" "7.0.4" "@turf/bbox" "^6.5.0" "@turf/bearing" "^6.5.0" "@turf/destination" "^6.5.0" @@ -2976,10 +2948,8 @@ flat "^5.0.2" react-animate-height "^3.0.4" -"@opentripplanner/trip-form@6.0.1": +"@opentripplanner/trip-form@file:../../../../tmp/otp-ui-pkg/trip-form": version "6.0.1" - resolved "https://registry.yarnpkg.com/@opentripplanner/trip-form/-/trip-form-6.0.1.tgz#262079589e056bf49c285a5b38257c54c59f088f" - integrity sha512-7o8frpL7rhieQmkrSaAxj+kqp8ocHyxmyB2l2LH8jJmoGgGevtQ5VxEmXaVctwpGJ12Fi1P/yiqD08PqnPG49w== dependencies: "@floating-ui/react" "^0.19.2" "@opentripplanner/building-blocks" "3.0.1" @@ -2999,10 +2969,10 @@ version "4.0.1" dependencies: "@mapbox/polyline" "^1.1.1" - "@opentripplanner/base-map" "5.0.2" + "@opentripplanner/base-map" "5.2.0" "@opentripplanner/core-utils" "13.0.1" -"@opentripplanner/types@6.5.3", "@opentripplanner/types@^6.5.2": +"@opentripplanner/types@6.5.3", "@opentripplanner/types@^6.5.3": version "6.5.3" resolved "https://registry.yarnpkg.com/@opentripplanner/types/-/types-6.5.3.tgz#cde99b1b5a1f16b88cfd1baa7005918151cebde3" integrity sha512-zcr/IIkZ9P9U5G0j9IsT4nbxplIEc1NQRpfgvEqqI3GPAkr7wTPe2KtyjgxcTIszZ2qLzUwwhmVWkNYjekcMyA== @@ -3010,10 +2980,10 @@ "@opentripplanner/vehicle-rental-overlay@file:../../../../tmp/otp-ui-pkg/vehicle-rental-overlay": version "4.0.2" dependencies: - "@opentripplanner/base-map" "5.0.2" + "@opentripplanner/base-map" "5.2.0" "@opentripplanner/core-utils" "13.0.1" - "@opentripplanner/from-to-location-picker" "4.0.0" - "@opentripplanner/map-popup" "6.0.2" + "@opentripplanner/from-to-location-picker" "4.0.1" + "@opentripplanner/map-popup" "6.0.4" "@styled-icons/fa-solid" "^10.34.0" flat "^5.0.2" lodash.memoize "^4.1.2" @@ -13044,6 +13014,38 @@ maplibre-gl@^5.5.0: tinyqueue "^3.0.0" vt-pbf "^3.1.3" +maplibre-gl@^5.6.0: + version "5.6.1" + resolved "https://registry.yarnpkg.com/maplibre-gl/-/maplibre-gl-5.6.1.tgz#d6fd215f14274aef9b695cd2a34eb3b4ad788049" + integrity sha512-TTSfoTaF7RqKUR9wR5qDxCHH2J1XfZ1E85luiLOx0h8r50T/LnwAwwfV0WVNh9o8dA7rwt57Ucivf1emyeukXg== + dependencies: + "@mapbox/geojson-rewind" "^0.5.2" + "@mapbox/jsonlint-lines-primitives" "^2.0.2" + "@mapbox/point-geometry" "^0.1.0" + "@mapbox/tiny-sdf" "^2.0.6" + "@mapbox/unitbezier" "^0.0.1" + "@mapbox/vector-tile" "^1.3.1" + "@mapbox/whoots-js" "^3.1.0" + "@maplibre/maplibre-gl-style-spec" "^23.3.0" + "@types/geojson" "^7946.0.16" + "@types/geojson-vt" "3.2.5" + "@types/mapbox__point-geometry" "^0.1.4" + "@types/mapbox__vector-tile" "^1.3.4" + "@types/pbf" "^3.0.5" + "@types/supercluster" "^7.1.3" + earcut "^3.0.1" + geojson-vt "^4.0.2" + gl-matrix "^3.4.3" + global-prefix "^4.0.0" + kdbush "^4.0.2" + murmurhash-js "^1.0.0" + pbf "^3.3.0" + potpack "^2.0.0" + quickselect "^3.0.0" + supercluster "^8.0.1" + tinyqueue "^3.0.0" + vt-pbf "^3.1.3" + marked-terminal@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-4.1.1.tgz#34a6f063cd6cfe26bffaf5bac3724e24242168a9" From 3c4a12cfe3738bbfd01413d7f83e00a4647bfeac Mon Sep 17 00:00:00 2001 From: Alec Georgoff Date: Tue, 8 Jul 2025 11:43:16 -0700 Subject: [PATCH 07/24] Move bike rental query to graphQL --- lib/actions/api.js | 12 +++--------- lib/actions/apiV2.js | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 9 deletions(-) diff --git a/lib/actions/api.js b/lib/actions/api.js index 352276962..dd898196a 100644 --- a/lib/actions/api.js +++ b/lib/actions/api.js @@ -320,15 +320,8 @@ export function parkAndRideQuery( export const bikeRentalError = createAction('BIKE_RENTAL_ERROR') export const bikeRentalResponse = createAction('BIKE_RENTAL_RESPONSE') -export function bikeRentalQuery( - params, - responseAction = bikeRentalResponse, - errorAction = bikeRentalError, - options = {} -) { - const paramsString = qs.stringify(params) - const endpoint = `bike_rental${paramsString ? `?${paramsString}` : ''}` - return createQueryAction(endpoint, responseAction, errorAction, options) +export function bikeRentalQuery() { + return executeOTPAction('findBikeRental') } // Car rental (e.g. car2go) locations lookup query @@ -337,6 +330,7 @@ export const carRentalResponse = createAction('CAR_RENTAL_RESPONSE') export const carRentalError = createAction('CAR_RENTAL_ERROR') export function carRentalQuery(params) { + console.log('carRentalQuery') return createQueryAction('car_rental', carRentalResponse, carRentalError) } diff --git a/lib/actions/apiV2.js b/lib/actions/apiV2.js index 926b42e09..c93150632 100644 --- a/lib/actions/apiV2.js +++ b/lib/actions/apiV2.js @@ -693,6 +693,44 @@ const getVehiclePositionsForRoute = (routeId) => ) } +const bikeRentalError = createAction('BIKE_RENTAL_ERROR') +const bikeRentalResponse = createAction('BIKE_RENTAL_RESPONSE') + +export function findBikeRental() { + return function (dispatch) { + dispatch( + createGraphQLQueryAction( + `query GtfsExampleQuery { + vehicleRentalStations { + id + name + lat + lon + allowDropoff + allowPickup + rentalNetwork { + networkId + } + availableVehicles { + total + } + availableSpaces { + total + } + realtime + } + }`, + {}, + bikeRentalResponse, + bikeRentalError, + { + rewritePayload: (payload) => payload.data + } + ) + ) + } +} + export const findRoute = (params) => function (dispatch, getState) { const { routeId } = params @@ -1295,6 +1333,7 @@ const retrieveServiceTimeRangeIfNeeded = () => export default { fetchNearby, + findBikeRental, findPatternsForRoute, findRoute, findRoutes, From 95a31c511916ecfc9e88f47baea787f62b898a32 Mon Sep 17 00:00:00 2001 From: Alec Georgoff Date: Tue, 8 Jul 2025 14:34:34 -0700 Subject: [PATCH 08/24] Update bike rental response reducer --- lib/reducers/create-otp-reducer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/reducers/create-otp-reducer.js b/lib/reducers/create-otp-reducer.js index 5375134be..51d33ddfa 100644 --- a/lib/reducers/create-otp-reducer.js +++ b/lib/reducers/create-otp-reducer.js @@ -452,7 +452,7 @@ function createOtpReducer(config) { overlay: { bikeRental: { pending: { $set: false }, - stations: { $set: action.payload.stations } + stations: { $set: action.payload.vehicleRentalStations } } } }) From 5f660245a5aaa959650cce5d786cc6f1ac12d4d1 Mon Sep 17 00:00:00 2001 From: Alec Georgoff Date: Thu, 10 Jul 2025 10:23:39 -0700 Subject: [PATCH 09/24] Remove comment --- lib/actions/api.js | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/actions/api.js b/lib/actions/api.js index dd898196a..c440fdf23 100644 --- a/lib/actions/api.js +++ b/lib/actions/api.js @@ -330,7 +330,6 @@ export const carRentalResponse = createAction('CAR_RENTAL_RESPONSE') export const carRentalError = createAction('CAR_RENTAL_ERROR') export function carRentalQuery(params) { - console.log('carRentalQuery') return createQueryAction('car_rental', carRentalResponse, carRentalError) } From 175b0ea652a32baa27776cb2e1793bd58e8db9c3 Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Thu, 10 Jul 2025 13:23:10 -0400 Subject: [PATCH 10/24] chore(deps): Update OTP-UI trip-form --- package.json | 2 +- yarn.lock | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 6f11efe80..71e467eff 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "@opentripplanner/transit-vehicle-overlay": "/tmp/otp-ui-pkg/transit-vehicle-overlay", "@opentripplanner/transitive-overlay": "/tmp/otp-ui-pkg/transitive-overlay", "@opentripplanner/trip-details": "7.0.0", - "@opentripplanner/trip-form": "/tmp/otp-ui-pkg/trip-form", + "@opentripplanner/trip-form": "6.0.2", "@opentripplanner/trip-viewer-overlay": "/tmp/otp-ui-pkg/trip-viewer-overlay", "@opentripplanner/vehicle-rental-overlay": "/tmp/otp-ui-pkg/vehicle-rental-overlay", "@styled-icons/fa-regular": "^10.34.0", diff --git a/yarn.lock b/yarn.lock index 92970f817..4f468ad5c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2948,8 +2948,10 @@ flat "^5.0.2" react-animate-height "^3.0.4" -"@opentripplanner/trip-form@file:../../../../tmp/otp-ui-pkg/trip-form": - version "6.0.1" +"@opentripplanner/trip-form@6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@opentripplanner/trip-form/-/trip-form-6.0.2.tgz#8db1dbf7da12957f718289e3030a68cc16969e89" + integrity sha512-cn0FqCIwtkSELng9a3Br4ispd6BNC/VAw6S3UPC850mt9BkCKK4RdBhtSitX0FGiwLy50cERKxJFA68xNka9ew== dependencies: "@floating-ui/react" "^0.19.2" "@opentripplanner/building-blocks" "3.0.1" From f4d84e1cb0599c9907e69a54e5e24aea95e18ffa Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Fri, 11 Jul 2025 10:57:12 -0400 Subject: [PATCH 11/24] fix(ResponsiveWebApp): Sort from/to coordinates before calling map.fitBounds() --- lib/components/app/responsive-webapp.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/components/app/responsive-webapp.js b/lib/components/app/responsive-webapp.js index c5e209177..703aa497d 100644 --- a/lib/components/app/responsive-webapp.js +++ b/lib/components/app/responsive-webapp.js @@ -107,8 +107,19 @@ class ResponsiveWebapp extends Component { autoFly !== false && activeItinerary === null ) { - if (query.from && query.to) { - map?.fitBounds([query.from, query.to], { + if ( + query.from && + query.to && + query.from !== prevProps.query.from && + query.to !== prevProps.query.to + ) { + // Recent versions of maplibre enforce the order of coordinates (i.e., sw, ne). + const minlat = Math.min(query.from.lat, query.to.lat) + const maxlat = Math.max(query.from.lat, query.to.lat) + const minlon = Math.min(query.from.lon, query.to.lon) + const maxlon = Math.max(query.from.lon, query.to.lon) + + map?.fitBounds([minlon, minlat, maxlon, maxlat], { duration: 600, padding: util.getFitBoundsPadding(map, 0.2) }) From 3be390197eb5b2dbabb7d96331ca07be5d928a4b Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Fri, 11 Jul 2025 11:15:50 -0400 Subject: [PATCH 12/24] fix(RoutePreviewOverlay): Sort coordinates before calling map.fitBounds --- lib/components/map/route-preview-overlay.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/components/map/route-preview-overlay.tsx b/lib/components/map/route-preview-overlay.tsx index 4f0b5c0d4..3d3239df6 100644 --- a/lib/components/map/route-preview-overlay.tsx +++ b/lib/components/map/route-preview-overlay.tsx @@ -34,7 +34,13 @@ const RoutePreviewOverlay = ({ const { current: map } = useMap() useEffect(() => { if (visible && mainPanelContent === null) { - map?.fitBounds([from, to], { + // Recent versions of maplibre enforce the order of coordinates (i.e., sw, ne). + const minlat = Math.min(from.lat, to.lat) + const maxlat = Math.max(from.lat, to.lat) + const minlon = Math.min(from.lon, to.lon) + const maxlon = Math.max(from.lon, to.lon) + + map?.fitBounds([minlon, minlat, maxlon, maxlat], { duration: 600, padding: util.getFitBoundsPadding(map, 0.2) }) From b42f5ae5c7933e416834b50d127c3bd5ad1baa7e Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Fri, 11 Jul 2025 11:39:49 -0400 Subject: [PATCH 13/24] refactor(webapp,rtprvw): Extract method to fit map to endpoints --- lib/components/app/responsive-webapp.js | 12 ++-------- lib/components/map/route-preview-overlay.tsx | 13 ++-------- lib/util/ui.ts | 25 ++++++++++++++++++++ 3 files changed, 29 insertions(+), 21 deletions(-) diff --git a/lib/components/app/responsive-webapp.js b/lib/components/app/responsive-webapp.js index 703aa497d..509a11a10 100644 --- a/lib/components/app/responsive-webapp.js +++ b/lib/components/app/responsive-webapp.js @@ -26,6 +26,7 @@ import * as mapActions from '../../actions/map' import * as uiActions from '../../actions/ui' import { AUTH0_AUDIENCE, AUTH0_SCOPE } from '../../util/constants' import { ComponentContext } from '../../util/contexts' +import { fitMapToEndpoints } from '../../util/ui' import { getActiveItinerary } from '../../util/state' import { getAuth0Config } from '../../util/auth' import { getDefaultLocale } from '../../util/i18n' @@ -113,16 +114,7 @@ class ResponsiveWebapp extends Component { query.from !== prevProps.query.from && query.to !== prevProps.query.to ) { - // Recent versions of maplibre enforce the order of coordinates (i.e., sw, ne). - const minlat = Math.min(query.from.lat, query.to.lat) - const maxlat = Math.max(query.from.lat, query.to.lat) - const minlon = Math.min(query.from.lon, query.to.lon) - const maxlon = Math.max(query.from.lon, query.to.lon) - - map?.fitBounds([minlon, minlat, maxlon, maxlat], { - duration: 600, - padding: util.getFitBoundsPadding(map, 0.2) - }) + fitMapToEndpoints(map, query.from, query.to) } else if (query.from && !query.to) { setMapCenter(map, query.from) } else if (query.to && !query.from) { diff --git a/lib/components/map/route-preview-overlay.tsx b/lib/components/map/route-preview-overlay.tsx index 3d3239df6..1d793ce0a 100644 --- a/lib/components/map/route-preview-overlay.tsx +++ b/lib/components/map/route-preview-overlay.tsx @@ -1,11 +1,11 @@ import { connect } from 'react-redux' import { Itinerary, Location } from '@opentripplanner/types' import { Layer, Source, useMap } from 'react-map-gl/maplibre' -import { util } from '@opentripplanner/base-map' import polyline from '@mapbox/polyline' import React, { useEffect } from 'react' import { DARK_TEXT_GREY } from '../util/colors' +import { fitMapToEndpoints } from '../../util/ui' import { getActiveItinerary, getActiveSearch, @@ -34,16 +34,7 @@ const RoutePreviewOverlay = ({ const { current: map } = useMap() useEffect(() => { if (visible && mainPanelContent === null) { - // Recent versions of maplibre enforce the order of coordinates (i.e., sw, ne). - const minlat = Math.min(from.lat, to.lat) - const maxlat = Math.max(from.lat, to.lat) - const minlon = Math.min(from.lon, to.lon) - const maxlon = Math.max(from.lon, to.lon) - - map?.fitBounds([minlon, minlat, maxlon, maxlat], { - duration: 600, - padding: util.getFitBoundsPadding(map, 0.2) - }) + fitMapToEndpoints(map, from, to) } }, [map, visible, from, to, mainPanelContent]) diff --git a/lib/util/ui.ts b/lib/util/ui.ts index e68f28a0d..bb4a582e7 100644 --- a/lib/util/ui.ts +++ b/lib/util/ui.ts @@ -1,5 +1,8 @@ /* eslint-disable camelcase */ import { FormikProps } from 'formik' +import { Location } from '@opentripplanner/types' +import { MapRef } from 'react-map-gl/maplibre' +import { util } from '@opentripplanner/base-map' /** * @param string the string to test. @@ -143,3 +146,25 @@ export function getMapToggleNewItineraryView( return ItineraryView.LIST } } + +/** + * Fit map bounds so that both the from and to endpoints are visible. + */ +export function fitMapToEndpoints( + map: MapRef, + from: Location, + to: Location +): void { + if (map) { + // Recent versions of maplibre enforce the order of coordinates (i.e., sw, ne). + const minlat = Math.min(from.lat, to.lat) + const maxlat = Math.max(from.lat, to.lat) + const minlon = Math.min(from.lon, to.lon) + const maxlon = Math.max(from.lon, to.lon) + + map.fitBounds([minlon, minlat, maxlon, maxlat], { + duration: 600, + padding: util.getFitBoundsPadding(map, 0.2) + }) + } +} From 12ef610c9585c0c32d40ff2fff359c5dfe890fcc Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Fri, 11 Jul 2025 11:50:25 -0400 Subject: [PATCH 14/24] refactor(RoutePreviewOverlay): Improve typing --- lib/components/map/route-preview-overlay.tsx | 21 ++++++++------------ lib/util/ui.ts | 2 +- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/lib/components/map/route-preview-overlay.tsx b/lib/components/map/route-preview-overlay.tsx index 1d793ce0a..0c535e1af 100644 --- a/lib/components/map/route-preview-overlay.tsx +++ b/lib/components/map/route-preview-overlay.tsx @@ -4,6 +4,7 @@ import { Layer, Source, useMap } from 'react-map-gl/maplibre' import polyline from '@mapbox/polyline' import React, { useEffect } from 'react' +import { AppReduxState } from '../../util/state-types' import { DARK_TEXT_GREY } from '../util/colors' import { fitMapToEndpoints } from '../../util/ui' import { @@ -15,7 +16,6 @@ import { type Props = { from: Location geometries: string[] - mainPanelContent: number | null to: Location visible?: boolean } @@ -23,20 +23,16 @@ type Props = { * This overlay will display thin gray lines for a set of geometries. It's to be used * as a stopgap until we make full use of Transitive! */ -const RoutePreviewOverlay = ({ - from, - geometries, - mainPanelContent, - to, - visible -}: Props) => { +const RoutePreviewOverlay = ({ from, geometries, to, visible }: Props) => { // Center the map over the endpoints when this overlay is shown. const { current: map } = useMap() useEffect(() => { - if (visible && mainPanelContent === null) { + if (visible) { + // console.log('Route Preview Overlay fit bounds', [from, to], visible, new Date().valueOf()) + fitMapToEndpoints(map, from, to) } - }, [map, visible, from, to, mainPanelContent]) + }, [map, visible, from, to]) if (!geometries || !visible) return <> @@ -79,8 +75,7 @@ const RoutePreviewOverlay = ({ } } -// TODO: Typescript state -const mapStateToProps = (state: any) => { +const mapStateToProps = (state: AppReduxState) => { const { activeSearchId, config, ui } = state.otp // Only show this overlay if the metro UI is explicitly enabled if (config.itinerary?.showFirstResultByDefault !== false) { @@ -107,11 +102,11 @@ const mapStateToProps = (state: any) => { return { from, geometries, - mainPanelContent: ui.mainPanelContent, to, visible: // We need an explicit check for undefined and null because 0 // is for us true + ui.mainPanelContent && (visibleItinerary === undefined || visibleItinerary === null) && (activeItinerary === undefined || activeItinerary === null) } diff --git a/lib/util/ui.ts b/lib/util/ui.ts index bb4a582e7..161702f6c 100644 --- a/lib/util/ui.ts +++ b/lib/util/ui.ts @@ -151,7 +151,7 @@ export function getMapToggleNewItineraryView( * Fit map bounds so that both the from and to endpoints are visible. */ export function fitMapToEndpoints( - map: MapRef, + map: MapRef | undefined, from: Location, to: Location ): void { From 1e70eefa76e687eda7c5d442b77b62684be0d13a Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Fri, 11 Jul 2025 12:17:36 -0400 Subject: [PATCH 15/24] refactor(RoutePreviewOverlay): Remove console statement --- lib/components/map/route-preview-overlay.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/components/map/route-preview-overlay.tsx b/lib/components/map/route-preview-overlay.tsx index 0c535e1af..2710e2d6a 100644 --- a/lib/components/map/route-preview-overlay.tsx +++ b/lib/components/map/route-preview-overlay.tsx @@ -28,8 +28,6 @@ const RoutePreviewOverlay = ({ from, geometries, to, visible }: Props) => { const { current: map } = useMap() useEffect(() => { if (visible) { - // console.log('Route Preview Overlay fit bounds', [from, to], visible, new Date().valueOf()) - fitMapToEndpoints(map, from, to) } }, [map, visible, from, to]) From 814d42033a5fd78dedcb4a1771f6699221efe359 Mon Sep 17 00:00:00 2001 From: Alec Georgoff Date: Mon, 14 Jul 2025 10:14:46 -0700 Subject: [PATCH 16/24] Update car rental query and consolidate rental vehicle query logic --- lib/actions/api.js | 10 +---- lib/actions/apiV2.js | 69 +++++++++++++++++++++++++----- lib/reducers/create-otp-reducer.js | 2 +- 3 files changed, 62 insertions(+), 19 deletions(-) diff --git a/lib/actions/api.js b/lib/actions/api.js index c440fdf23..fd167b214 100644 --- a/lib/actions/api.js +++ b/lib/actions/api.js @@ -317,20 +317,14 @@ export function parkAndRideQuery( // bike rental station query -export const bikeRentalError = createAction('BIKE_RENTAL_ERROR') -export const bikeRentalResponse = createAction('BIKE_RENTAL_RESPONSE') - export function bikeRentalQuery() { return executeOTPAction('findBikeRental') } // Car rental (e.g. car2go) locations lookup query -export const carRentalResponse = createAction('CAR_RENTAL_RESPONSE') -export const carRentalError = createAction('CAR_RENTAL_ERROR') - -export function carRentalQuery(params) { - return createQueryAction('car_rental', carRentalResponse, carRentalError) +export function carRentalQuery() { + return createQueryAction('findCarRental') } // Vehicle rental locations lookup query. For now, there are 3 separate diff --git a/lib/actions/apiV2.js b/lib/actions/apiV2.js index c93150632..ea3e0c42d 100644 --- a/lib/actions/apiV2.js +++ b/lib/actions/apiV2.js @@ -693,14 +693,8 @@ const getVehiclePositionsForRoute = (routeId) => ) } -const bikeRentalError = createAction('BIKE_RENTAL_ERROR') -const bikeRentalResponse = createAction('BIKE_RENTAL_RESPONSE') - -export function findBikeRental() { - return function (dispatch) { - dispatch( - createGraphQLQueryAction( - `query GtfsExampleQuery { +const rentalVehicleQuery = ` + query GtfsExampleQuery { vehicleRentalStations { id name @@ -713,18 +707,72 @@ export function findBikeRental() { } availableVehicles { total + byType { + vehicleType { + formFactor + } + } } availableSpaces { total + byType { + vehicleType { + formFactor + } + } } realtime } - }`, + }` + +const rentalVehicleFilter = (formFactor) => (station) => + (station.availableVehicles && + station.availableVehicles.byType.some( + (av) => av.vehicleType.formFactor === formFactor + )) || + (station.availableSpaces && + station.availableSpaces.byType.some( + (as) => as.vehicleType.formFactor === formFactor + )) + +const bikeRentalError = createAction('BIKE_RENTAL_ERROR') +const bikeRentalResponse = createAction('BIKE_RENTAL_RESPONSE') + +export function findBikeRental() { + return function (dispatch) { + dispatch( + createGraphQLQueryAction( + rentalVehicleQuery, {}, bikeRentalResponse, bikeRentalError, { - rewritePayload: (payload) => payload.data + rewritePayload: (payload) => + payload.data.vehicleRentalStations.filter( + rentalVehicleFilter('BICYCLE') + ) + } + ) + ) + } +} + +export const carRentalResponse = createAction('CAR_RENTAL_RESPONSE') +export const carRentalError = createAction('CAR_RENTAL_ERROR') + +export function findCarRental() { + return function (dispatch) { + dispatch( + createGraphQLQueryAction( + rentalVehicleQuery, + {}, + carRentalResponse, + carRentalError, + { + rewritePayload: (payload) => + payload.data.vehicleRentalStations.filter( + rentalVehicleFilter('CAR') + ) } ) ) @@ -1334,6 +1382,7 @@ const retrieveServiceTimeRangeIfNeeded = () => export default { fetchNearby, findBikeRental, + findCarRental, findPatternsForRoute, findRoute, findRoutes, diff --git a/lib/reducers/create-otp-reducer.js b/lib/reducers/create-otp-reducer.js index 51d33ddfa..66b61428c 100644 --- a/lib/reducers/create-otp-reducer.js +++ b/lib/reducers/create-otp-reducer.js @@ -452,7 +452,7 @@ function createOtpReducer(config) { overlay: { bikeRental: { pending: { $set: false }, - stations: { $set: action.payload.vehicleRentalStations } + stations: { $set: action.payload } } } }) From 915413fe06f526ac1db9f549d061114b11a827e5 Mon Sep 17 00:00:00 2001 From: Alec Georgoff Date: Mon, 14 Jul 2025 10:16:04 -0700 Subject: [PATCH 17/24] Fix carRentalQuery --- lib/actions/api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/actions/api.js b/lib/actions/api.js index fd167b214..9ed154cc1 100644 --- a/lib/actions/api.js +++ b/lib/actions/api.js @@ -324,7 +324,7 @@ export function bikeRentalQuery() { // Car rental (e.g. car2go) locations lookup query export function carRentalQuery() { - return createQueryAction('findCarRental') + return executeOTPAction('findCarRental') } // Vehicle rental locations lookup query. For now, there are 3 separate From 52a30fea24b86e85dde72e96ebfd19ca83a50200 Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Tue, 15 Jul 2025 14:38:06 -0400 Subject: [PATCH 18/24] chore(deps): Update maplibre to 5.6.1 --- yarn.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4f468ad5c..2f8cb9bec 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2677,7 +2677,7 @@ version "5.2.0" dependencies: "@opentripplanner/building-blocks" "3.0.1" - maplibre-gl "^5.6.0" + maplibre-gl "^5.6.1" react-map-gl "^8.0.4" "@opentripplanner/building-blocks@3.0.1": @@ -13016,7 +13016,7 @@ maplibre-gl@^5.5.0: tinyqueue "^3.0.0" vt-pbf "^3.1.3" -maplibre-gl@^5.6.0: +maplibre-gl@^5.6.1: version "5.6.1" resolved "https://registry.yarnpkg.com/maplibre-gl/-/maplibre-gl-5.6.1.tgz#d6fd215f14274aef9b695cd2a34eb3b4ad788049" integrity sha512-TTSfoTaF7RqKUR9wR5qDxCHH2J1XfZ1E85luiLOx0h8r50T/LnwAwwfV0WVNh9o8dA7rwt57Ucivf1emyeukXg== From 55b77a47a4c05bc12f5be294a86bc120bc193047 Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Tue, 15 Jul 2025 14:40:32 -0400 Subject: [PATCH 19/24] refactor(util): Reuse fitMapToPoints with bounds sorting from base-map. --- lib/components/app/responsive-webapp.js | 6 ++--- lib/components/map/route-preview-overlay.tsx | 6 ++--- lib/util/ui.ts | 25 -------------------- 3 files changed, 6 insertions(+), 31 deletions(-) diff --git a/lib/components/app/responsive-webapp.js b/lib/components/app/responsive-webapp.js index 509a11a10..5c486e58c 100644 --- a/lib/components/app/responsive-webapp.js +++ b/lib/components/app/responsive-webapp.js @@ -26,7 +26,6 @@ import * as mapActions from '../../actions/map' import * as uiActions from '../../actions/ui' import { AUTH0_AUDIENCE, AUTH0_SCOPE } from '../../util/constants' import { ComponentContext } from '../../util/contexts' -import { fitMapToEndpoints } from '../../util/ui' import { getActiveItinerary } from '../../util/state' import { getAuth0Config } from '../../util/auth' import { getDefaultLocale } from '../../util/i18n' @@ -112,9 +111,10 @@ class ResponsiveWebapp extends Component { query.from && query.to && query.from !== prevProps.query.from && - query.to !== prevProps.query.to + query.to !== prevProps.query.to && + map ) { - fitMapToEndpoints(map, query.from, query.to) + util.fitMapToPoints(map, query.from, query.to, 0.2, 600) } else if (query.from && !query.to) { setMapCenter(map, query.from) } else if (query.to && !query.from) { diff --git a/lib/components/map/route-preview-overlay.tsx b/lib/components/map/route-preview-overlay.tsx index 2710e2d6a..87c8c6cf0 100644 --- a/lib/components/map/route-preview-overlay.tsx +++ b/lib/components/map/route-preview-overlay.tsx @@ -1,12 +1,12 @@ import { connect } from 'react-redux' import { Itinerary, Location } from '@opentripplanner/types' import { Layer, Source, useMap } from 'react-map-gl/maplibre' +import { util } from '@opentripplanner/base-map' import polyline from '@mapbox/polyline' import React, { useEffect } from 'react' import { AppReduxState } from '../../util/state-types' import { DARK_TEXT_GREY } from '../util/colors' -import { fitMapToEndpoints } from '../../util/ui' import { getActiveItinerary, getActiveSearch, @@ -27,8 +27,8 @@ const RoutePreviewOverlay = ({ from, geometries, to, visible }: Props) => { // Center the map over the endpoints when this overlay is shown. const { current: map } = useMap() useEffect(() => { - if (visible) { - fitMapToEndpoints(map, from, to) + if (visible && map) { + util.fitMapToPoints(map, from, to, 0.2, 600) } }, [map, visible, from, to]) diff --git a/lib/util/ui.ts b/lib/util/ui.ts index 161702f6c..e68f28a0d 100644 --- a/lib/util/ui.ts +++ b/lib/util/ui.ts @@ -1,8 +1,5 @@ /* eslint-disable camelcase */ import { FormikProps } from 'formik' -import { Location } from '@opentripplanner/types' -import { MapRef } from 'react-map-gl/maplibre' -import { util } from '@opentripplanner/base-map' /** * @param string the string to test. @@ -146,25 +143,3 @@ export function getMapToggleNewItineraryView( return ItineraryView.LIST } } - -/** - * Fit map bounds so that both the from and to endpoints are visible. - */ -export function fitMapToEndpoints( - map: MapRef | undefined, - from: Location, - to: Location -): void { - if (map) { - // Recent versions of maplibre enforce the order of coordinates (i.e., sw, ne). - const minlat = Math.min(from.lat, to.lat) - const maxlat = Math.max(from.lat, to.lat) - const minlon = Math.min(from.lon, to.lon) - const maxlon = Math.max(from.lon, to.lon) - - map.fitBounds([minlon, minlat, maxlon, maxlat], { - duration: 600, - padding: util.getFitBoundsPadding(map, 0.2) - }) - } -} From 84b55f0cac700e2c85e9e254ae56a473a0065f21 Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Tue, 15 Jul 2025 16:08:08 -0400 Subject: [PATCH 20/24] chore(deps): Finish updating maplibre to 5.6.1. --- package.json | 2 +- yarn.lock | 34 +--------------------------------- 2 files changed, 2 insertions(+), 34 deletions(-) diff --git a/package.json b/package.json index 030989e7c..a9549df8d 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "lodash.isempty": "^4.4.0", "lodash.isequal": "^4.5.0", "lodash.memoize": "^4.1.2", - "maplibre-gl": "^5.5.0", + "maplibre-gl": "^5.6.1", "object-hash": "^3.0.0", "object-path": "^0.11.8", "object-to-formdata": "^4.1.0", diff --git a/yarn.lock b/yarn.lock index c4d246703..88478a213 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2378,7 +2378,7 @@ rw "^1.3.3" sort-object "^3.0.3" -"@maplibre/maplibre-gl-style-spec@^23.2.2", "@maplibre/maplibre-gl-style-spec@^23.3.0": +"@maplibre/maplibre-gl-style-spec@^23.3.0": version "23.3.0" resolved "https://registry.yarnpkg.com/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-23.3.0.tgz#b69ab48cb3abead4e49213396c8f83492638b97c" integrity sha512-IGJtuBbaGzOUgODdBRg66p8stnwj9iDXkgbYKoYcNiiQmaez5WVRfXm4b03MCDwmZyX93csbfHFWEJJYHnn5oA== @@ -12966,38 +12966,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -maplibre-gl@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/maplibre-gl/-/maplibre-gl-5.5.0.tgz#0a295a634e745a5c31848ac7198893da417d09ae" - integrity sha512-p8AOPuzzqn1ZA9gcXxKw0IED715we/2Owa/YUr6PANmgMvNMe/JG+V/C1hRra43Wm62Biz+Aa8AgbOLJimA8tA== - dependencies: - "@mapbox/geojson-rewind" "^0.5.2" - "@mapbox/jsonlint-lines-primitives" "^2.0.2" - "@mapbox/point-geometry" "^0.1.0" - "@mapbox/tiny-sdf" "^2.0.6" - "@mapbox/unitbezier" "^0.0.1" - "@mapbox/vector-tile" "^1.3.1" - "@mapbox/whoots-js" "^3.1.0" - "@maplibre/maplibre-gl-style-spec" "^23.2.2" - "@types/geojson" "^7946.0.16" - "@types/geojson-vt" "3.2.5" - "@types/mapbox__point-geometry" "^0.1.4" - "@types/mapbox__vector-tile" "^1.3.4" - "@types/pbf" "^3.0.5" - "@types/supercluster" "^7.1.3" - earcut "^3.0.1" - geojson-vt "^4.0.2" - gl-matrix "^3.4.3" - global-prefix "^4.0.0" - kdbush "^4.0.2" - murmurhash-js "^1.0.0" - pbf "^3.3.0" - potpack "^2.0.0" - quickselect "^3.0.0" - supercluster "^8.0.1" - tinyqueue "^3.0.0" - vt-pbf "^3.1.3" - maplibre-gl@^5.6.1: version "5.6.1" resolved "https://registry.yarnpkg.com/maplibre-gl/-/maplibre-gl-5.6.1.tgz#d6fd215f14274aef9b695cd2a34eb3b4ad788049" From 6fe7dd653d23823354e53860fa05b20affaf6003 Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Tue, 15 Jul 2025 17:04:23 -0400 Subject: [PATCH 21/24] fix(NearbyView): Throttle mouseleave events (Firefox bug) --- lib/components/viewers/nearby/nearby-view.tsx | 19 ++++++++++++++----- package.json | 1 + yarn.lock | 12 ++++++++++++ 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/lib/components/viewers/nearby/nearby-view.tsx b/lib/components/viewers/nearby/nearby-view.tsx index 87f05cfc8..7304ec595 100644 --- a/lib/components/viewers/nearby/nearby-view.tsx +++ b/lib/components/viewers/nearby/nearby-view.tsx @@ -2,9 +2,9 @@ import { connect } from 'react-redux' import { FormattedMessage, useIntl } from 'react-intl' import { Location } from '@opentripplanner/types' import { LonLatInput } from '@conveyal/lonlat' -import { MapLibreEvent } from 'maplibre-gl' import { MapRef, useMap, ViewStateChangeEvent } from 'react-map-gl/maplibre' import { Search } from '@styled-icons/fa-solid/Search' +import { throttle } from '@tanstack/pacer' import coreUtils from '@opentripplanner/core-utils' import getGeocoder from '@opentripplanner/geocoder' import LocationField from '@opentripplanner/location-field' @@ -232,13 +232,22 @@ function NearbyView({ const onMouseEnter = useCallback( (location: Location) => { setHighlightedLocation(location) - map && zoomToPlace(map, location) + map && location && zoomToPlace(map, location) }, [setHighlightedLocation, map, zoomToPlace] ) - const onMouseLeave = useCallback(() => { - setHighlightedLocation(null) - }, [setHighlightedLocation]) + + // onMouseLeave is throttled because of a bug on Firefox where + // two mouseleave events are triggered when moving cursor quickly from one card to the next. + const onMouseLeave = useCallback( + throttle( + (e) => { + setHighlightedLocation(null) + }, + { trailing: false, wait: 1000 } + ), + [setHighlightedLocation] + ) // Determine whether the data we have is stale based on whether the coords match the URL // Sometimes Redux could have data from a previous load of the nearby view diff --git a/package.json b/package.json index a9549df8d..f5fac003c 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,7 @@ "@opentripplanner/vehicle-rental-overlay": "/tmp/otp-ui-pkg/vehicle-rental-overlay", "@styled-icons/fa-regular": "^10.34.0", "@styled-icons/fa-solid": "^10.34.0", + "@tanstack/react-pacer": "^0.8.0", "@turf/centroid": "^6.5.0", "@turf/helpers": "^6.5.0", "@types/react-transition-group": "^4.4.10", diff --git a/yarn.lock b/yarn.lock index 88478a213..b74e6e69b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3622,6 +3622,18 @@ "@svgr/plugin-svgo" "^5.5.0" loader-utils "^2.0.0" +"@tanstack/pacer@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@tanstack/pacer/-/pacer-0.8.0.tgz#1c29c3863af65bbab6fef4ebb71a440a256af9ed" + integrity sha512-wh9um4sF37woA9M/Pf05eyl30/V8RYN5x06yDQIhdJ+dB4YsQUR7qt+gIyGmygutFvqTMKDERXSC7NLIBZND9Q== + +"@tanstack/react-pacer@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@tanstack/react-pacer/-/react-pacer-0.8.0.tgz#0a3733eaff6a5a1ede54f49e5f5b892153bcb480" + integrity sha512-nQX5ACRHdOiZjPOudA3Ii64mPfRkeRkSYtjQaRMD3FqY9AQKuQJgPglAFA7U4UenLOXJvqXiKMWzFDi1Bw9EZQ== + dependencies: + "@tanstack/pacer" "0.8.0" + "@tootallnate/once@1": version "1.1.2" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" From d5f97ea46a1ceb8e852ebfe8174cd04c5b7aa0c0 Mon Sep 17 00:00:00 2001 From: Alec Georgoff Date: Wed, 16 Jul 2025 14:46:52 -0700 Subject: [PATCH 22/24] Update vehicle rental queries to use graphQL and new types --- lib/actions/api.js | 28 ++----- lib/actions/apiV2.js | 115 ++++++++++++----------------- lib/components/map/default-map.tsx | 78 +++++++++++++------ lib/reducers/create-otp-reducer.js | 2 +- 4 files changed, 108 insertions(+), 115 deletions(-) diff --git a/lib/actions/api.js b/lib/actions/api.js index bfd3e4166..8b7296538 100644 --- a/lib/actions/api.js +++ b/lib/actions/api.js @@ -318,36 +318,18 @@ export function parkAndRideQuery( // bike rental station query export function bikeRentalQuery() { - return executeOTPAction('findBikeRental') + return executeOTPAction('findBikeRentalStations') } // Car rental (e.g. car2go) locations lookup query export function carRentalQuery() { - return executeOTPAction('findCarRental') + return executeOTPAction('findCarRentalStations') } -// Vehicle rental locations lookup query. For now, there are 3 separate -// "vehicle" rental endpoints - 1 for cars, 1 for bicycle rentals and another -// for micromobility. In the future, the hope is to consolidate these 3 -// endpoints into one. - -export const vehicleRentalResponse = createAction('VEHICLE_RENTAL_RESPONSE') -export const vehicleRentalError = createAction('VEHICLE_RENTAL_ERROR') - -export function vehicleRentalQuery( - params, - responseAction = vehicleRentalResponse, - errorAction = vehicleRentalError, - options = {} -) { - return executeOTPAction( - 'vehicleRentalQuery', - params, - responseAction, - errorAction, - options - ) +// Free-floating rental vehicles lookup query +export function rentalVehicleQuery() { + return executeOTPAction('findRentalVehicles') } // Nearby view lookup query diff --git a/lib/actions/apiV2.js b/lib/actions/apiV2.js index e29ce0c24..a6bcc7a16 100644 --- a/lib/actions/apiV2.js +++ b/lib/actions/apiV2.js @@ -182,60 +182,6 @@ const findTrip = (params) => } ) -export const vehicleRentalQuery = ( - params, - responseAction, - errorAction, - options -) => - // TODO: ErrorsByNetwork is missing - createGraphQLQueryAction( - `{ - rentalVehicles { - vehicleId - id - name - lat - lon - allowPickupNow - vehicleType { - formFactor - } - network - } - } - `, - {}, - responseAction, - errorAction, - { - noThrottle: true, - postprocess: (payload, dispatch) => { - if (payload.errors) { - return errorAction(payload.errors) - } - }, - // TODO: most of this rewrites the OTP2 response to match OTP1. - // we should re-write the rest of the UI to match OTP's behavior instead - rewritePayload: (payload) => { - return { - stations: payload?.data?.rentalVehicles?.map((vehicle) => { - return { - allowPickup: vehicle.allowPickupNow, - id: vehicle.vehicleId, - isFloatingBike: vehicle?.vehicleType?.formFactor === 'BICYCLE', - isFloatingVehicle: vehicle?.vehicleType?.formFactor === 'SCOOTER', - name: vehicle.name, - networks: [vehicle.network], - x: vehicle.lon, - y: vehicle.lat - } - }) - } - } - } - ) - // TODO: numberOfDepartures needs to come from config! const stopTimeGraphQLQuery = ` stopTimes: stoptimesForPatterns(numberOfDepartures: 3) { @@ -685,8 +631,8 @@ const getVehiclePositionsForRoute = (routeId) => ) } -const rentalVehicleQuery = ` - query GtfsExampleQuery { +const vehicleRentalStationsQuery = ` + query VehicleRentalStations { vehicleRentalStations { id name @@ -717,7 +663,7 @@ const rentalVehicleQuery = ` } }` -const rentalVehicleFilter = (formFactor) => (station) => +const vehicleRentalStationFilter = (formFactor) => (station) => (station.availableVehicles && station.availableVehicles.byType.some( (av) => av.vehicleType.formFactor === formFactor @@ -730,18 +676,18 @@ const rentalVehicleFilter = (formFactor) => (station) => const bikeRentalError = createAction('BIKE_RENTAL_ERROR') const bikeRentalResponse = createAction('BIKE_RENTAL_RESPONSE') -export function findBikeRental() { +export function findBikeRentalStations() { return function (dispatch) { dispatch( createGraphQLQueryAction( - rentalVehicleQuery, + vehicleRentalStationsQuery, {}, bikeRentalResponse, bikeRentalError, { rewritePayload: (payload) => payload.data.vehicleRentalStations.filter( - rentalVehicleFilter('BICYCLE') + vehicleRentalStationFilter('BICYCLE') ) } ) @@ -752,18 +698,18 @@ export function findBikeRental() { export const carRentalResponse = createAction('CAR_RENTAL_RESPONSE') export const carRentalError = createAction('CAR_RENTAL_ERROR') -export function findCarRental() { +export function findCarRentalStations() { return function (dispatch) { dispatch( createGraphQLQueryAction( - rentalVehicleQuery, + vehicleRentalStationsQuery, {}, carRentalResponse, carRentalError, { rewritePayload: (payload) => payload.data.vehicleRentalStations.filter( - rentalVehicleFilter('CAR') + vehicleRentalStationFilter('CAR') ) } ) @@ -771,6 +717,41 @@ export function findCarRental() { } } +const rentalVehiclesQuery = ` + query RentalVehicles { + rentalVehicles { + allowPickupNow + id + lat + lon + name + operative + rentalNetwork { + networkId + } + vehicleType { + formFactor + } + } + }` + +const vehicleRentalResponse = createAction('VEHICLE_RENTAL_RESPONSE') +const vehicleRentalError = createAction('VEHICLE_RENTAL_ERROR') + +export function findRentalVehicles() { + return function (dispatch) { + dispatch( + createGraphQLQueryAction( + rentalVehiclesQuery, + {}, + vehicleRentalResponse, + vehicleRentalError, + {} + ) + ) + } +} + export const findRoute = (params) => function (dispatch, getState) { const { routeId } = params @@ -1373,15 +1354,15 @@ const retrieveServiceTimeRangeIfNeeded = () => export default { fetchNearby, - findBikeRental, - findCarRental, + findBikeRentalStations, + findCarRentalStations, findPatternsForRoute, + findRentalVehicles, findRoute, findRoutes, findStopTimesForStop, findTrip, getVehiclePositionsForRoute, retrieveServiceTimeRangeIfNeeded, - routingQuery, - vehicleRentalQuery + routingQuery } diff --git a/lib/components/map/default-map.tsx b/lib/components/map/default-map.tsx index e88fa5211..ee411b5a2 100644 --- a/lib/components/map/default-map.tsx +++ b/lib/components/map/default-map.tsx @@ -2,6 +2,11 @@ // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-nocheck import { connect } from 'react-redux' +import { + FormFactor, + RentalVehicle, + VehicleRentalStation +} from '@opentripplanner/types/otp2' import { GeolocateControl, NavigationControl } from 'react-map-gl' import { getCurrentDate } from '@opentripplanner/core-utils/lib/time' import { injectIntl } from 'react-intl' @@ -15,7 +20,7 @@ import { bikeRentalQuery, carRentalQuery, findStopTimesForStop, - vehicleRentalQuery + rentalVehicleQuery } from '../../actions/api' import { ComponentContext } from '../../util/contexts' import { getActiveItinerary, getActiveSearch } from '../../util/state' @@ -139,10 +144,31 @@ function getLayerName(overlay, config, intl) { } } -class DefaultMap extends Component { +interface DefaultMapProps { + bikeRentalQuery: any + bikeRentalStations: VehicleRentalStation[] + carRentalQuery: any + carRentalStations: VehicleRentalStation[] + config: any + getCurrentPosition: any + intl: any + itinerary: any + mapConfig: any + nearbyViewActive: any + pending: any + // need to update usages to reflect name change: + // vehicleRentalStations: RentalVehicle[] + rentalVehicleQuery: any + rentalVehicles: RentalVehicle[] + setLocation: any + setViewedStop: any + viewedRouteStops: any +} + +class DefaultMap extends Component { static contextType = ComponentContext - constructor(props) { + constructor(props: DefaultMapProps) { super(props) // We have to maintain the map state because the underlying map also (incorrectly?) uses a state. // Not maintaining a state causes re-renders to the map's configured coordinates. @@ -284,10 +310,10 @@ class DefaultMap extends Component { mapConfig, nearbyViewActive, pending, + rentalVehicleQuery, + rentalVehicles, setLocation, setViewedStop, - vehicleRentalQuery, - vehicleRentalStations, viewedRouteStops } = this.props const { getCustomMapOverlays, getTransitiveRouteLabel, ModeIcon } = @@ -299,17 +325,21 @@ class DefaultMap extends Component { config.api?.path }/vectorTiles` - const bikeStations = [ - ...bikeRentalStations.filter( - (station) => - !station.isFloatingVehicle || station.isFloatingVehicle === false - ), - ...vehicleRentalStations.filter( - (station) => station.isFloatingBike === true + const bikeStationsAndFloatingBikes = [ + ...bikeRentalStations, + ...rentalVehicles.filter( + (station) => station.vehicleType?.formFactor === FormFactor.BICYCLE ) ] - const scooterStations = vehicleRentalStations.filter( - (station) => station.isFloatingBike === false && station.isFloatingVehicle + + const scooters = rentalVehicles.filter( + (vehicle) => vehicle.vehicleType?.formFactor === FormFactor.SCOOTER + ) + + const micromobility = rentalVehicles.filter( + (vehicle) => + vehicle.vehicleType && + vehicle.vehicleType?.formFactor !== FormFactor.CAR ) const baseLayersWithNames = baseLayers?.map((baseLayer) => ({ @@ -383,16 +413,16 @@ class DefaultMap extends Component { return ( ) case 'car-rental': return ( ) case 'park-and-ride': @@ -403,8 +433,8 @@ class DefaultMap extends Component { return ( ) case 'otp2-micromobility-rental': @@ -412,8 +442,8 @@ class DefaultMap extends Component { ) case 'otp2-bike-rental': @@ -421,8 +451,8 @@ class DefaultMap extends Component { ) case 'otp2': @@ -492,7 +522,7 @@ const mapStateToProps = (state) => { state.otp.ui.mainPanelContent === MainPanelContent.NEARBY_VIEW, pending: activeSearch ? Boolean(activeSearch.pending) : false, query: state.otp.currentQuery, - vehicleRentalStations: state.otp.overlay.vehicleRental.stations, + rentalVehicles: state.otp.overlay.vehicleRental.stations, viewedRouteStops } } @@ -502,11 +532,11 @@ const mapDispatchToProps = { carRentalQuery, findStopTimesForStop, getCurrentPosition, + rentalVehicleQuery, setLocation, setMapPopupLocationAndGeocode, setViewedStop, - updateOverlayVisibility, - vehicleRentalQuery + updateOverlayVisibility } export default connect( diff --git a/lib/reducers/create-otp-reducer.js b/lib/reducers/create-otp-reducer.js index 9cc1cc127..79d448db7 100644 --- a/lib/reducers/create-otp-reducer.js +++ b/lib/reducers/create-otp-reducer.js @@ -488,7 +488,7 @@ function createOtpReducer(config) { overlay: { vehicleRental: { pending: { $set: false }, - stations: { $set: action.payload.stations } + stations: { $set: action.payload.data.rentalVehicles } } } }) From fbd6599f9cc3ba96fdedf6c230d536c668b4dc00 Mon Sep 17 00:00:00 2001 From: Alec Georgoff Date: Fri, 8 Aug 2025 13:48:23 -0700 Subject: [PATCH 23/24] Remove changes to package.json that introduced locally built tarballs --- package.json | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index f5fac003c..05073dd8b 100644 --- a/package.json +++ b/package.json @@ -39,30 +39,30 @@ "@bugsnag/js": "^7.17.0", "@bugsnag/plugin-react": "^7.17.0", "@floating-ui/react": "^0.19.2", - "@opentripplanner/base-map": "/tmp/otp-ui-pkg/base-map", - "@opentripplanner/building-blocks": "/tmp/otp-ui-pkg/building-blocks", - "@opentripplanner/core-utils": "/tmp/otp-ui-pkg/core-utils", - "@opentripplanner/endpoints-overlay": "/tmp/otp-ui-pkg/endpoints-overlay", - "@opentripplanner/from-to-location-picker": "4.0.0", - "@opentripplanner/geocoder": "/tmp/otp-ui-pkg/geocoder", + "@opentripplanner/base-map": "5.2.0", + "@opentripplanner/building-blocks": "3.0.1", + "@opentripplanner/core-utils": "13.0.1", + "@opentripplanner/endpoints-overlay": "4.0.1", + "@opentripplanner/from-to-location-picker": "4.0.1", + "@opentripplanner/geocoder": "^3.0.5", "@opentripplanner/humanize-distance": "^2.0.0", "@opentripplanner/icons": "4.0.0", "@opentripplanner/itinerary-body": "7.0.4", "@opentripplanner/location-field": "4.0.4", "@opentripplanner/location-icon": "^2.0.0", - "@opentripplanner/map-popup": "/tmp/otp-ui-pkg/map-popup", - "@opentripplanner/otp2-tile-overlay": "/tmp/otp-ui-pkg/otp2-tile-overlay", - "@opentripplanner/park-and-ride-overlay": "/tmp/otp-ui-pkg/park-and-ride-overlay", + "@opentripplanner/map-popup": "6.0.4", + "@opentripplanner/otp2-tile-overlay": "3.1.0", + "@opentripplanner/park-and-ride-overlay": "4.0.1", "@opentripplanner/printable-itinerary": "4.0.1", - "@opentripplanner/route-viewer-overlay": "/tmp/otp-ui-pkg/route-viewer-overlay", - "@opentripplanner/stop-viewer-overlay": "/tmp/otp-ui-pkg/stop-viewer-overlay", - "@opentripplanner/stops-overlay": "/tmp/otp-ui-pkg/stops-overlay", - "@opentripplanner/transit-vehicle-overlay": "/tmp/otp-ui-pkg/transit-vehicle-overlay", - "@opentripplanner/transitive-overlay": "/tmp/otp-ui-pkg/transitive-overlay", - "@opentripplanner/trip-details": "8.0.1", - "@opentripplanner/trip-form": "6.0.2", - "@opentripplanner/trip-viewer-overlay": "/tmp/otp-ui-pkg/trip-viewer-overlay", - "@opentripplanner/vehicle-rental-overlay": "/tmp/otp-ui-pkg/vehicle-rental-overlay", + "@opentripplanner/route-viewer-overlay": "4.0.1", + "@opentripplanner/stop-viewer-overlay": "4.0.1", + "@opentripplanner/stops-overlay": "7.0.2", + "@opentripplanner/transit-vehicle-overlay": "6.0.2", + "@opentripplanner/transitive-overlay": "6.0.0", + "@opentripplanner/trip-details": "^8.0.1", + "@opentripplanner/trip-form": "6.0.1", + "@opentripplanner/trip-viewer-overlay": "4.0.1", + "@opentripplanner/vehicle-rental-overlay": "4.0.2", "@styled-icons/fa-regular": "^10.34.0", "@styled-icons/fa-solid": "^10.34.0", "@tanstack/react-pacer": "^0.8.0", @@ -137,7 +137,7 @@ "@graphql-tools/schema": "^10.0.0", "@modyfi/vite-plugin-yaml": "^1.1.1", "@opentripplanner/scripts": "^1.2.0", - "@opentripplanner/types": "^6.5.3", + "@opentripplanner/types": "/tmp/otp-ui-pkg/types", "@percy/cli": "^1.20.3", "@percy/puppeteer": "^2.0.2", "@types/clone": "^2.1.1", From 348cb88699e843914ff5e534ca489394bd66c567 Mon Sep 17 00:00:00 2001 From: Alec Georgoff Date: Fri, 8 Aug 2025 13:49:03 -0700 Subject: [PATCH 24/24] Remove local types version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 05073dd8b..39ca565fe 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "@graphql-tools/schema": "^10.0.0", "@modyfi/vite-plugin-yaml": "^1.1.1", "@opentripplanner/scripts": "^1.2.0", - "@opentripplanner/types": "/tmp/otp-ui-pkg/types", + "@opentripplanner/types": "^6.5.3", "@percy/cli": "^1.20.3", "@percy/puppeteer": "^2.0.2", "@types/clone": "^2.1.1",