diff --git a/web-app/package.json b/web-app/package.json index 2ba21c217..868e82fab 100644 --- a/web-app/package.json +++ b/web-app/package.json @@ -28,6 +28,7 @@ "leaflet": "^1.9.4", "openapi-fetch": "^0.9.3", "react": "^17.0.0 || ^18.0.0", + "react-animated-numbers": "^0.18.0", "react-dom": "^17.0.0 || ^18.0.0", "react-ga4": "^2.1.0", "react-google-recaptcha": "^3.1.0", diff --git a/web-app/src/app/screens/Account.tsx b/web-app/src/app/screens/Account.tsx index 0be6caf01..7555f1f18 100644 --- a/web-app/src/app/screens/Account.tsx +++ b/web-app/src/app/screens/Account.tsx @@ -341,7 +341,7 @@ export default function APIAccount(): React.ReactElement { {user?.email !== undefined && user?.email !== '' ? ( - + {t('common:email')}:{' '} {' ' + user?.email ?? t('common:unknown')} @@ -484,21 +484,21 @@ export default function APIAccount(): React.ReactElement { {t('accessToken.description.pt2')} -
-
+ {t('accessToken.generate')} {t('accessToken.copy')} -
+ -
+ curl{' '} --location '{apiURL}/tokens' @@ -687,21 +687,21 @@ export default function APIAccount(): React.ReactElement { )} -
-
+ {t('accessToken.testing.api')} {t('accessToken.testing.copyCli')} -
+ -
+ curl diff --git a/web-app/src/app/screens/Contribute.tsx b/web-app/src/app/screens/Contribute.tsx index b9f51d599..162f4e449 100644 --- a/web-app/src/app/screens/Contribute.tsx +++ b/web-app/src/app/screens/Contribute.tsx @@ -151,19 +151,19 @@ export default function Contribute(): React.ReactElement { information, transit providers should add a new feed on the catalogs when there are major changes to their URL. Examples of changes include: -
    -
  • The feed URL changes
  • -
  • - The feed is combined with several other feeds (for example: - several providers' feeds are combined together) -
  • -
  • - The feed is split from a combined/aggregated feed (for example: - a provider whose GTFS was only available in an aggregate feed - now has their own independent feed) -
  • -
+ +
  • The feed URL changes
  • +
  • + The feed is combined with several other feeds (for example: + several providers' feeds are combined together) +
  • +
  • + The feed is split from a combined/aggregated feed (for example: a + provider whose GTFS was only available in an aggregate feed now + has their own independent feed) +
  • +
    Who can contribute a feed? @@ -241,61 +241,62 @@ export default function Contribute(): React.ReactElement {

    Organizations: -
      -
    • Adelaide Metro
    • -
    • Bettendorf Transit
    • -
    • Bi-State Regional Commission
    • -
    • BreizhGo
    • -
    • Cal-ITP
    • -
    • Commerce Municipal Bus Lines
    • -
    • Corpus Christi Regional Transportation Authority
    • -
    • County of Hawai’i Mass Transit Agency
    • -
    • DART Delaware
    • -
    • - Department of Municipalities and Transport, Abu Dhabi, United - Arab Emirates -
    • -
    • Development Bank of Latin America (CAF)
    • -
    • Digital Transport for Africa (DT4A)
    • -
    • ECO Transit
    • -
    • Eismo Info
    • -
    • Entur AS
    • -
    • GTFS.be
    • -
    • Garnet Consultants
    • -
    • Golden Gate Bridge Highway Transit District
    • -
    • High Valley Transit
    • -
    • Kitsap Transit
    • -
    • Kuzzle
    • -
    • Metro Christchurch
    • -
    • Metro de Málaga
    • -
    • Passio Technologies
    • -
    • Pinpoint AVL
    • -
    • Port Phillip Ferries
    • -
    • Redmon Group
    • -
    • Rhode Island Public Transit Authority (RIPTA)
    • -
    • Rhode Island Public Transit Authority (RIPTA)
    • -
    • Rio de Janeiro City Hall
    • -
    • Rochester-Genesee Regional Transportation Authority
    • -
    • Roma Mobilita
    • -
    • SFMTA
    • -
    • SMMAG
    • -
    • San Francisco Municipal Transportation Agency (SFMTA)
    • -
    • San Luis Obispo Regional Transit Authority
    • -
    • Santiago Directorio de Transporte Público Metropolitano
    • -
    • Skedgo
    • -
    • Société nationale des chemins de fer français (SNCF)
    • -
    • Sound Transit
    • -
    • Springfield Mass Transit District (SMTD)
    • -
    • Ticpoi
    • -
    • Transcollines
    • -
    • Transport for Cairo
    • -
    • Two Sigma Data Clinic
    • -
    • UCSC Transporation and Parking Services
    • -
    • Unobus
    • -
    • Volánbusz
    • -
    • Walker Consultants
    • -
    -

    +
    + +
  • Adelaide Metro
  • +
  • Bettendorf Transit
  • +
  • Bi-State Regional Commission
  • +
  • BreizhGo
  • +
  • Cal-ITP
  • +
  • Commerce Municipal Bus Lines
  • +
  • Corpus Christi Regional Transportation Authority
  • +
  • County of Hawai’i Mass Transit Agency
  • +
  • DART Delaware
  • +
  • + Department of Municipalities and Transport, Abu Dhabi, United Arab + Emirates +
  • +
  • Development Bank of Latin America (CAF)
  • +
  • Digital Transport for Africa (DT4A)
  • +
  • ECO Transit
  • +
  • Eismo Info
  • +
  • Entur AS
  • +
  • GTFS.be
  • +
  • Garnet Consultants
  • +
  • Golden Gate Bridge Highway Transit District
  • +
  • High Valley Transit
  • +
  • Kitsap Transit
  • +
  • Kuzzle
  • +
  • Metro Christchurch
  • +
  • Metro de Málaga
  • +
  • Passio Technologies
  • +
  • Pinpoint AVL
  • +
  • Port Phillip Ferries
  • +
  • Redmon Group
  • +
  • Rhode Island Public Transit Authority (RIPTA)
  • +
  • Rhode Island Public Transit Authority (RIPTA)
  • +
  • Rio de Janeiro City Hall
  • +
  • Rochester-Genesee Regional Transportation Authority
  • +
  • Roma Mobilita
  • +
  • SFMTA
  • +
  • SMMAG
  • +
  • San Francisco Municipal Transportation Agency (SFMTA)
  • +
  • San Luis Obispo Regional Transit Authority
  • +
  • Santiago Directorio de Transporte Público Metropolitano
  • +
  • Skedgo
  • +
  • Société nationale des chemins de fer français (SNCF)
  • +
  • Sound Transit
  • +
  • Springfield Mass Transit District (SMTD)
  • +
  • Ticpoi
  • +
  • Transcollines
  • +
  • Transport for Cairo
  • +
  • Two Sigma Data Clinic
  • +
  • UCSC Transporation and Parking Services
  • +
  • Unobus
  • +
  • Volánbusz
  • +
  • Walker Consultants
  • +
    + Individuals:
    If you are listed here and would like to add your organization,{' '} . -
      -
    • @1-Byte on GitHub
    • -
    • Allan Fernando
    • -
    • Eloi Torrents
    • -
    • Florian Maunier
    • -
    • Gábor Kovács
    • -
    • Jessica Rapson
    • -
    • Joop Kiefte
    • -
    • Justin Brooks
    • -
    • Kevin Butler
    • -
    • Kovács Áron
    • -
    • Oliver Hattshire
    • -
    • Saipraneeth Devunuri
    • -
    + +
  • @1-Byte on GitHub
  • +
  • Allan Fernando
  • +
  • Eloi Torrents
  • +
  • Florian Maunier
  • +
  • Gábor Kovács
  • +
  • Jessica Rapson
  • +
  • Joop Kiefte
  • +
  • Justin Brooks
  • +
  • Kevin Butler
  • +
  • Kovács Áron
  • +
  • Oliver Hattshire
  • +
  • Saipraneeth Devunuri
  • +
    diff --git a/web-app/src/app/screens/Feed/PreviousDatasets.tsx b/web-app/src/app/screens/Feed/PreviousDatasets.tsx index befb3988f..50ad7cfa9 100644 --- a/web-app/src/app/screens/Feed/PreviousDatasets.tsx +++ b/web-app/src/app/screens/Feed/PreviousDatasets.tsx @@ -4,6 +4,7 @@ import { Box, Button, Chip, + Table, TableBody, TableCell, TableContainer, @@ -42,11 +43,11 @@ export default function PreviousDatasets({
    {datasets !== undefined && datasets.length > 0 && ( - - + + {datasets.length} Datasets - - + + )} - - {datasets?.map((dataset, index) => ( - - {dataset.downloaded_at != null && ( - - - {index === 0 && Latest: } - {new Date(dataset.downloaded_at).toDateString()} - - - )} - - - - - {(dataset.validation_report === null || - dataset.validation_report === undefined) && ( - - Unable to generate data quality report - + + + {datasets?.map((dataset, index) => ( + + {dataset.downloaded_at != null && ( + + + {index === 0 && Latest: } + {new Date(dataset.downloaded_at).toDateString()} + + )} - {dataset.validation_report !== null && - dataset.validation_report !== undefined && ( - <> - - 0 ? ( - - ) : ( - - ) - } - label={ - dataset?.validation_report?.unique_error_count !== - undefined && - dataset?.validation_report?.unique_error_count > 0 - ? `${dataset?.validation_report?.unique_error_count} errors` - : `No errors` - } - color={ - dataset?.validation_report?.unique_error_count !== - undefined && - dataset?.validation_report?.unique_error_count > 0 - ? 'error' - : 'success' - } - variant='outlined' - /> - - 0 ? ( - - ) : ( - - ) - } - label={ - dataset?.validation_report?.unique_warning_count !== - undefined && - dataset?.validation_report?.unique_warning_count > 0 - ? `${dataset?.validation_report?.unique_warning_count} warnings` - : `No warnings` - } - color={ - dataset?.validation_report?.unique_warning_count !== - undefined && - dataset?.validation_report?.unique_warning_count > 0 - ? 'warning' - : 'success' - } - variant='outlined' - /> - } - label={`${ - dataset?.validation_report?.unique_info_count ?? '0' - } info notices`} - color='primary' - variant='outlined' - /> - - )} - - - {(dataset.validation_report === null || - dataset.validation_report === undefined) && ( + - )} - {dataset.validation_report != null && - dataset.validation_report !== undefined && ( - <> - + )} + {dataset.validation_report != null && + dataset.validation_report !== undefined && ( + <> + - + - - )} - - - ))} - + + JSON Version + + + + )} + + + ))} + +
    diff --git a/web-app/src/app/screens/FeedSubmission/FeedSubmissionStepper.tsx b/web-app/src/app/screens/FeedSubmission/FeedSubmissionStepper.tsx index 0eacc8d9a..b908fcf74 100644 --- a/web-app/src/app/screens/FeedSubmission/FeedSubmissionStepper.tsx +++ b/web-app/src/app/screens/FeedSubmission/FeedSubmissionStepper.tsx @@ -27,13 +27,13 @@ export default function FeedSubmissionStepper(): React.ReactElement { return ( - {steps.map((label) => { + {steps.map((label, index) => { const stepProps: { completed?: boolean } = {}; const labelProps: { optional?: React.ReactNode; } = {}; return ( - + {label} ); diff --git a/web-app/src/app/screens/FeedSubmission/Form/index.tsx b/web-app/src/app/screens/FeedSubmission/Form/index.tsx index 062eee4a4..9137a1989 100644 --- a/web-app/src/app/screens/FeedSubmission/Form/index.tsx +++ b/web-app/src/app/screens/FeedSubmission/Form/index.tsx @@ -111,7 +111,7 @@ export default function FeedSubmissionForm({ ): void => { const finalData = { ...formData, ...partialFormData }; setFormData(finalData); - console.log('FINAL API CALL WITH', finalData); + // console.log('FINAL API CALL WITH', finalData); // TODO: API call with finalData // TODO: loading state of API call // TODO: feed submitted page diff --git a/web-app/src/app/screens/FeedSubmission/index.tsx b/web-app/src/app/screens/FeedSubmission/index.tsx index f274daf0a..f134a3e8c 100644 --- a/web-app/src/app/screens/FeedSubmission/index.tsx +++ b/web-app/src/app/screens/FeedSubmission/index.tsx @@ -1,5 +1,4 @@ import * as React from 'react'; -import { useEffect } from 'react'; import { useSelector } from 'react-redux'; import { Alert, @@ -11,11 +10,7 @@ import { colors, } from '@mui/material'; import CheckIcon from '@mui/icons-material/Check'; -import { - selectIsAnonymous, - selectIsAuthenticated, - selectUserProfile, -} from '../../store/profile-selectors'; +import { selectIsAuthenticated } from '../../store/profile-selectors'; import FeedSubmissionStepper from './FeedSubmissionStepper'; import { useRemoteConfig } from '../../context/RemoteConfigProvider'; import Contribute from '../Contribute'; @@ -28,16 +23,7 @@ function Component(): React.ReactElement { const [showLoginSuccess, setShowLoginSuccess] = React.useState( location.state?.from === 'registration', ); - const user = useSelector(selectUserProfile); const isAuthenticated = useSelector(selectIsAuthenticated); - const isAuthenticatedOrAnonymous = - isAuthenticated || useSelector(selectIsAnonymous); - - useEffect(() => { - if (isAuthenticatedOrAnonymous && user?.accessToken !== undefined) { - console.log('User is authenticated or anonymous'); - } - }, [isAuthenticatedOrAnonymous]); return ( diff --git a/web-app/src/app/screens/FeedSubmissionFAQ.tsx b/web-app/src/app/screens/FeedSubmissionFAQ.tsx index bcc01dc40..a0908c10d 100644 --- a/web-app/src/app/screens/FeedSubmissionFAQ.tsx +++ b/web-app/src/app/screens/FeedSubmissionFAQ.tsx @@ -183,19 +183,19 @@ export default function FeedSubmissionFAQ(): React.ReactElement { information, transit providers should add a new feed on the catalogs when there are major changes to their URL. Examples of changes include: -
      -
    • The feed URL changes
    • -
    • - The feed is combined with several other feeds (for example: - several providers' feeds are combined together) -
    • -
    • - The feed is split from a combined/aggregated feed (for - example: a provider whose GTFS was only available in an - aggregate feed now has their own independent feed) -
    • -
    + +
  • The feed URL changes
  • +
  • + The feed is combined with several other feeds (for example: + several providers' feeds are combined together) +
  • +
  • + The feed is split from a combined/aggregated feed (for example: + a provider whose GTFS was only available in an aggregate feed + now has their own independent feed) +
  • +
    @@ -319,61 +319,61 @@ export default function FeedSubmissionFAQ(): React.ReactElement {

    Organizations: -
      -
    • Adelaide Metro
    • -
    • Bettendorf Transit
    • -
    • Bi-State Regional Commission
    • -
    • BreizhGo
    • -
    • Cal-ITP
    • -
    • Commerce Municipal Bus Lines
    • -
    • Corpus Christi Regional Transportation Authority
    • -
    • County of Hawai'i Mass Transit Agency
    • -
    • DART Delaware
    • -
    • - Department of Municipalities and Transport, Abu Dhabi, United - Arab Emirates -
    • -
    • Development Bank of Latin America (CAF)
    • -
    • Digital Transport for Africa (DT4A)
    • -
    • ECO Transit
    • -
    • Eismo Info
    • -
    • Entur AS
    • -
    • GTFS.be
    • -
    • Garnet Consultants
    • -
    • Golden Gate Bridge Highway Transit District
    • -
    • High Valley Transit
    • -
    • Kitsap Transit
    • -
    • Kuzzle
    • -
    • Metro Christchurch
    • -
    • Metro de Málaga
    • -
    • Passio Technologies
    • -
    • Pinpoint AVL
    • -
    • Port Phillip Ferries
    • -
    • Redmon Group
    • -
    • Rhode Island Public Transit Authority (RIPTA)
    • -
    • Rio de Janeiro City Hall
    • -
    • Rochester-Genesee Regional Transportation Authority
    • -
    • Roma Mobilita
    • -
    • SFMTA
    • -
    • SMMAG
    • -
    • San Francisco Municipal Transportation Agency (SFMTA)
    • -
    • San Luis Obispo Regional Transit Authority
    • -
    • Santiago Directorio de Transporte Público Metropolitano
    • -
    • Skedgo
    • -
    • Société nationale des chemins de fer français (SNCF)
    • -
    • Sound Transit
    • -
    • Springfield Mass Transit District (SMTD)
    • -
    • Ticpoi
    • -
    • Transcollines
    • -
    • Transport for Cairo
    • -
    • Two Sigma Data Clinic
    • -
    • UCSC Transporation and Parking Services
    • -
    • Unobus
    • -
    • Volánbusz
    • -
    • Walker Consultants
    • -
    -
    -
    + + +
  • Adelaide Metro
  • +
  • Bettendorf Transit
  • +
  • Bi-State Regional Commission
  • +
  • BreizhGo
  • +
  • Cal-ITP
  • +
  • Commerce Municipal Bus Lines
  • +
  • Corpus Christi Regional Transportation Authority
  • +
  • County of Hawai'i Mass Transit Agency
  • +
  • DART Delaware
  • +
  • + Department of Municipalities and Transport, Abu Dhabi, United + Arab Emirates +
  • +
  • Development Bank of Latin America (CAF)
  • +
  • Digital Transport for Africa (DT4A)
  • +
  • ECO Transit
  • +
  • Eismo Info
  • +
  • Entur AS
  • +
  • GTFS.be
  • +
  • Garnet Consultants
  • +
  • Golden Gate Bridge Highway Transit District
  • +
  • High Valley Transit
  • +
  • Kitsap Transit
  • +
  • Kuzzle
  • +
  • Metro Christchurch
  • +
  • Metro de Málaga
  • +
  • Passio Technologies
  • +
  • Pinpoint AVL
  • +
  • Port Phillip Ferries
  • +
  • Redmon Group
  • +
  • Rhode Island Public Transit Authority (RIPTA)
  • +
  • Rio de Janeiro City Hall
  • +
  • Rochester-Genesee Regional Transportation Authority
  • +
  • Roma Mobilita
  • +
  • SFMTA
  • +
  • SMMAG
  • +
  • San Francisco Municipal Transportation Agency (SFMTA)
  • +
  • San Luis Obispo Regional Transit Authority
  • +
  • Santiago Directorio de Transporte Público Metropolitano
  • +
  • Skedgo
  • +
  • Société nationale des chemins de fer français (SNCF)
  • +
  • Sound Transit
  • +
  • Springfield Mass Transit District (SMTD)
  • +
  • Ticpoi
  • +
  • Transcollines
  • +
  • Transport for Cairo
  • +
  • Two Sigma Data Clinic
  • +
  • UCSC Transporation and Parking Services
  • +
  • Unobus
  • +
  • Volánbusz
  • +
  • Walker Consultants
  • +
    + Individuals:
    If you are listed here and would like to add your organization,{' '} . -
      -
    • @1-Byte on GitHub
    • -
    • Allan Fernando
    • -
    • Eloi Torrents
    • -
    • Florian Maunier
    • -
    • Gábor Kovács
    • -
    • Jessica Rapson
    • -
    • Joop Kiefte
    • -
    • Justin Brooks
    • -
    • Kevin Butler
    • -
    • Kovács Áron
    • -
    • Oliver Hattshire
    • -
    • Saipraneeth Devunuri
    • -
    + +
  • @1-Byte on GitHub
  • +
  • Allan Fernando
  • +
  • Eloi Torrents
  • +
  • Florian Maunier
  • +
  • Gábor Kovács
  • +
  • Jessica Rapson
  • +
  • Joop Kiefte
  • +
  • Justin Brooks
  • +
  • Kevin Butler
  • +
  • Kovács Áron
  • +
  • Oliver Hattshire
  • +
  • Saipraneeth Devunuri
  • +
    diff --git a/web-app/src/app/screens/Home.tsx b/web-app/src/app/screens/Home.tsx index 153e8c0d1..a26ff10b5 100644 --- a/web-app/src/app/screens/Home.tsx +++ b/web-app/src/app/screens/Home.tsx @@ -4,13 +4,7 @@ import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; import Container from '@mui/material/Container'; import '../styles/SignUp.css'; -import { - Button, - Divider, - Grid, - InputAdornment, - TextField, -} from '@mui/material'; +import { Button, Divider, InputAdornment, TextField } from '@mui/material'; import { Search, CheckCircleOutlineOutlined, @@ -20,6 +14,7 @@ import { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import LegacyHome from './LegacyHome'; import { useRemoteConfig } from '../context/RemoteConfigProvider'; +import AnimatedNumbers from 'react-animated-numbers'; interface ActionBoxProps { IconComponent: React.ElementType; @@ -98,10 +93,45 @@ function Component(): React.ReactElement { - Currently serving over 2000{' '} - transit data feeds from 70{' '} + Currently serving over + ({ + type: 'spring', + duration: 2.3, + stiffness: 20, + })} + animateToNumber={2000} + fontStyle={{ + fontSize: 30, + color: '#3859FA', + }} + /> + transit data feeds from{' '} + ({ + type: 'spring', + duration: 2.3, + stiffness: 20, + })} + animateToNumber={70} + fontStyle={{ + fontSize: 30, + color: '#3859FA', + }} + /> countries. - - - - The Mobility Database is a directory of 2000+ mobility feeds across - the world. It has over 250 updated feeds previously unavailable on - TransitFeeds (OpenMobilityData) and shares data quality reports from{' '} - - the Canonical GTFS Schedule Validator - - . -
    -
    - We’re in the first phase of building a sustainable, central hub for - mobility data internationally. - - + + The Mobility Database is a directory of 2000+ mobility feeds across + the world. It has over 250 updated feeds previously unavailable on + TransitFeeds (OpenMobilityData) and shares data quality reports from{' '} + + the Canonical GTFS Schedule Validator + + . +
    +
    + We’re in the first phase of building a sustainable, central hub for + mobility data internationally. +
    ); diff --git a/web-app/src/app/screens/LegacyHome.tsx b/web-app/src/app/screens/LegacyHome.tsx index d24d8299a..964e28a78 100644 --- a/web-app/src/app/screens/LegacyHome.tsx +++ b/web-app/src/app/screens/LegacyHome.tsx @@ -20,7 +20,7 @@ export default function Home(): React.ReactElement { }} > - + - + { - const latestDataset = selectLatestDatasetsData(state); - if (latestDataset === undefined) return undefined; - return latestDataset.bounding_box?.minimum_latitude !== undefined && - latestDataset.bounding_box?.maximum_latitude !== undefined && - latestDataset.bounding_box?.minimum_longitude !== undefined && - latestDataset.bounding_box?.maximum_longitude !== undefined - ? [ - [ - latestDataset.bounding_box?.minimum_latitude, - latestDataset.bounding_box?.minimum_longitude, - ], - [ - latestDataset.bounding_box?.minimum_latitude, - latestDataset.bounding_box?.maximum_longitude, - ], - [ - latestDataset.bounding_box?.maximum_latitude, - latestDataset.bounding_box?.maximum_longitude, - ], - [ - latestDataset.bounding_box?.maximum_latitude, - latestDataset.bounding_box?.minimum_longitude, - ], - ] - : undefined; -}; +export const selectBoundingBoxFromLatestDataset = createSelector( + [selectLatestDatasetsData], + (latestDataset): LatLngExpression[] | undefined => { + if (latestDataset === undefined) return undefined; + return latestDataset.bounding_box?.minimum_latitude !== undefined && + latestDataset.bounding_box?.maximum_latitude !== undefined && + latestDataset.bounding_box?.minimum_longitude !== undefined && + latestDataset.bounding_box?.maximum_longitude !== undefined + ? [ + [ + latestDataset.bounding_box?.minimum_latitude, + latestDataset.bounding_box?.minimum_longitude, + ], + [ + latestDataset.bounding_box?.minimum_latitude, + latestDataset.bounding_box?.maximum_longitude, + ], + [ + latestDataset.bounding_box?.maximum_latitude, + latestDataset.bounding_box?.maximum_longitude, + ], + [ + latestDataset.bounding_box?.maximum_latitude, + latestDataset.bounding_box?.minimum_longitude, + ], + ] + : undefined; + }, +); diff --git a/web-app/yarn.lock b/web-app/yarn.lock index c9377784d..d6866db2f 100644 --- a/web-app/yarn.lock +++ b/web-app/yarn.lock @@ -1400,6 +1400,13 @@ resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz" integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== +"@emotion/is-prop-valid@^0.8.2": + version "0.8.8" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" + integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== + dependencies: + "@emotion/memoize" "0.7.4" + "@emotion/is-prop-valid@^1.2.1": version "1.2.1" resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz" @@ -1407,6 +1414,11 @@ dependencies: "@emotion/memoize" "^0.8.1" +"@emotion/memoize@0.7.4": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + "@emotion/memoize@^0.8.1": version "0.8.1" resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz" @@ -2733,6 +2745,51 @@ resolved "https://registry.yarnpkg.com/@react-leaflet/core/-/core-2.1.0.tgz#383acd31259d7c9ae8fb1b02d5e18fe613c2a13d" integrity sha512-Qk7Pfu8BSarKGqILj4x7bCSZ1pjuAPZ+qmRwH5S7mDS91VSbVVsJSrW4qA+GPrro8t69gFYVMWb1Zc4yFmPiVg== +"@react-spring/animated@~9.7.4": + version "9.7.4" + resolved "https://registry.yarnpkg.com/@react-spring/animated/-/animated-9.7.4.tgz#c712b2d3dc9312ef41aa8886818b539151bda062" + integrity sha512-7As+8Pty2QlemJ9O5ecsuPKjmO0NKvmVkRR1n6mEotFgWar8FKuQt2xgxz3RTgxcccghpx1YdS1FCdElQNexmQ== + dependencies: + "@react-spring/shared" "~9.7.4" + "@react-spring/types" "~9.7.4" + +"@react-spring/core@~9.7.4": + version "9.7.4" + resolved "https://registry.yarnpkg.com/@react-spring/core/-/core-9.7.4.tgz#0eaa0b5da3d18036d87a571f23079819d45a9f46" + integrity sha512-GzjA44niEJBFUe9jN3zubRDDDP2E4tBlhNlSIkTChiNf9p4ZQlgXBg50qbXfSXHQPHak/ExYxwhipKVsQ/sUTw== + dependencies: + "@react-spring/animated" "~9.7.4" + "@react-spring/shared" "~9.7.4" + "@react-spring/types" "~9.7.4" + +"@react-spring/rafz@~9.7.4": + version "9.7.4" + resolved "https://registry.yarnpkg.com/@react-spring/rafz/-/rafz-9.7.4.tgz#d53aa45a8cb116b81b27ba29e0cc15470ccfd449" + integrity sha512-mqDI6rW0Ca8IdryOMiXRhMtVGiEGLIO89vIOyFQXRIwwIMX30HLya24g9z4olDvFyeDW3+kibiKwtZnA4xhldA== + +"@react-spring/shared@~9.7.4": + version "9.7.4" + resolved "https://registry.yarnpkg.com/@react-spring/shared/-/shared-9.7.4.tgz#8ac57505072c2aee33d77c47c4269347061a3377" + integrity sha512-bEPI7cQp94dOtCFSEYpxvLxj0+xQfB5r9Ru1h8OMycsIq7zFZon1G0sHrBLaLQIWeMCllc4tVDYRTLIRv70C8w== + dependencies: + "@react-spring/rafz" "~9.7.4" + "@react-spring/types" "~9.7.4" + +"@react-spring/types@~9.7.4": + version "9.7.4" + resolved "https://registry.yarnpkg.com/@react-spring/types/-/types-9.7.4.tgz#c849a7f062b5163d078e5e75f28c8f6acf91792e" + integrity sha512-iQVztO09ZVfsletMiY+DpT/JRiBntdsdJ4uqk3UJFhrhS8mIC9ZOZbmfGSRs/kdbNPQkVyzucceDicQ/3Mlj9g== + +"@react-spring/web@^9.4.5": + version "9.7.4" + resolved "https://registry.yarnpkg.com/@react-spring/web/-/web-9.7.4.tgz#0086ab5dcf17e6a8f3d7e7f8041ccb4cc2fa10dc" + integrity sha512-UMvCZp7I5HCVIleSa4BwbNxynqvj+mJjG2m20VO2yPoi2pnCYANy58flvz9v/YcXTAvsmL655FV3pm5fbr6akA== + dependencies: + "@react-spring/animated" "~9.7.4" + "@react-spring/core" "~9.7.4" + "@react-spring/shared" "~9.7.4" + "@react-spring/types" "~9.7.4" + "@redux-saga/core@^1.2.3": version "1.2.3" resolved "https://registry.npmjs.org/@redux-saga/core/-/core-1.2.3.tgz" @@ -7450,6 +7507,15 @@ fraction.js@^4.3.6: resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz" integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== +framer-motion@^10.16.5: + version "10.18.0" + resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-10.18.0.tgz#1f4fc51403996ea7170af885bd44a7079d255950" + integrity sha512-oGlDh1Q1XqYPksuTD/usb0I70hq95OUzmL9+6Zd+Hs4XV0oaISBa/UUMSjYiq6m8EUF32132mOJ8xVZS+I0S6w== + dependencies: + tslib "^2.4.0" + optionalDependencies: + "@emotion/is-prop-valid" "^0.8.2" + fresh@0.5.2: version "0.5.2" resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" @@ -11971,6 +12037,14 @@ re2@^1.17.7: nan "^2.18.0" node-gyp "^10.0.1" +react-animated-numbers@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/react-animated-numbers/-/react-animated-numbers-0.18.0.tgz#276f39a1191c922d39559ba6317d2da892667a5a" + integrity sha512-o/4ho2p5B3FfXpjDpwjYwNq6fTCbHvuQbrHRRJ+SZ3g0+OVssFVIrQBTJ16pVbWXOkjtw61wgCcbJN2VZmuKzg== + dependencies: + "@react-spring/web" "^9.4.5" + framer-motion "^10.16.5" + react-app-polyfill@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz" @@ -13768,6 +13842,11 @@ tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.5.0, tslib@^2.6 resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tslib@^2.4.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz"