diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 110fb6049..78af8a9a8 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -46,7 +46,7 @@ jobs: e2e: runs-on: ubuntu-latest container: - image: cypress/browsers:node14.17.0-chrome91-ff89 + image: cypress/browsers:node16.5.0-chrome94-ff93 options: --user 1001 strategy: matrix: diff --git a/@types/global.d.ts b/@types/global.d.ts index ca5144014..9f10b810c 100644 --- a/@types/global.d.ts +++ b/@types/global.d.ts @@ -23,6 +23,11 @@ declare global { interface Navigator { standalone?: boolean; } - - type ExcludesFalse = (x: T | undefined | void | null | false) => x is T; + type Falsy = false | 0 | '' | null | undefined | void; + interface Array { + filter( + predicate: BooleanConstructor, + thisArg?: any, + ): Exclude[]; + } } diff --git a/@types/maru.d.ts b/@types/maru.d.ts index b6661f905..b8856241b 100644 --- a/@types/maru.d.ts +++ b/@types/maru.d.ts @@ -1,6 +1,15 @@ declare module 'maru' { // eslint-disable-next-line import/no-extraneous-dependencies - import { CSSProperties } from '@material-ui/styles'; + import { SerializedStyles } from '@mui/material'; + + interface Mixins { + cancelled: SerializedStyles; + delayed: SerializedStyles; + changed: SerializedStyles; + additional: SerializedStyles; + early: SerializedStyles; + singleLineText: SerializedStyles; + } interface Theme { colors: { green: string; @@ -11,13 +20,6 @@ declare module 'maru' { shadedBackground: string; transparentBackground: string; }; - mixins: { - cancelled: CSSProperties; - delayed: CSSProperties; - changed: CSSProperties; - additional: CSSProperties; - early: CSSProperties; - singleLineText: CSSProperties; - }; + mixins: Mixins; } } diff --git a/charts/bahnhofsabfahrten/templates/ingress.yaml b/charts/bahnhofsabfahrten/templates/ingress.yaml index c3dcad2fa..709a06900 100644 --- a/charts/bahnhofsabfahrten/templates/ingress.yaml +++ b/charts/bahnhofsabfahrten/templates/ingress.yaml @@ -19,13 +19,17 @@ spec: - hosts: {{ if .Values.hostName }} - {{ .Values.hostName }} + - www.{{ .Values.hostName }} {{ if .Values.docs }} - docs.{{ .Values.hostName }} + - www.docs.{{ .Values.hostName }} {{ end }} {{ else }} - {{ .Release.Name }}.marudor.de + - www.{{ .Release.Name }}.marudor.de {{ if .Values.docs }} - docs.{{ .Release.Name }}.marudor.de + - www.docs.{{ .Release.Name }}.marudor.de {{ end }} {{ end }} secretName: {{ $fullName }} @@ -34,6 +38,20 @@ spec: - host: {{ .Values.hostName }} {{ else }} - host: {{ .Release.Name }}.marudor.de + {{ end }} + http: + paths: + - path: / + pathType: ImplementationSpecific + backend: + service: + name: {{ $fullName }} + port: + name: http + {{ if .Values.hostName }} + - host: www.{{ .Values.hostName }} + {{ else }} + - host: www.{{ .Release.Name }}.marudor.de {{ end }} http: paths: @@ -67,4 +85,27 @@ spec: port: name: http {{ end }} + {{ if .Values.docs }} + {{ if .Values.hostName }} + - host: www.docs.{{ .Values.hostName }} + {{ else }} + - host: www.docs.{{ .Release.Name }}.marudor.de + {{ end }} + http: + paths: + - path: / + pathType: ImplementationSpecific + backend: + service: + name: docs-{{ $fullName }} + port: + number: 80 + - path: /swagger.json + pathType: ImplementationSpecific + backend: + service: + name: {{ $fullName }} + port: + name: http + {{ end }} {{- end }} diff --git a/cypress/integration/abfahrten.test.ts b/cypress/integration/abfahrten.test.ts index d3887ad4f..689abe352 100644 --- a/cypress/integration/abfahrten.test.ts +++ b/cypress/integration/abfahrten.test.ts @@ -69,7 +69,7 @@ describe('Abfahrten', () => { 'text-decoration-line', 'line-through', ); - ['destination', 'platform', 'times'].forEach((id) => { + ['destination', 'platform', 'timeContainer'].forEach((id) => { cy.findByTestId(id).should( 'have.css', 'text-decoration-line', @@ -77,6 +77,6 @@ describe('Abfahrten', () => { ); }); }); - cy.percy('Abfahrten'); + cy.percySnapshot('Abfahrten'); }); }); diff --git a/cypress/integration/abfahrtenSettings.test.ts b/cypress/integration/abfahrtenSettings.test.ts index 1b4307b0b..36f956690 100644 --- a/cypress/integration/abfahrtenSettings.test.ts +++ b/cypress/integration/abfahrtenSettings.test.ts @@ -16,7 +16,7 @@ describe('Abfahrten Settings', () => { cy.findByTestId('abfahrtS35744').within(() => { cy.findByTestId('abfahrtStart').should('have.text', 'S 7S 35744'); }); - cy.percy('Zugnummer & Linie'); + cy.percySnapshot('Zugnummer & Linie'); }); it('Show fahrzeuggruppe', () => { @@ -37,7 +37,7 @@ describe('Abfahrten Settings', () => { cy.findByTestId('fahrzeugGruppeConfig').click(); cy.closeModal(); cy.findByTestId('reihungFahrzeugGruppe').should('exist'); - cy.percy('Fahrzeuggruppe'); + cy.percySnapshot('Fahrzeuggruppe'); }); it('Show uic', () => { @@ -58,7 +58,12 @@ describe('Abfahrten Settings', () => { cy.findByTestId('showUIC').click(); cy.closeModal(); cy.findAllByTestId('uic').should('exist'); - cy.percy('UIC'); + cy.findByTestId('via-Berlin Ostbahnhof').should( + 'have.css', + 'text-decoration-line', + 'line-through', + ); + cy.percySnapshot('UIC'); }); }); diff --git a/cypress/integration/details.test.ts b/cypress/integration/details.test.ts index 2bab3fe82..820aa0bf4 100644 --- a/cypress/integration/details.test.ts +++ b/cypress/integration/details.test.ts @@ -15,6 +15,6 @@ describe('Details', () => { cy.visit('/details/S30665'); cy.wait('@details'); cy.findByTestId('header').should('have.css', 'height', '54px'); - cy.percy('details'); + cy.percySnapshot('details'); }); }); diff --git a/cypress/integration/regional.test.ts b/cypress/integration/regional.test.ts index 1eb13aff7..c7b344c00 100644 --- a/cypress/integration/regional.test.ts +++ b/cypress/integration/regional.test.ts @@ -13,7 +13,7 @@ describe('Regional', () => { url: '/api/hafas/experimental/irisCompatibleAbfahrten/0723869?*', query: { lookahead: '150', - lookbehind: '0', + lookbehind: '10', }, }, { fixture: 'regional/departurePostStrasse' }, @@ -55,7 +55,7 @@ describe('Regional', () => { url: '/api/hafas/experimental/irisCompatibleAbfahrten/0369218?*', query: { lookahead: '150', - lookbehind: '0', + lookbehind: '10', }, }, { fixture: 'regional/departureArndtSpittastrasse' }, diff --git a/cypress/integration/routing/routing.test.ts b/cypress/integration/routing/routing.test.ts index dba534c30..686201085 100644 --- a/cypress/integration/routing/routing.test.ts +++ b/cypress/integration/routing/routing.test.ts @@ -85,9 +85,7 @@ describe('Routing', () => { searchInput('routingStartSearch', 'Frankfurt(Main)Hbf'); searchInput('routingDestinationSearch', ''); searchInput('addVia', ''); - cy.findByTestId('routingDatePicker') - .find('input') - .should('contain.value', 'Jetzt'); + cy.findByTestId('routingDatePicker').should('contain.value', 'Jetzt'); }); it('with start & destination', () => { @@ -95,9 +93,7 @@ describe('Routing', () => { searchInput('routingStartSearch', 'Frankfurt(Main)Hbf'); searchInput('routingDestinationSearch', 'Hamburg Hbf'); searchInput('addVia', ''); - cy.findByTestId('routingDatePicker') - .find('input') - .should('contain.value', 'Jetzt'); + cy.findByTestId('routingDatePicker').should('contain.value', 'Jetzt'); }); it('with start, destination & time', () => { @@ -105,9 +101,10 @@ describe('Routing', () => { searchInput('routingStartSearch', 'Frankfurt(Main)Hbf'); searchInput('routingDestinationSearch', 'Hamburg Hbf'); searchInput('addVia', ''); - cy.findByTestId('routingDatePicker') - .find('input') - .should('contain.value', 'Dienstag 17.11.2020 10:00'); + cy.findByTestId('routingDatePicker').should( + 'contain.value', + 'Dienstag 17.11.2020 10:00', + ); }); it('with start, destination, time & 1 via', () => { @@ -116,9 +113,10 @@ describe('Routing', () => { searchInput('routingDestinationSearch', 'Hamburg Hbf'); searchInput('via0', 'Mannheim Hbf'); searchInput('addVia', ''); - cy.findByTestId('routingDatePicker') - .find('input') - .should('contain.value', 'Dienstag 17.11.2020 10:00'); + cy.findByTestId('routingDatePicker').should( + 'contain.value', + 'Dienstag 17.11.2020 10:00', + ); }); it('with start, destination, time & 2 via', () => { @@ -130,9 +128,10 @@ describe('Routing', () => { searchInput('via0', 'Mannheim Hbf'); searchInput('via1', 'Frankfurt(Main)Hbf'); cy.findByTestId('addVia').should('not.exist'); - cy.findByTestId('routingDatePicker') - .find('input') - .should('contain.value', 'Dienstag 17.11.2020 10:00'); + cy.findByTestId('routingDatePicker').should( + 'contain.value', + 'Dienstag 17.11.2020 10:00', + ); }); }); }); diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts index 5d2147805..f3d8d1e9b 100644 --- a/cypress/support/commands.ts +++ b/cypress/support/commands.ts @@ -26,15 +26,12 @@ Cypress.Commands.add('theme', (type: 'dark' | 'light' | 'black') => { cy.findByTestId('navToggle').click(); cy.findByTestId('themes').click(); cy.findByTestId('themeList').find(`[data-value="${type}"]`).click(); + cy.reload(); }); Cypress.Commands.add('closeModal', () => { - cy.get('.MuiBackdrop-root').click({ force: true }); -}); - -Cypress.Commands.add('percy', (name: string) => { - cy.theme('dark'); - cy.percySnapshot(name); + cy.get('body').type('{esc}'); + cy.get('.MuiBackdrop-root').should('not.exist'); }); function mockStopPlace({ @@ -76,7 +73,7 @@ function mockStopPlace({ Cypress.Commands.add( 'mockFrankfurt', - ({ lookbehind = 0, lookahead = 150, delay = 0 } = {}) => { + ({ lookbehind = 10, lookahead = 150, delay = 0 } = {}) => { mockStopPlace({ lookahead, lookbehind, @@ -90,7 +87,7 @@ Cypress.Commands.add( Cypress.Commands.add( 'mockHamburg', - ({ lookbehind = 0, lookahead = 150, delay = 0 } = {}) => { + ({ lookbehind = 10, lookahead = 150, delay = 0 } = {}) => { mockStopPlace({ lookahead, lookbehind, @@ -104,7 +101,7 @@ Cypress.Commands.add( Cypress.Commands.add( 'mockHannover', - ({ lookbehind = 0, lookahead = 150, delay = 0 } = {}) => { + ({ lookbehind = 10, lookahead = 150, delay = 0 } = {}) => { mockStopPlace({ lookahead, lookbehind, diff --git a/cypress/support/index.d.ts b/cypress/support/index.d.ts index 22c4844d6..76f0c0456 100644 --- a/cypress/support/index.d.ts +++ b/cypress/support/index.d.ts @@ -25,7 +25,6 @@ declare global { mockHannover(options?: MockOptions): void; openSettings(): void; force404(): void; - percy(name: string): void; theme(type: 'dark' | 'light' | 'black'): void; } } diff --git a/cypress/support/index.ts b/cypress/support/index.ts index 2f785c259..a5bff62ca 100644 --- a/cypress/support/index.ts +++ b/cypress/support/index.ts @@ -3,6 +3,7 @@ import '@percy/cypress'; beforeEach(() => { cy.force404(); + cy.setCookie('theme', 'dark'); }); Cypress.Server.defaults({ diff --git a/package.json b/package.json index 954f8430e..869cd4074 100644 --- a/package.json +++ b/package.json @@ -84,6 +84,8 @@ "@commitlint/cli": "^15.0.0", "@commitlint/config-conventional": "^15.0.0", "@cypress/webpack-preprocessor": "^5.10.0", + "@emotion/babel-plugin": "^11.3.0", + "@emotion/jest": "^11.7.1", "@loadable/babel-plugin": "^5.13.2", "@loadable/webpack-plugin": "^5.15.1", "@percy/cli": "^1.0.0-beta.71", @@ -126,6 +128,7 @@ "style-loader": "^3.3.1", "terser-webpack-plugin": "^5.2.5", "typescript": "4.5.3", + "typescript-styled-plugin": "^0.18.2", "url-loader": "^4.1.1", "wait-for": "^2.1.1", "webpack": "^5.65.0", diff --git a/packages/client/Abfahrten/Components/Abfahrt/BaseAbfahrt.tsx b/packages/client/Abfahrten/Components/Abfahrt/BaseAbfahrt.tsx index 40993b1a6..f002ef6ec 100644 --- a/packages/client/Abfahrten/Components/Abfahrt/BaseAbfahrt.tsx +++ b/packages/client/Abfahrten/Components/Abfahrt/BaseAbfahrt.tsx @@ -1,12 +1,12 @@ import { createContext, memo, useCallback, useContext, useMemo } from 'react'; +import { css } from '@emotion/react'; import { End } from './End'; -import { makeStyles } from '@material-ui/core'; import { Mid } from './Mid'; +import { Paper } from '@mui/material'; import { Start } from './Start'; import { useSetSelectedDetail } from 'client/Abfahrten/provider/SelectedDetailProvider'; -import clsx from 'clsx'; import loadable from '@loadable/component'; -import Paper from '@material-ui/core/Paper'; +import styled from '@emotion/styled'; import type { Abfahrt } from 'types/iris'; const LazyReihung = loadable(() => import('client/Common/Components/Reihung')); @@ -21,61 +21,64 @@ export const AbfahrtContext = createContext(); export const useAbfahrt = (): AbfahrtContextValues => useContext(AbfahrtContext); -const wingStartEnd = (color: string) => ({ - content: '""', - borderLeft: `1em solid ${color}`, - position: 'absolute', - height: '1px', -}); +const wingStartEnd = (color: string) => + css({ + content: '" "', + borderLeft: `1em solid ${color}`, + position: 'absolute', + height: '1px', + }); -const useStyles = makeStyles((theme) => ({ - wing: { +const Container = styled(Paper)` + line-height: 1.2; + flex-shrink: 0; + margin-top: 0.3em; + overflow: visible; + padding: 0 0.5em; + position: relative; +`; + +const WingIndicator = styled.span<{ wingEnd?: boolean; wingStart?: boolean }>( + ({ wingEnd, wingStart, theme }) => ({ position: 'absolute', borderLeft: `1px solid ${theme.palette.text.primary}`, - content: ' ', + content: '" "', left: '.3em', - top: '-1em', - bottom: 0, - }, - wingStart: { - top: 0, - '&::before': wingStartEnd(theme.palette.text.primary), - }, - wingEnd: { - bottom: '.3em', - '&::after': { - ...wingStartEnd(theme.palette.text.primary), - bottom: 0, - }, - }, - wrap: { - lineHeight: 1.2, - flexShrink: 0, - marginTop: '.3em', - overflow: 'visible', - padding: '0 .5em', - position: 'relative', - }, - entry: { - overflow: 'hidden', - display: 'flex', - flexDirection: 'column', - flexShrink: 0, - fontSize: '.6em', - userSelect: 'none', - [theme.breakpoints.down('md')]: { - fontSize: '.36em', - }, - }, - mainWrap: { - display: 'flex', - }, - scrollMarker: { - position: 'absolute', - top: -64, + top: wingStart ? 0 : '-1em', + bottom: wingEnd ? '.3em' : 0, + '&::before': wingStart + ? wingStartEnd(theme.palette.text.primary) + : undefined, + '&::after': wingEnd + ? css` + ${wingStartEnd(theme.palette.text.primary)}; + bottom: 0; + ` + : undefined, + }), +); + +const Entry = styled.div(({ theme }) => ({ + overflow: 'hidden', + display: 'flex', + flexDirection: 'column', + flexShrink: 0, + fontSize: '.6em', + userSelect: 'none', + [theme.breakpoints.down('md')]: { + fontSize: '.36em', }, })); +const MainWrap = styled.div` + display: flex; +`; + +const ScrollMarker = styled.div` + position: absolute; + top: -64px; +`; + export interface Props { abfahrt: Abfahrt; detail: boolean; @@ -92,7 +95,6 @@ export const BaseAbfahrt = memo(function BaseAbfahrt({ wingStart, detail, }: Props) { - const classes = useStyles(); const wingNumbersWithoutSelf = wingNumbers?.filter( (wn) => wn !== abfahrt.train.number, ); @@ -110,29 +112,18 @@ export const BaseAbfahrt = memo(function BaseAbfahrt({ return ( - + {wingNumbers && ( - + )} -
-
+ -
+ {detail && abfahrt.departure && ( )} {detail && ( -
)} -
- + + ); }); diff --git a/packages/client/Abfahrten/Components/Abfahrt/End.tsx b/packages/client/Abfahrten/Components/Abfahrt/End.tsx index f7c6ca1d4..42664389c 100644 --- a/packages/client/Abfahrten/Components/Abfahrt/End.tsx +++ b/packages/client/Abfahrten/Components/Abfahrt/End.tsx @@ -1,31 +1,28 @@ -import { makeStyles } from '@material-ui/core'; import { Platform } from 'client/Common/Components/Platform'; import { Times } from './Times'; import { useAbfahrt } from 'client/Abfahrten/Components/Abfahrt/BaseAbfahrt'; +import styled from '@emotion/styled'; import type { FC } from 'react'; -const useStyles = makeStyles({ - wrap: { - fontSize: '2.5em', - alignItems: 'flex-end', - display: 'flex', - flexDirection: 'column', - justifyContent: 'space-between', - marginLeft: '1em', - }, -}); +const Container = styled.div` + font-size: 2.5em; + align-items: flex-end; + display: flex; + flex-direction: column; + justify-content: space-between; + margin-left: 1em; +`; export const End: FC = () => { - const classes = useStyles(); const { abfahrt } = useAbfahrt(); return ( -
+ -
+ ); }; diff --git a/packages/client/Abfahrten/Components/Abfahrt/Info.tsx b/packages/client/Abfahrten/Components/Abfahrt/Info.tsx index 3bbac30d3..b1a1e5956 100644 --- a/packages/client/Abfahrten/Components/Abfahrt/Info.tsx +++ b/packages/client/Abfahrten/Components/Abfahrt/Info.tsx @@ -1,27 +1,20 @@ import { DetailMessages } from 'client/Common/Components/Messages/Detail'; import { DetailVia } from './Via/Detail'; -import { makeStyles } from '@material-ui/core'; import { NormalMessages } from 'client/Common/Components/Messages/Normal'; import { NormalVia } from './Via/Normal'; import { useAbfahrt } from 'client/Abfahrten/Components/Abfahrt/BaseAbfahrt'; import { useMemo } from 'react'; -import clsx from 'clsx'; +import styled from '@emotion/styled'; import type { FC } from 'react'; -const useStyles = makeStyles({ - wrap: { - fontSize: '2.1em', - overflow: 'hidden', - textOverflow: 'ellipsis', - }, - noDetail: { - whiteSpace: 'nowrap', - }, -}); +const Container = styled.div` + font-size: 2.1em; + overflow: hidden; + text-overflow: ellipsis; +`; export const Info: FC = () => { const { abfahrt, detail } = useAbfahrt(); - const classes = useStyles(); const messages = useMemo(() => { const messages = abfahrt.messages.delay .concat(abfahrt.messages.qos) @@ -42,9 +35,9 @@ export const Info: FC = () => { if (!info && !via) return null; return ( -
+ {info} {via} -
+ ); }; diff --git a/packages/client/Abfahrten/Components/Abfahrt/Mid.tsx b/packages/client/Abfahrten/Components/Abfahrt/Mid.tsx index f0dc2a1ee..ba9197321 100644 --- a/packages/client/Abfahrten/Components/Abfahrt/Mid.tsx +++ b/packages/client/Abfahrten/Components/Abfahrt/Mid.tsx @@ -1,49 +1,45 @@ import { Info } from './Info'; -import { makeStyles } from '@material-ui/core'; import { useAbfahrt } from 'client/Abfahrten/Components/Abfahrt/BaseAbfahrt'; -import clsx from 'clsx'; +import styled from '@emotion/styled'; import type { FC } from 'react'; -const useStyles = makeStyles((theme) => ({ - destination: { +const Wrapper = styled.div<{ detail: boolean }>(({ detail }) => ({ + display: 'flex', + flexDirection: 'column', + flex: 1, + justifyContent: 'space-around', + overflow: 'hidden', + whiteSpace: !detail ? 'nowrap' : undefined, +})); + +const Destination = styled.div<{ + cancelled?: boolean; + different?: boolean; +}>( + { fontSize: '4em', overflow: 'hidden', textOverflow: 'ellipsis', }, - cancelled: theme.mixins.cancelled, - different: theme.mixins.changed, - wrap: { - display: 'flex', - flexDirection: 'column', - flex: 1, - justifyContent: 'space-around', - overflow: 'hidden', - }, - noDetail: { - whiteSpace: 'nowrap', - }, -})); + ({ theme, cancelled }) => cancelled && theme.mixins.cancelled, + ({ theme, different }) => different && theme.mixins.changed, +); export const Mid: FC = () => { const { abfahrt, detail } = useAbfahrt(); - const classes = useStyles(); return ( -
+ -
{abfahrt.cancelled ? abfahrt.scheduledDestination : abfahrt.destination} -
-
+ + ); }; diff --git a/packages/client/Abfahrten/Components/Abfahrt/Name.tsx b/packages/client/Abfahrten/Components/Abfahrt/Name.tsx index 49efabd53..9551b9e51 100644 --- a/packages/client/Abfahrten/Components/Abfahrt/Name.tsx +++ b/packages/client/Abfahrten/Components/Abfahrt/Name.tsx @@ -1,18 +1,15 @@ -import { makeStyles } from '@material-ui/core'; import { useAbfahrt } from 'client/Abfahrten/Components/Abfahrt/BaseAbfahrt'; import { useAbfahrtenConfig } from 'client/Abfahrten/provider/AbfahrtenConfigProvider'; +import styled from '@emotion/styled'; import type { FC } from 'react'; -const useStyles = makeStyles((theme) => ({ - extra: { - fontSize: '.8em', - color: theme.palette.text.secondary, - }, +const Extra = styled.span(({ theme }) => ({ + fontSize: '.8em', + color: theme.palette.text.secondary, })); interface Props {} export const Name: FC = () => { - const classes = useStyles(); const { lineAndNumber } = useAbfahrtenConfig(); const { abfahrt } = useAbfahrt(); @@ -20,11 +17,11 @@ export const Name: FC = () => { <> {abfahrt.train.name} {lineAndNumber && abfahrt.train.line && ( - + {abfahrt.train.longDistance ? `Linie ${abfahrt.train.line}` : `${abfahrt.train.type} ${abfahrt.train.number}`} - + )} ); diff --git a/packages/client/Abfahrten/Components/Abfahrt/Start.tsx b/packages/client/Abfahrten/Components/Abfahrt/Start.tsx index e2466a3d7..63e2dd85b 100644 --- a/packages/client/Abfahrten/Components/Abfahrt/Start.tsx +++ b/packages/client/Abfahrten/Components/Abfahrt/Start.tsx @@ -1,40 +1,39 @@ import { Auslastung } from 'client/Abfahrten/Components/Abfahrt/Auslastung'; import { DetailsLink } from 'client/Common/Components/Details/DetailsLink'; -import { makeStyles } from '@material-ui/core'; import { Name } from 'client/Abfahrten/Components/Abfahrt/Name'; import { Substitute } from './Substitute'; import { TravelynxLink } from 'client/Common/Components/CheckInLink/TravelynxLink'; import { useAbfahrt } from 'client/Abfahrten/Components/Abfahrt/BaseAbfahrt'; import { useAbfahrtenUrlPrefix } from 'client/Abfahrten/provider/AbfahrtenConfigProvider'; +import styled from '@emotion/styled'; import type { FC } from 'react'; -const useStyles = makeStyles((theme) => ({ - wrap: { - flex: 1, - fontSize: '3em', - maxWidth: '5em', - display: 'flex', - flexDirection: 'column', - }, - links: { - fontSize: '.6em', - display: 'flex', - flexDirection: 'column', - alignItems: 'flex-start', - }, - cancelled: theme.mixins.changed, -})); +const Container = styled.div` + flex: 1; + font-size: 3em; + max-width: 5em; + display: flex; + flex-direction: column; +`; + +const Zugausfall = styled.span(({ theme }) => theme.mixins.changed); + +const Links = styled.div` + font-size: 0.6em; + display: flex; + flex-direction: column; + align-items: flex-start; +`; export const Start: FC = () => { - const classes = useStyles(); const urlPrefix = useAbfahrtenUrlPrefix(); const { abfahrt, detail } = useAbfahrt(); return ( -
+ {detail && ( -
+ { evaNumber={abfahrt.currentStopPlace.evaNumber} initialDeparture={abfahrt.initialDeparture} /> -
+ )} {abfahrt.cancelled && ( - - Zugausfall - + Zugausfall )} {abfahrt.substitute && abfahrt.ref && ( )} {detail && } -
+ ); }; diff --git a/packages/client/Abfahrten/Components/Abfahrt/Substitute.tsx b/packages/client/Abfahrten/Components/Abfahrt/Substitute.tsx index 338cb75a5..0bc646a20 100644 --- a/packages/client/Abfahrten/Components/Abfahrt/Substitute.tsx +++ b/packages/client/Abfahrten/Components/Abfahrt/Substitute.tsx @@ -1,23 +1,19 @@ -import { makeStyles } from '@material-ui/core'; +import styled from '@emotion/styled'; import type { FC } from 'react'; import type { SubstituteRef } from 'types/iris'; -const useStyles = makeStyles({ - text: { - fontSize: '.7em', - }, -}); - +const Text = styled.span` + font-size: 0.7em; +`; interface Props { substitute: SubstituteRef; } export const Substitute: FC = ({ substitute }) => { - const classes = useStyles(); return ( <> - Ersatzzug für - {substitute.train} + Ersatzzug für + {substitute.train} ); }; diff --git a/packages/client/Abfahrten/Components/Abfahrt/Times.tsx b/packages/client/Abfahrten/Components/Abfahrt/Times.tsx index debfd9ca3..e5290c892 100644 --- a/packages/client/Abfahrten/Components/Abfahrt/Times.tsx +++ b/packages/client/Abfahrten/Components/Abfahrt/Times.tsx @@ -1,60 +1,66 @@ /* eslint no-nested-ternary: 0 */ -import { makeStyles } from '@material-ui/core'; import { Time } from 'client/Common/Components/Time'; import { useAbfahrt } from 'client/Abfahrten/Components/Abfahrt/BaseAbfahrt'; -import clsx from 'clsx'; +import styled from '@emotion/styled'; import type { FC } from 'react'; -const useStyles = makeStyles((theme) => ({ - cancelled: theme.mixins.cancelled, - timeWrapper: { +const TimeContainer = styled.div<{ cancelled?: boolean }>( + ({ theme }) => ({ display: 'flex', justifyContent: 'flex-end', '& > span': { color: theme.palette.text.primary, whiteSpace: 'pre-wrap', }, - }, -})); + }), + ({ theme, cancelled }) => cancelled && theme.mixins.cancelled, +); export const Times: FC = () => { - const classes = useStyles(); const { abfahrt: { cancelled, arrival, departure }, detail, } = useAbfahrt(); return ( -
+
{detail ? ( <> {arrival && ( -
{'An: '}
+ )} {departure && ( -
{'Ab: '}
+ )} ) : departure && (!departure.cancelled || cancelled) ? ( -
); diff --git a/packages/client/Abfahrten/Components/Abfahrt/Via/Detail.tsx b/packages/client/Abfahrten/Components/Abfahrt/Via/Detail.tsx index f7835c09e..aa079371c 100644 --- a/packages/client/Abfahrten/Components/Abfahrt/Via/Detail.tsx +++ b/packages/client/Abfahrten/Components/Abfahrt/Via/Detail.tsx @@ -1,17 +1,15 @@ -import { isHbf } from 'client/Abfahrten/Components/Abfahrt/Via'; import { StationLink } from 'client/Common/Components/StationLink'; +import { StyledViaStop } from './Normal'; import { useAbfahrtenUrlPrefix } from 'client/Abfahrten/provider/AbfahrtenConfigProvider'; import { useMemo } from 'react'; -import { useStyles } from './Normal'; -import clsx from 'clsx'; import type { FC, ReactNode } from 'react'; import type { Stop } from 'types/iris'; +const StyledStationLink = StyledViaStop.withComponent(StationLink); interface Props { stops: Stop[]; } export const DetailVia: FC = ({ stops }) => { - const classes = useStyles(); const urlPrefix = useAbfahrtenUrlPrefix(); const stopsToRender = useMemo(() => { @@ -19,12 +17,8 @@ export const DetailVia: FC = ({ stops }) => { stops.forEach((s, i) => { stopsToRender.push( - = ({ stops }) => { }); return stopsToRender; - }, [classes, stops, urlPrefix]); + }, [stops, urlPrefix]); return <>{stopsToRender}; }; diff --git a/packages/client/Abfahrten/Components/Abfahrt/Via/Normal.tsx b/packages/client/Abfahrten/Components/Abfahrt/Via/Normal.tsx index 734306649..33f8b9c65 100644 --- a/packages/client/Abfahrten/Components/Abfahrt/Via/Normal.tsx +++ b/packages/client/Abfahrten/Components/Abfahrt/Via/Normal.tsx @@ -1,46 +1,36 @@ +import { css } from '@emotion/react'; import { isHbf } from './index'; -import { makeStyles } from '@material-ui/core'; import { useMemo } from 'react'; -import clsx from 'clsx'; +import styled from '@emotion/styled'; import type { FC, ReactNode } from 'react'; import type { Stop } from 'types/iris'; -export const useStyles = makeStyles((theme) => ({ - main: { - color: theme.palette.text.primary, - }, - hbf: { +export const StyledViaStop = styled.span<{ stop: Stop }>(({ theme, stop }) => ({ + color: theme.palette.text.primary, + ...(isHbf(stop) && { fontWeight: 'bold', - }, - cancelled: { - ...theme.mixins.cancelled, - ...theme.mixins.changed, - }, - additional: theme.mixins.additional, + }), + ...(stop.cancelled && + css` + ${theme.mixins.cancelled}; + ${theme.mixins.changed}; + `), + ...(stop.additional && theme.mixins.additional), })); interface Props { stops: Stop[]; } export const NormalVia: FC = ({ stops }) => { - const classes = useStyles(); const stopsToRender = useMemo(() => { const stopsToRender: ReactNode[] = []; const filteredStops = stops.filter((s) => s.showVia); filteredStops.forEach((s, i) => { stopsToRender.push( - + {s.name} - , + , ); if (i + 1 !== filteredStops.length) { stopsToRender.push(' - '); @@ -48,7 +38,7 @@ export const NormalVia: FC = ({ stops }) => { }); return stopsToRender; - }, [stops, classes]); + }, [stops]); return <>{stopsToRender}; }; diff --git a/packages/client/Abfahrten/Components/Abfahrt/Via/__tests__/Normal.test.tsx b/packages/client/Abfahrten/Components/Abfahrt/Via/__tests__/Normal.test.tsx index 52191345a..c33bce8ee 100644 --- a/packages/client/Abfahrten/Components/Abfahrt/Via/__tests__/Normal.test.tsx +++ b/packages/client/Abfahrten/Components/Abfahrt/Via/__tests__/Normal.test.tsx @@ -42,8 +42,13 @@ describe('NormalVia', () => { expect(hbf).not.toHaveAttribute('href', 'hbf'); expect(hbf).toHaveStyle('font-weight: bold'); expect(hbf).toMatchInlineSnapshot(` + .emotion-0 { + color: #fff; + font-weight: bold; + } + hbf diff --git a/packages/client/Abfahrten/Components/AbfahrtenList.tsx b/packages/client/Abfahrten/Components/AbfahrtenList.tsx index 9e6dc1e4c..b6140da2a 100644 --- a/packages/client/Abfahrten/Components/AbfahrtenList.tsx +++ b/packages/client/Abfahrten/Components/AbfahrtenList.tsx @@ -1,6 +1,5 @@ import { Abfahrt } from './Abfahrt'; import { Loading } from 'client/Common/Components/Loading'; -import { makeStyles } from '@material-ui/core'; import { Navigate, useParams } from 'react-router'; import { SelectedDetailProvider, @@ -23,27 +22,27 @@ import { import { useEffect, useState } from 'react'; import { useHeaderTagsActions } from 'client/Common/provider/HeaderTagProvider'; import { useSequencesActions } from 'client/Common/provider/ReihungenProvider'; +import styled from '@emotion/styled'; import type { FC } from 'react'; -const useStyles = makeStyles((theme) => ({ - wrap: { - display: 'flex', - flexDirection: 'column', - }, - lookbehind: { - position: 'relative', - paddingTop: 10, - backgroundColor: theme.colors.shadedBackground, - }, - lookaheadMarker: { - height: 154, - position: 'absolute', - bottom: 0, - }, +const LookaheadMarker = styled.div` + height: 154px; + position: absolute; + bottom: 0; +`; + +const Lookbehind = styled.div(({ theme }) => ({ + position: 'relative', + paddingTop: 10, + backgroundColor: theme.colors.shadedBackground, })); +const Container = styled.main` + display: flex; + flex-direction: column; +`; + const InnerAbfahrtenList = () => { - const classes = useStyles(); const { updateCurrentStopPlaceByString, setCurrentStopPlace, setError } = useRawAbfahrten(); const currentStopPlace = useCurrentAbfahrtenStopPlace(); @@ -145,7 +144,7 @@ const InnerAbfahrtenList = () => { return ( -
+ {error ? ( ) : filteredAbfahrten && @@ -154,16 +153,12 @@ const InnerAbfahrtenList = () => { <> {unfilteredAbfahrten?.strike && } {Boolean(filteredAbfahrten.lookbehind.length) && ( -
+ {filteredAbfahrten.lookbehind.map((a) => ( ))} -
-
+ +
)}
{filteredAbfahrten.departures.map((a) => ( @@ -174,7 +169,7 @@ const InnerAbfahrtenList = () => { ) : (
Leider keine Abfahrten in nächster Zeit
)} -
+
); }; diff --git a/packages/client/Abfahrten/Components/ExtraMenu.tsx b/packages/client/Abfahrten/Components/ExtraMenu.tsx index dc23573f3..9a71c2c0f 100644 --- a/packages/client/Abfahrten/Components/ExtraMenu.tsx +++ b/packages/client/Abfahrten/Components/ExtraMenu.tsx @@ -1,14 +1,14 @@ import { + Favorite, + FavoriteBorder, FilterList, Layers, LayersClear, Settings, - Star, - StarBorder, Tune, -} from '@material-ui/icons'; +} from '@mui/icons-material'; import { FilterModal } from './FilterModal'; -import { IconButton, Menu, MenuItem } from '@material-ui/core'; +import { IconButton, Menu, MenuItem } from '@mui/material'; import { useAbfahrtenModalToggle } from 'client/Abfahrten/provider/AbfahrtenConfigProvider'; import { useCallback, useState } from 'react'; import { useCurrentAbfahrtenStopPlace } from 'client/Abfahrten/provider/AbfahrtenProvider'; @@ -79,11 +79,11 @@ export const ExtraMenu: FC = () => { {isFaved ? ( <> - Unfav + Unfav ) : ( <> - Fav + Fav )} , diff --git a/packages/client/Abfahrten/Components/FavEntry.tsx b/packages/client/Abfahrten/Components/FavEntry.tsx index 44cc20a4b..149bed948 100644 --- a/packages/client/Abfahrten/Components/FavEntry.tsx +++ b/packages/client/Abfahrten/Components/FavEntry.tsx @@ -1,43 +1,43 @@ -import { Delete } from '@material-ui/icons'; -import { IconButton, makeStyles, Paper } from '@material-ui/core'; +import { Delete } from '@mui/icons-material'; +import { IconButton, Paper } from '@mui/material'; import { Link } from 'react-router-dom'; import { useAbfahrtenUrlPrefix } from 'client/Abfahrten/provider/AbfahrtenConfigProvider'; import { useCallback } from 'react'; import { useUnfav } from 'client/Abfahrten/provider/FavProvider'; -import clsx from 'clsx'; +import styled from '@emotion/styled'; import type { FC, MouseEvent, ReactNode } from 'react'; import type { MinimalStopPlace } from 'types/stopPlace'; -const useStyles = makeStyles((theme) => ({ - wrap: { - minHeight: 48, - marginBottom: 1, - flexShrink: 0, - fontSize: '1.6em', - padding: '0 .5em', - color: theme.palette.text.primary, - display: 'flex', - alignItems: 'center', - [theme.breakpoints.up('sm')]: { - fontSize: '2rem', - }, - '&>a': { - color: theme.palette.text.primary, - }, - wordBreak: 'break-word', +const BasePaper = styled(Paper)(({ theme }) => ({ + minHeight: 48, + marginBottom: 1, + flexShrink: 0, + fontSize: '1.6em', + padding: '0 .5em', + color: theme.palette.text.primary, + display: 'flex', + alignItems: 'center', + [theme.breakpoints.up('sm')]: { + fontSize: '2rem', }, - clickable: { - '&:hover': { - backgroundColor: theme.palette.action.hover, - }, - justifyContent: 'space-between', + '&>a': { + color: theme.palette.text.primary, }, - unClickable: { - fontWeight: 600, - justifyContent: 'center', + wordBreak: 'break-word', +})); + +const ClickablePaper = styled(BasePaper)(({ theme }) => ({ + '&:hover': { + backgroundColor: theme.palette.action.hover, }, + justifyContent: 'space-between', })); +const UnclickablePaper = styled(BasePaper)` + font-weight: 600; + justify-content: center; +`; + interface Props { fav: MinimalStopPlace; noDelete?: boolean; @@ -48,24 +48,17 @@ interface FavEntryDisplayProps { deleteFav?: (e: MouseEvent) => void; text: ReactNode; 'data-testid'?: string; - clickable?: boolean; + nonClickable?: boolean; } export const FavEntryDisplay: FC = ({ deleteFav, text, - clickable = true, + nonClickable, 'data-testid': testid, }) => { - const classes = useStyles(); + const PaperWrap = nonClickable ? UnclickablePaper : ClickablePaper; return ( - + {text} {deleteFav && ( = ({ )} - + ); }; diff --git a/packages/client/Abfahrten/Components/FavList.tsx b/packages/client/Abfahrten/Components/FavList.tsx index 3dff4c085..b5c2de2d7 100644 --- a/packages/client/Abfahrten/Components/FavList.tsx +++ b/packages/client/Abfahrten/Components/FavList.tsx @@ -1,6 +1,5 @@ import { FavEntry, FavEntryDisplay } from './FavEntry'; import { Link } from 'react-router-dom'; -import { makeStyles } from '@material-ui/core'; import { MostUsed } from './MostUsed'; import { Navigate } from 'react-router'; import { useAbfahrtenError } from 'client/Abfahrten/provider/AbfahrtenProvider'; @@ -11,25 +10,17 @@ import { } from 'client/Abfahrten/provider/FavProvider'; import { useHeaderTagsActions } from 'client/Common/provider/HeaderTagProvider'; import { Zugsuche } from 'client/Common/Components/Zugsuche'; +import styled from '@emotion/styled'; import type { AbfahrtenError } from 'client/Abfahrten/provider/AbfahrtenProvider'; import type { FC, ReactNode } from 'react'; import type { MinimalStopPlace } from 'types/stopPlace'; import type { StaticRouterContext } from 'react-router'; -const useStyles = makeStyles((theme) => ({ - wrap: { - display: 'flex', - flexDirection: 'column', - flex: 1, - }, - error: { - margin: '1em', - fontSize: '2em', - }, - errorHead: { - color: theme.colors.red, - }, -})); +const Main = styled.main` + display: flex; + flex-direction: column; + flex: 1; +`; function getErrorText( error: AbfahrtenError, @@ -59,7 +50,6 @@ interface Props { } export const FavList: FC = ({ staticContext, children }) => { - const classes = useStyles(); const favs = useFavs(); const MostUsedComponent = useMostUsedComponent(); const sortedFavs = useMemo(() => { @@ -80,7 +70,7 @@ export const FavList: FC = ({ staticContext, children }) => { }, []); return ( -
+
{children} {/* eslint-disable-next-line no-nested-ternary */} @@ -88,7 +78,7 @@ export const FavList: FC = ({ staticContext, children }) => { <> {savedError.station && ( @@ -104,13 +94,13 @@ export const FavList: FC = ({ staticContext, children }) => { {sortedFavs.length ? ( <> - + {sortedFavs} ) : ( <> @@ -118,10 +108,10 @@ export const FavList: FC = ({ staticContext, children }) => { )} {MostUsedComponent && ( <> - + )} -
+
); }; diff --git a/packages/client/Abfahrten/Components/FilterModal.tsx b/packages/client/Abfahrten/Components/FilterModal.tsx index 8de06cc45..e5c19b0ac 100644 --- a/packages/client/Abfahrten/Components/FilterModal.tsx +++ b/packages/client/Abfahrten/Components/FilterModal.tsx @@ -4,22 +4,19 @@ import { DialogActions, DialogContent, FormControlLabel, - makeStyles, Switch, -} from '@material-ui/core'; +} from '@mui/material'; import { useAbfahrtenFilter } from 'client/Abfahrten/provider/AbfahrtenConfigProvider'; import { useAllTrainTypes } from 'client/Abfahrten/provider/AbfahrtenProvider/hooks'; import { useCallback } from 'react'; +import styled from '@emotion/styled'; import type { FC } from 'react'; -const useStyles = makeStyles({ - label: { - width: 'calc(50% - 1em)', - }, -}); +const Label = styled(FormControlLabel)` + width: calc(50% - 1em); +`; export const FilterModal: FC = () => { - const classes = useStyles(); const { productFilter, toggleProduct, @@ -49,8 +46,7 @@ export const FilterModal: FC = () => {

Zug Typen

{types.map((t) => ( - { - const classes = useStyles(); const { lineAndNumber, lookahead, autoUpdate, lookbehind, showCancelled } = useAbfahrtenConfig(); const { setConfigOpen } = useAbfahrtenModalToggle(); @@ -75,13 +74,11 @@ export const SettingsModal: FC = () => { open={configOpen} onClose={() => setConfigOpen(false)} > - Einstellungen - - Einstellungen + + + ); }; diff --git a/packages/client/Abfahrten/provider/AbfahrtenConfigProvider.tsx b/packages/client/Abfahrten/provider/AbfahrtenConfigProvider.tsx index c8941ad75..af25a9d27 100644 --- a/packages/client/Abfahrten/provider/AbfahrtenConfigProvider.tsx +++ b/packages/client/Abfahrten/provider/AbfahrtenConfigProvider.tsx @@ -136,7 +136,7 @@ export const AbfahrtenConfigProvider: FC = ({ ), lineAndNumber: storage.get('lineAndNumber') ?? false, lookahead: storage.get('lookahead') ?? '150', - lookbehind: storage.get('lookbehind') ?? '0', + lookbehind: storage.get('lookbehind') ?? '10', showSupersededMessages: storage.get('showSupersededMessages') ?? false, showCancelled: storage.get('showCancelled') ?? true, ...globalThis.configOverride.abfahrten, diff --git a/packages/client/App.tsx b/packages/client/App.tsx index 31f4ec11c..d51b0aa22 100644 --- a/packages/client/App.tsx +++ b/packages/client/App.tsx @@ -1,14 +1,14 @@ import { CommonConfigProvider } from 'client/Common/provider/CommonConfigProvider'; +import { GlobalStyles } from '@mui/material'; import { HeaderTagProvider } from 'client/Common/provider/HeaderTagProvider'; import { Loading } from 'client/Common/Components/Loading'; -import { makeStyles } from '@material-ui/core'; import { Navigation } from 'client/Common/Components/Navigation'; import { ReihungenProvider } from 'client/Common/provider/ReihungenProvider'; import { Route, Routes } from 'react-router-dom'; import { RoutingProvider } from 'client/Routing/provider/RoutingProvider'; import loadable from '@loadable/component'; -import React, { useEffect } from 'react'; import type { FC } from 'react'; +import type { Theme } from '@mui/material'; const lazyOptions = { fallback: , @@ -23,44 +23,34 @@ const LazyMap = loadable(() => import('./Map'), lazyOptions); const LazyRegional = loadable(() => import('./Regional'), lazyOptions); const About = loadable(() => import('./Common/Components/About'), lazyOptions); -const useStyles = makeStyles((theme) => ({ - '@global': { - 'html, body': { - height: '100%', - }, - '#app': { - display: 'flex', - flexDirection: 'column', - height: '100%', - }, - body: { - margin: 0, - fontFamily: 'Roboto, sans-serif', - backgroundColor: theme.palette.background.default, - color: theme.palette.text.primary, - }, - a: { - textDecoration: 'none', - color: theme.colors.blue, - }, - main: { - marginTop: theme.shape.headerSpacing, - }, +const globalStyles = (theme: Theme): any => ({ + body: { + margin: 0, + fontFamily: 'Roboto, sans-serif', + backgroundColor: theme.palette.background.default, + color: theme.palette.text.primary, }, -})); + a: { + textDecoration: 'none', + color: theme.colors.blue, + }, + main: { + marginTop: theme.shape.headerSpacing, + }, + 'html, body': { + height: '100%', + }, + '#app': { + display: 'flex', + flexDirection: 'column', + height: '100%', + }, +}); export const App: FC = () => { - useStyles(); - useEffect(() => { - const jssStyles = document.querySelector('#jss'); - - if (jssStyles && jssStyles.parentNode) { - jssStyles.parentNode.removeChild(jssStyles); - } - }, []); - return ( <> + diff --git a/packages/client/Common/Components/About.tsx b/packages/client/Common/Components/About.tsx index cd2b61547..96c25a521 100644 --- a/packages/client/Common/Components/About.tsx +++ b/packages/client/Common/Components/About.tsx @@ -1,6 +1,7 @@ import { BaseHeader } from 'client/Common/Components/BaseHeader'; -import { BugReport, Extension, Message } from '@material-ui/icons'; -import { Button, makeStyles } from '@material-ui/core'; +import { BugReport, Extension, Message } from '@mui/icons-material'; +import { Button } from '@mui/material'; +import styled from '@emotion/styled'; import type { FC } from 'react'; const Privacy = () => ( @@ -40,41 +41,41 @@ const Privacy = () => (
); -const useStyles = makeStyles((theme) => ({ - wrap: { - margin: `${theme.shape.headerSpacing}px 10px 0`, - display: 'flex', - flexDirection: 'column', - }, - donation: { - marginTop: 5, +const Container = styled.div(({ theme }) => ({ + margin: `${theme.shape.headerSpacing}px 10px 0`, + display: 'flex', + flexDirection: 'column', +})); + +const DonationText = styled.div` + margin-top: 5px; +`; + +const ButtonsContainer = styled.div(({ theme }) => ({ + [theme.breakpoints.down('md')]: { + height: '10em', }, - buttonsWrap: { - [theme.breakpoints.down('md')]: { - height: '10em', - }, +})); + +const Buttons = styled.div(({ theme }) => ({ + '& svg': { + marginRight: 5, }, - buttons: { - '& svg': { - marginRight: 5, - }, + display: 'flex', + justifyContent: 'space-around', + marginTop: '1em', + [theme.breakpoints.down('md')]: { display: 'flex', - justifyContent: 'space-around', - marginTop: '1em', - [theme.breakpoints.down('md')]: { - display: 'flex', - flexDirection: 'column', - alignItems: 'center', - }, + flexDirection: 'column', + alignItems: 'center', }, })); export const About: FC = () => { - const classes = useStyles(); return ( <> About -
+ Entwickelt von{' '} { @marudor@chaos.social -
+ Falls euch der Service gefällt, könnt ihr mir mit folgendem Button per PayPal Geld spenden. Falls ihr anderweitig spenden wollt, schreibt mir 'ne Mail an spende@marudor.de -
-
- -
+ + -
+ ); }; diff --git a/packages/client/Common/Components/AuslastungsDisplay.tsx b/packages/client/Common/Components/AuslastungsDisplay.tsx index b89966d91..38bdc15a9 100644 --- a/packages/client/Common/Components/AuslastungsDisplay.tsx +++ b/packages/client/Common/Components/AuslastungsDisplay.tsx @@ -1,38 +1,34 @@ -import { makeStyles } from '@material-ui/core'; import { SingleAuslastungsDisplay } from 'client/Common/Components/SingleAuslastungsDisplay'; +import styled from '@emotion/styled'; import type { FC } from 'react'; import type { Route$Auslastung } from 'types/routing'; -const useStyles = makeStyles({ - wrap: { - display: 'flex', - marginBottom: '.3em', - }, - entry: { - display: 'flex', - marginRight: '.5em', - alignItems: 'center', - flexDirection: 'column', - }, -}); +const Container = styled.div` + display: flex; + margin-bottom: 0.3em; +`; +const Entry = styled.div` + display: flex; + margin-right: 0.5em; + align-items: center; + flex-direction: column; +`; export interface Props { auslastung: Route$Auslastung; } export const AuslastungsDisplay: FC = ({ auslastung }) => { - const classes = useStyles(); - return ( -
-
+ + 1 -
-
+ + 2 -
-
+ + ); }; diff --git a/packages/client/Common/Components/BaseHeader.tsx b/packages/client/Common/Components/BaseHeader.tsx index 284b723c9..48b31fcf7 100644 --- a/packages/client/Common/Components/BaseHeader.tsx +++ b/packages/client/Common/Components/BaseHeader.tsx @@ -1,28 +1,26 @@ -import { AppBar, IconButton, makeStyles, Toolbar } from '@material-ui/core'; +import { AppBar, IconButton, Toolbar } from '@mui/material'; import { HeaderTags } from './HeaderTags'; -import { Menu } from '@material-ui/icons'; +import { Menu } from '@mui/icons-material'; import { NavigationContext } from 'client/Common/Components/Navigation/NavigationContext'; import { useContext } from 'react'; +import styled from '@emotion/styled'; import type { FC } from 'react'; -const useStyles = makeStyles((theme) => ({ - notchFix: { - top: '-5em', - height: '5em', - width: '100%', - position: 'fixed', - background: theme.palette.background.default, - }, +const NotchFix = styled.div(({ theme }) => ({ + top: '-5em', + height: '5em', + width: '100%', + position: 'fixed', + background: theme.palette.background.default, })); export const BaseHeader: FC = ({ children }) => { const { toggleDrawer } = useContext(NavigationContext); - const classes = useStyles(); return ( <> -
- + + ({ - wrap: { - fontSize: '90%', - width: '100%', - display: 'grid', - gridTemplateColumns: '1fr min-content 1fr', - gridTemplateRows: '1fr 1fr 1fr', - gridTemplateAreas: '"p a g" "o a g" "d a g"', - alignItems: 'center', - justifyItems: 'center', - }, - singleLine: theme.mixins.singleLineText, - operator: { - gridArea: 'o', - }, - date: { - gridArea: 'd', - }, - destination: { - gridArea: 'g', - }, - arrow: { - gridArea: 'a', - minWidth: '1.5em', - }, -})); +const Operator = styled.span(({ theme }) => theme.mixins.singleLineText, { + gridArea: 'o', +}); + +const Destination = styled.span` + grid-area: g; +`; + +const TrainText = styled.span(({ theme }) => theme.mixins.singleLineText); + +const Container = styled.div` + font-size: 90%; + width: 100%; + display: grid; + grid-template-columns: 1fr min-content 1fr; + grid-template-rows: 1fr 1fr 1fr; + grid-template-areas: 'p a g' 'o a g' 'd a g'; + align-items: center; + justify-items: center; +`; + +const DateDisplay = styled.span(({ theme }) => theme.mixins.singleLineText, { + gridArea: 'd', +}); + +const Arrow = styled.span` + grid-area: a; + min-width: 1.5em; +`; interface Props { train: string; } export const Header: FC = ({ train }) => { - const classes = useStyles(); const { details } = useContext(DetailsContext); const trainText = details ? details.train.name : train; @@ -54,34 +56,30 @@ export const Header: FC = ({ train }) => { return ( -
- + + {trainText} {details?.plannedSequence && ( )} - + {details && ( <> {details.train.operator && ( - - {details.train.operator.name} - + {details.train.operator.name} )} - + {format(details.departure.time, 'dd.MM.yyyy')} - - -> - - {details.segmentDestination.title} - + + -> + {details.segmentDestination.title} )} -
+
); }; diff --git a/packages/client/Common/Components/Details/Stop.tsx b/packages/client/Common/Components/Details/Stop.tsx index 3eb808481..ee732693c 100644 --- a/packages/client/Common/Components/Details/Stop.tsx +++ b/packages/client/Common/Components/Details/Stop.tsx @@ -1,6 +1,5 @@ import { DetailMessages } from '../Messages/Detail'; import { DetailsContext } from './DetailsContext'; -import { makeStyles } from '@material-ui/core'; import { Messages } from './Messages'; import { Platform } from 'client/Common/Components/Platform'; import { Reihung } from '../Reihung'; @@ -9,13 +8,58 @@ import { StationLink } from 'client/Common/Components/StationLink'; import { Time } from 'client/Common/Components/Time'; import { TravelynxLink } from 'client/Common/Components/CheckInLink/TravelynxLink'; import { useCallback, useContext } from 'react'; -import clsx from 'clsx'; +import styled from '@emotion/styled'; import type { FC, MouseEvent } from 'react'; import type { ParsedProduct } from 'types/HAFAS'; import type { Route$Stop } from 'types/routing'; -const useStyles = makeStyles((theme) => ({ - wrap: { +const ArrivalTime = styled(Time)` + grid-area: ar; +`; + +const DepartureTime = styled(Time)` + grid-area: dp; +`; + +const StopName = styled.span<{ stop: Route$Stop }>( + { + gridArea: 't', + overflow: 'hidden', + textOverflow: 'ellipsis', + '> a': { + color: 'inherit', + }, + }, + ({ theme, stop: { additional } }) => additional && theme.mixins.additional, + ({ theme, stop: { cancelled } }) => cancelled && theme.mixins.cancelled, +); + +const ScrollMarker = styled.div` + position: absolute; + top: -64px; +`; + +const StyledPlatform = styled(Platform)` + grid-area: p; +`; + +const ReihungContainer = styled.div` + grid-area: wr; + font-size: 0.5; + overflow: hidden; +`; + +const MessageContainer = styled.div` + grid-area: m; + padding-left: 0.75em; +`; + +const StyledTravelynxLink = styled(TravelynxLink)` + grid-area: c; +`; + +const Container = styled.div<{ past?: boolean; hasOccupancy?: boolean }>( + ({ theme, hasOccupancy }) => ({ padding: '0 .5em', display: 'grid', gridGap: '0 .3em', @@ -25,54 +69,20 @@ const useStyles = makeStyles((theme) => ({ alignItems: 'center', borderBottom: `1px solid ${theme.palette.text.primary}`, position: 'relative', - gridTemplateColumns: ({ hasOccupancy }: { hasOccupancy: boolean }) => - `4.8em ${hasOccupancy ? '1.7em' : '0'} 1fr max-content`, - }, - past: { - backgroundColor: theme.colors.shadedBackground, - }, - scrollMarker: { - position: 'absolute', - top: -64, - }, - arrival: { - gridArea: 'ar', - }, - station: { - gridArea: 't', - overflow: 'hidden', - textOverflow: 'ellipsis', - }, - additional: theme.mixins.additional, - cancelled: theme.mixins.cancelled, - stationName: { - color: 'inherit', - }, - checkIn: { - gridArea: 'c', - }, - departure: { - gridArea: 'dp', - }, - occupancy1: { - gridArea: 'o1', - }, - occupancy2: { - gridArea: 'o2', - }, - platform: { - gridArea: 'p', - }, - reihungWrap: { - fontSize: '.5em', - gridArea: 'wr', - overflow: 'hidden', - }, - messageWrap: { - gridArea: 'm', - paddingLeft: '.75em', - }, -})); + gridTemplateColumns: `4.8em ${ + hasOccupancy ? '1.7em' : '0' + } 1fr max-content`, + }), + ({ theme, past }) => + past && { backgroundColor: theme.colors.shadedBackground }, +); + +const Occupancy1 = styled.span` + grid-area: o1; +`; +const Occupancy2 = styled.span` + grid-area: o2; +`; interface Props { stop: Route$Stop; @@ -94,7 +104,6 @@ export const Stop: FC = ({ initialDepartureDate, onStopClick, }) => { - const classes = useStyles({ hasOccupancy }); const { urlPrefix } = useContext(DetailsContext); const depOrArrival = stop.departure || stop.arrival; const platforms = stop.departure @@ -118,48 +127,38 @@ export const Stop: FC = ({ ); return ( -
-
+ {stop.arrival && ( -
+ + ); }; diff --git a/packages/client/Common/Components/Details/StopList.tsx b/packages/client/Common/Components/Details/StopList.tsx index 6fa588211..a5ca1227c 100644 --- a/packages/client/Common/Components/Details/StopList.tsx +++ b/packages/client/Common/Components/Details/StopList.tsx @@ -1,10 +1,10 @@ +import { css } from '@emotion/react'; import { DetailsContext } from './DetailsContext'; -import { Error } from '@material-ui/icons'; +import { Error } from '@mui/icons-material'; import { Loading } from '../Loading'; -import { makeStyles } from '@material-ui/core'; import { Stop } from 'client/Common/Components/Details/Stop'; import { useCallback, useContext, useEffect, useMemo, useState } from 'react'; -import clsx from 'clsx'; +import styled from '@emotion/styled'; import type { AxiosError } from 'axios'; import type { FC } from 'react'; import type { Route$Stop } from 'types/routing'; @@ -20,25 +20,26 @@ function getErrorText(error: AxiosError) { return 'Unbekannter Fehler'; } -const useStyles = makeStyles({ - error: { - width: '80%', - height: '80%', - margin: '0 auto', - textAlign: 'center', - }, - wrap: { - display: 'flex', - flexDirection: 'column', - }, -}); +const Container = styled.main` + display: flex; + flex-direction: column; +`; + +const ErrorStyle = css` + width: 80%; + height: 80%; + margin: 0 auto; + text-align: center; +`; + +const ErrorContainer = styled(Container)(ErrorStyle); +const ErrorIcon = styled(Error)(ErrorStyle); interface Props { initialDepartureDate?: Date; } export const StopList: FC = ({ initialDepartureDate }) => { - const classes = useStyles(); const { details, error } = useContext(DetailsContext); const hasOccupancy = details?.stops.some((s) => s.auslastung); const [currentSequenceStop, setCurrentSequenceStop] = useState( @@ -51,6 +52,7 @@ export const StopList: FC = ({ initialDepartureDate }) => { useEffect(() => { if (details && details.currentStop) { + setCurrentSequenceStop(details.currentStop.station.id); const scrollDom = document.getElementById(details.currentStop.station.id); if (scrollDom) { @@ -87,10 +89,9 @@ export const StopList: FC = ({ initialDepartureDate }) => { if (error) { return ( -
- {' '} - {getErrorText(error)} -
+ + {getErrorText(error)} + ); } @@ -99,9 +100,9 @@ export const StopList: FC = ({ initialDepartureDate }) => { } return ( -
+ {/* */} {detailsStops} -
+ ); }; diff --git a/packages/client/Common/Components/Loading.tsx b/packages/client/Common/Components/Loading.tsx index 67a7159ee..a29cfa3ea 100644 --- a/packages/client/Common/Components/Loading.tsx +++ b/packages/client/Common/Components/Loading.tsx @@ -1,20 +1,29 @@ -import { makeStyles } from '@material-ui/core'; -import clsx from 'clsx'; +import { keyframes } from '@emotion/react'; +import styled from '@emotion/styled'; import type { FC, ReactElement } from 'react'; -const useStyles = makeStyles((theme) => ({ - absolute: { - position: 'absolute', - }, - '@keyframes grid': { - '0%,70%,100%': { - transform: 'scale3D(1, 1, 1)', - }, - '35%': { - transform: 'scale3D(0, 0, 1)', - }, - }, - grid: { +const dotsKeyframes = keyframes` + 0% { + top: 6px; + height: 51px; + } + 50%, 100% { + top: 19px; + height: 26px; + } +`; + +const gridKeyframes = keyframes` + 0%,70%,100% { + transform: scale3d(1,1,1) + } + 35% { + transform: scale3d(0,0,1) + } +`; + +const Grid = styled.div<{ absolute?: boolean }>( + ({ theme }) => ({ top: 0, left: 0, bottom: 0, @@ -27,53 +36,48 @@ const useStyles = makeStyles((theme) => ({ height: '33%', backgroundColor: theme.palette.text.primary, float: 'left', - animation: '$grid 1.3s infinite ease-in-out', - }, - '& > div:nth-child(1)': { animationDelay: '0.2s' }, - '& > div:nth-child(2)': { animationDelay: '0.3s' }, - '& > div:nth-child(3)': { animationDelay: '0.4s' }, - '& > div:nth-child(4)': { animationDelay: '0.1s' }, - '& > div:nth-child(5)': { animationDelay: '0.2s' }, - '& > div:nth-child(6)': { animationDelay: '0.3s' }, - '& > div:nth-child(7)': { animationDelay: '0s' }, - '& > div:nth-child(8)': { animationDelay: '0.1s' }, - '& > div:nth-child(9)': { animationDelay: '0.2s' }, - }, - '@keyframes dots': { - '0%': { - top: 6, - height: 51, + animation: `${gridKeyframes} 1.3s infinite ease-in-out`, }, - '50%,100%': { - top: 19, - height: 26, - }, - }, - dots: { - display: 'inline-block', - position: 'relative', - width: 64, - height: 64, - '& > div': { - display: 'inline-block', + '& > div:nth-of-type(1)': { animationDelay: '0.2s' }, + '& > div:nth-of-type(2)': { animationDelay: '0.3s' }, + '& > div:nth-of-type(3)': { animationDelay: '0.4s' }, + '& > div:nth-of-type(4)': { animationDelay: '0.1s' }, + '& > div:nth-of-type(5)': { animationDelay: '0.2s' }, + '& > div:nth-of-type(6)': { animationDelay: '0.3s' }, + '& > div:nth-of-type(7)': { animationDelay: '0s' }, + '& > div:nth-of-type(8)': { animationDelay: '0.1s' }, + '& > div:nth-of-type(9)': { animationDelay: '0.2s' }, + }), + ({ absolute }) => + absolute && { position: 'absolute', - left: 6, - width: 13, - background: theme.palette.text.primary, - animation: '$dots 1.2s cubic-bezier(0, 0.5, 0.5, 1) infinite', - }, - '& > div:nth-child(1)': { - left: 6, - animationDelay: '-0.24s', - }, - '& > div:nth-child(2)': { - left: 26, - animationDelay: '-0.12s', - }, - '& > div:nth-child(3)': { - left: 45, - animationDelay: '0', }, +); + +const Dots = styled.div(({ theme }) => ({ + display: 'inline-block', + position: 'relative', + width: 64, + height: 64, + '& > div': { + display: 'inline-block', + position: 'absolute', + left: 6, + width: 13, + background: theme.palette.text.primary, + animation: `${dotsKeyframes} 1.2s cubic-bezier(0, 0.5, 0.5, 1) infinite`, + }, + '& > div:nth-of-type(1)': { + left: 6, + animationDelay: '-0.24s', + }, + '& > div:nth-of-type(2)': { + left: 26, + animationDelay: '-0.12s', + }, + '& > div:nth-of-type(3)': { + left: 45, + animationDelay: '0', }, })); @@ -91,15 +95,11 @@ export const enum LoadingType { } const InnerLoading = ({ type, relative }: Pick) => { - const classes = useStyles(); switch (type) { default: case LoadingType.grid: return ( -
+
@@ -109,15 +109,15 @@ const InnerLoading = ({ type, relative }: Pick) => {
-
+ ); case LoadingType.dots: return ( -
+
-
+ ); } }; diff --git a/packages/client/Common/Components/MainWrap.tsx b/packages/client/Common/Components/MainWrap.tsx index 0850095ea..b50ed9748 100644 --- a/packages/client/Common/Components/MainWrap.tsx +++ b/packages/client/Common/Components/MainWrap.tsx @@ -1,27 +1,21 @@ -import { makeStyles } from '@material-ui/core'; -import clsx from 'clsx'; +import styled from '@emotion/styled'; import type { FC, ReactNode } from 'react'; -const useStyles = makeStyles((theme) => ({ - noHeader: { - marginTop: -theme.shape.headerSpacing, - }, - wrap: { +const Container = styled.div<{ noHeader?: boolean }>( + { display: 'flex', flexDirection: 'column', }, -})); - + ({ noHeader, theme }) => + noHeader && { + marginTop: -theme.shape.headerSpacing, + }, +); interface Props { noHeader?: boolean; children: ReactNode; } export const MainWrap: FC = ({ noHeader, children }) => { - const classes = useStyles(); - return ( -
- {children} -
- ); + return {children}; }; diff --git a/packages/client/Common/Components/Messages/Detail.tsx b/packages/client/Common/Components/Messages/Detail.tsx index ba7cb37ca..0748c230b 100644 --- a/packages/client/Common/Components/Messages/Detail.tsx +++ b/packages/client/Common/Components/Messages/Detail.tsx @@ -1,7 +1,7 @@ import { compareDesc } from 'date-fns'; import { HimIrisMessage } from 'client/Common/Components/Messages/HimIrisMessage'; import { IrisMessage } from 'client/Common/Components/Messages/IrisMessage'; -import { useStyles } from './Normal'; +import { MessageContainer } from './Normal'; import type { FC } from 'react'; import type { Message } from 'types/iris'; @@ -10,18 +10,17 @@ interface Props { } export const DetailMessages: FC = ({ messages }) => { - const classes = useStyles(); const sorted = messages.sort((a, b) => compareDesc(a.timestamp || 0, b.timestamp || 0), ); return ( -
+ {sorted.map((m, i) => { const MessageComponent = 'head' in m ? HimIrisMessage : IrisMessage; return ; })} -
+ ); }; diff --git a/packages/client/Common/Components/Messages/HimIrisMessage.tsx b/packages/client/Common/Components/Messages/HimIrisMessage.tsx index 36fd0511f..cd795155f 100644 --- a/packages/client/Common/Components/Messages/HimIrisMessage.tsx +++ b/packages/client/Common/Components/Messages/HimIrisMessage.tsx @@ -1,23 +1,17 @@ -import { - Dialog, - DialogContent, - DialogTitle, - makeStyles, -} from '@material-ui/core'; +import { Dialog, DialogContent, DialogTitle } from '@mui/material'; import { format, getDate } from 'date-fns'; -import { stopPropagation } from 'client/Common/stopPropagation'; import { useCallback, useState } from 'react'; -import clsx from 'clsx'; +import styled from '@emotion/styled'; import type { FC, SyntheticEvent } from 'react'; import type { HimIrisMessage as HimIrisMessageType } from 'types/iris'; -const useStyles = makeStyles((theme) => ({ - wrap: { +const Container = styled.div<{ superseded?: boolean }>( + { textDecoration: 'underline', cursor: 'pointer', }, - superseded: theme.mixins.cancelled, -})); + ({ theme, superseded }) => superseded && theme.mixins.cancelled, +); interface Props { message: HimIrisMessageType; @@ -28,7 +22,6 @@ export const HimIrisMessage: FC = ({ message, today = new Date().getDate(), }) => { - const classes = useStyles(); const [open, setOpen] = useState(false); const toggleOpen = useCallback((e: SyntheticEvent) => { e.preventDefault(); @@ -50,12 +43,9 @@ export const HimIrisMessage: FC = ({ : null; return ( -
+ {dateWithText} - + {dateWithText} {stopPlaceInfo} @@ -66,6 +56,6 @@ export const HimIrisMessage: FC = ({ }} /> -
+ ); }; diff --git a/packages/client/Common/Components/Messages/IrisMessage.tsx b/packages/client/Common/Components/Messages/IrisMessage.tsx index d4cf7f50d..8c6277657 100644 --- a/packages/client/Common/Components/Messages/IrisMessage.tsx +++ b/packages/client/Common/Components/Messages/IrisMessage.tsx @@ -1,12 +1,11 @@ import { format } from 'date-fns'; -import { makeStyles } from '@material-ui/core'; -import clsx from 'clsx'; +import styled from '@emotion/styled'; import type { FC } from 'react'; import type { IrisMessage as IrisMessageType } from 'types/iris'; -const useStyles = makeStyles((theme) => ({ - superseded: theme.mixins.cancelled, -})); +const Container = styled.div<{ superseded?: boolean }>( + ({ theme, superseded }) => superseded && theme.mixins.cancelled, +); interface Props { message: IrisMessageType; @@ -17,13 +16,12 @@ export const IrisMessage: FC = ({ message, today = new Date().getDate(), }) => { - const classes = useStyles(); const ts = message.timestamp; return ( -
+ {ts && format(ts, ts.getDate() === today ? 'HH:mm' : 'dd.MM HH:mm')}:{' '} {message.text} -
+ ); }; diff --git a/packages/client/Common/Components/Messages/Normal.tsx b/packages/client/Common/Components/Messages/Normal.tsx index 429af2271..2bbb350b9 100644 --- a/packages/client/Common/Components/Messages/Normal.tsx +++ b/packages/client/Common/Components/Messages/Normal.tsx @@ -1,25 +1,22 @@ -import { makeStyles } from '@material-ui/core'; import { useMemo } from 'react'; +import styled from '@emotion/styled'; import type { FC } from 'react'; import type { Message } from 'types/iris'; -export const useStyles = makeStyles((theme) => ({ - wrap: { - color: theme.colors.red, - overflow: 'hidden', - textOverflow: 'ellipsis', - }, +export const MessageContainer = styled.div(({ theme }) => ({ + color: theme.colors.red, + overflow: 'hidden', + textOverflow: 'ellipsis', })); interface Props { messages: Message[]; } export const NormalMessages: FC = ({ messages }) => { - const classes = useStyles(); const messagesDisplay = useMemo( () => messages.map((m) => ('head' in m ? m.head : m.text)).join(' +++ '), [messages], ); - return
{messagesDisplay}
; + return {messagesDisplay}; }; diff --git a/packages/client/Common/Components/Navigation/ThemeSelection.tsx b/packages/client/Common/Components/Navigation/ThemeSelection.tsx index 2d6e668bb..7cf50181f 100644 --- a/packages/client/Common/Components/Navigation/ThemeSelection.tsx +++ b/packages/client/Common/Components/Navigation/ThemeSelection.tsx @@ -5,23 +5,20 @@ import { ListItem, ListItemIcon, ListItemText, - makeStyles, Typography, -} from '@material-ui/core'; -import { ExpandLess, ExpandMore, Palette } from '@material-ui/icons'; +} from '@mui/material'; +import { ExpandLess, ExpandMore, Palette } from '@mui/icons-material'; import { ThemeType } from 'client/Themes/type'; import { useCallback, useState } from 'react'; import { useTheme } from 'client/Common/provider/ThemeProvider'; +import styled from '@emotion/styled'; import type { FC, SyntheticEvent } from 'react'; -const useStyles = makeStyles((theme) => ({ - themeList: { - paddingLeft: theme.spacing(1), - }, +const ThemeList = styled(List)(({ theme }) => ({ + paddingLeft: theme.spacing(1), })); export const ThemeSelection: FC = () => { - const classes = useStyles(); const { themeType, setThemeType } = useTheme(); const [open, setOpen] = useState(false); const selectTheme = useCallback( @@ -54,11 +51,7 @@ export const ThemeSelection: FC = () => { {open ? : } - + {Object.values(ThemeType).map((themeOption) => { const name = themeOption[0].toUpperCase() + themeOption.slice(1); @@ -79,7 +72,7 @@ export const ThemeSelection: FC = () => { ); })} - + ); diff --git a/packages/client/Common/Components/Navigation/index.tsx b/packages/client/Common/Components/Navigation/index.tsx index 6228f3d38..83d2ba5bc 100644 --- a/packages/client/Common/Components/Navigation/index.tsx +++ b/packages/client/Common/Components/Navigation/index.tsx @@ -1,31 +1,30 @@ -import { AlarmOnOutlined, Explore, Info, Search } from '@material-ui/icons'; +import { AlarmOnOutlined, Explore, Info, Search } from '@mui/icons-material'; import { Link } from 'react-router-dom'; import { List, ListItem, ListItemIcon, ListItemText, - makeStyles, SwipeableDrawer, -} from '@material-ui/core'; +} from '@mui/material'; import { NavigationContext } from './NavigationContext'; import { ThemeSelection } from './ThemeSelection'; import { useCallback, useMemo, useState } from 'react'; import { Zugsuche } from 'client/Common/Components/Zugsuche'; +import styled from '@emotion/styled'; import type { FC, ReactNode } from 'react'; -const useStyles = makeStyles({ - headline: { - textAlign: 'center', +const Headline = styled.h3` + text-align: center; +`; + +const Drawer = styled(List)({ + width: 230, + '& a': { + color: 'inherit', }, - drawer: { - width: 230, - '& a': { - color: 'inherit', - }, - '& .MuiListItem-button': { - padding: '20px 20px', - }, + '& .MuiListItem-button': { + padding: '20px 20px', }, }); @@ -34,7 +33,6 @@ interface Props { } export const Navigation: FC = ({ children }) => { - const classes = useStyles(); const [open, setOpen] = useState(false); const toggleDrawer = useCallback(() => { setOpen((old) => !old); @@ -49,8 +47,8 @@ export const Navigation: FC = ({ children }) => { return ( -

BahnhofsAbfahrten

- + BahnhofsAbfahrten + @@ -94,7 +92,7 @@ export const Navigation: FC = ({ children }) => { - +
{children}
diff --git a/packages/client/Common/Components/PlannedType.tsx b/packages/client/Common/Components/PlannedType.tsx index 5c084f620..14f904ae1 100644 --- a/packages/client/Common/Components/PlannedType.tsx +++ b/packages/client/Common/Components/PlannedType.tsx @@ -1,27 +1,25 @@ -import { makeStyles, Tooltip } from '@material-ui/core'; +import { Tooltip } from '@mui/material'; +import styled from '@emotion/styled'; import type { FC } from 'react'; import type { PlannedSequence } from 'types/planReihung'; -const useStyles = makeStyles({ - wrap: { - color: 'lightgray', - }, -}); +const StyledTooltip = styled(Tooltip)` + color: lightgray; +`; interface Props { plannedSequence?: PlannedSequence; } export const PlannedType: FC = ({ plannedSequence }) => { - const classes = useStyles(); if (!plannedSequence?.shortType) return null; return ( - - ({plannedSequence.shortType}) - + ({plannedSequence.shortType}) + ); }; diff --git a/packages/client/Common/Components/Platform.tsx b/packages/client/Common/Components/Platform.tsx index 8b1443383..7cc435ba5 100644 --- a/packages/client/Common/Components/Platform.tsx +++ b/packages/client/Common/Components/Platform.tsx @@ -1,46 +1,43 @@ -import { makeStyles } from '@material-ui/core'; -import clsx from 'clsx'; +import styled from '@emotion/styled'; import type { FC } from 'react'; -const useStyles = makeStyles((theme) => ({ - cancelled: theme.mixins.cancelled, - changed: theme.mixins.changed, - changedWrapper: { - ...theme.mixins.cancelled, - paddingLeft: '.3em', - }, -})); +const Container = styled.div<{ cancelled?: boolean; changed?: boolean }>( + ({ theme, cancelled }) => cancelled && theme.mixins.cancelled, + ({ theme, changed }) => changed && theme.mixins.changed, +); + +const ChangedContainer = styled.span(({ theme }) => theme.mixins.cancelled, { + paddingLeft: '.3em', +}); interface Props { - className?: string; cancelled?: boolean; scheduled?: string; real?: string; + className?: string; } export const Platform: FC = ({ - className, cancelled, scheduled, real, + className, }) => { - const classes = useStyles(); const changed = Boolean(scheduled && scheduled !== real); return ( -
{real} {changed && ( - + ({scheduled}) - + )} -
+ ); }; diff --git a/packages/client/Common/Components/Reihung/Explain.tsx b/packages/client/Common/Components/Reihung/Explain.tsx index 97cd14681..1324f1d9d 100644 --- a/packages/client/Common/Components/Reihung/Explain.tsx +++ b/packages/client/Common/Components/Reihung/Explain.tsx @@ -1,42 +1,43 @@ -import { Dialog, DialogContent, makeStyles } from '@material-ui/core'; +import { Dialog, DialogContent } from '@mui/material'; import { icons } from './Fahrzeug'; import { SingleAuslastungsDisplay } from 'client/Common/Components/SingleAuslastungsDisplay'; -import { stopPropagation } from 'client/Common/stopPropagation'; import { useCallback, useState } from 'react'; +import styled from '@emotion/styled'; import type { FC, SyntheticEvent } from 'react'; -const useStyles = makeStyles((theme) => ({ - legende: { - color: theme.colors.blue, - position: 'absolute', - bottom: '.5em', - left: 0, - cursor: 'pointer', - }, - wrap: { - display: 'flex', - flexWrap: 'wrap', - }, - iconWrap: { - display: 'flex', - alignItems: 'center', - minWidth: '16em', - marginBottom: '.2em', - '& > svg': { - marginRight: '1em', - }, - '& > span': { - fontSize: '1em', - marginRight: '1em', - }, - }, - comfort: { - width: '1em', - height: '1em', - fontSize: '1.5rem', - borderRadius: '50%', - backgroundColor: theme.colors.red, - }, +const OpenLink = styled.div(({ theme }) => ({ + color: theme.colors.blue, + position: 'absolute', + bottom: '.5em', + left: 0, + cursor: 'pointer', +})); + +const ContentContainer = styled.div` + display: flex; + flex-wrap: wrap; +`; + +const IconWrap = styled.div` + display: flex; + align-items: center; + min-width: 16em; + margin-bottom: 0.2em; + & > svg { + margin-right: 1em; + } + & > span { + font-size: 1em; + margin-right: 1em; + } +`; + +const ComfortIcon = styled.div(({ theme }) => ({ + width: '1em', + height: '1em', + fontSize: '1.5rem', + borderRadius: '50%', + backgroundColor: theme.colors.red, })); // Exported for tests @@ -54,7 +55,6 @@ export const iconExplanation: { [K in keyof typeof icons]: string } = { }; export const Explain: FC = () => { - const classes = useStyles(); const [open, setOpen] = useState(false); const toggle = useCallback((e: SyntheticEvent) => { e.stopPropagation(); @@ -63,24 +63,18 @@ export const Explain: FC = () => { return ( <> -
+ Legende -
+

Legende Wagenreihung

- {/* */} -
+ {Object.keys(iconExplanation).map( // @ts-expect-error this is correct, it's exact! (iconName: keyof typeof icons) => { @@ -88,46 +82,42 @@ export const Explain: FC = () => { return ( Icon && ( -
+ {iconExplanation[iconName]} -
+ ) ); }, )} -
-
+ + Bahn.Comfort Sitzplätze -
-
+ +

Auslastung

-
-
+ + Unbekannte Auslastung -
-
+ + Geringe Auslastung -
-
+ + Hohe Auslastung -
-
+ + Sehr hohe Auslastung -
-
+ + Zug ist ausgebucht -
-
+ +
diff --git a/packages/client/Common/Components/Reihung/Fahrzeug.tsx b/packages/client/Common/Components/Reihung/Fahrzeug.tsx index 3e02f5f7b..c20f86345 100644 --- a/packages/client/Common/Components/Reihung/Fahrzeug.tsx +++ b/packages/client/Common/Components/Reihung/Fahrzeug.tsx @@ -5,15 +5,14 @@ import { ChildFriendly, InfoOutlined, LocalDining, - Motorcycle, NotificationsOff, + PedalBike, WifiOutlined, -} from '@material-ui/icons'; -import { makeStyles } from '@material-ui/core'; +} from '@mui/icons-material'; import { SitzplatzInfo } from './SitzplatzInfo'; import { UIC } from './UIC'; import { WagenLink } from './WagenLink'; -import clsx from 'clsx'; +import styled from '@emotion/styled'; import type { AvailableIdentifier, CoachSequenceCoach, @@ -21,124 +20,143 @@ import type { } from 'types/coachSequence'; import type { ComponentType, FC } from 'react'; +const DummyIcon = styled.span(({ theme }) => ({ + width: '.6em', + height: '.6em', + [theme.breakpoints.down('md')]: { + fontSize: 16, + }, +})); + export const icons: { [key in keyof Required]: ComponentType | null; } = { - wheelchair: Accessible, - bike: Motorcycle, - dining: LocalDining, - quiet: NotificationsOff, - toddler: ChildFriendly, - family: ChildCare, - disabled: Accessibility, - info: InfoOutlined, - wifi: WifiOutlined, + wheelchair: DummyIcon.withComponent(Accessible), + bike: DummyIcon.withComponent(PedalBike), + dining: DummyIcon.withComponent(LocalDining), + quiet: DummyIcon.withComponent(NotificationsOff), + toddler: DummyIcon.withComponent(ChildFriendly), + family: DummyIcon.withComponent(ChildCare), + disabled: DummyIcon.withComponent(Accessibility), + info: DummyIcon.withComponent(InfoOutlined), + wifi: DummyIcon.withComponent(WifiOutlined), comfort: null, }; -const useStyles = makeStyles((theme) => ({ - icon: { - width: '.6em', - height: '.6em', - [theme.breakpoints.down('md')]: { - fontSize: 16, - }, - }, - wrap: { +const Container = styled.div<{ wrongWing?: boolean; closed?: boolean }>( + ({ theme }) => ({ position: 'absolute', height: '2.5em', border: `${theme.palette.text.primary} 1px solid`, boxSizing: 'border-box', - }, - closed: { - background: `repeating-linear-gradient(135deg, ${theme.colors.shadedBackground}, ${theme.colors.shadedBackground}, 5px, transparent 5px, transparent 10px)`, - }, - wrongWing: { - background: theme.colors.shadedBackground, - '&::after': { - content: '""', - top: -1, - left: -1, - right: -1, - bottom: '-3.7em', - pointerEvents: 'none', - zIndex: 5, - background: theme.colors.transparentBackground, + }), + ({ theme, closed }) => + closed && { + background: `repeating-linear-gradient(135deg, ${theme.colors.shadedBackground}, ${theme.colors.shadedBackground}, 5px, transparent 5px, transparent 10px)`, }, - }, - nummer: { - position: 'absolute', - zIndex: 1, - left: '50%', - transform: 'translateX(-50%)', - bottom: 0, - }, - comfort: { - position: 'absolute', - top: '.2em', - right: '.3em', - width: '.7em', - height: '.7em', - backgroundColor: theme.colors.red, - borderRadius: '50%', - }, - extraInfo: { - position: 'absolute', - top: '150%', - display: 'flex', - flexDirection: 'column', - width: '100%', - alignItems: 'center', - }, - klasse: { + ({ theme, wrongWing }) => + wrongWing && { + background: theme.colors.shadedBackground, + '&::after': { + content: '""', + top: -1, + left: -1, + right: -1, + bottom: '-3.7em', + pointerEvents: 'none', + zIndex: 5, + background: theme.colors.transparentBackground, + }, + }, +); + +const DoppelstockIndicator = styled.span(({ theme }) => ({ + position: 'absolute', + height: '1px', + top: '45%', + left: 0, + right: 0, + backgroundImage: `linear-gradient(to right, ${theme.palette.text.primary} 33%, transparent 0%)`, + backgroundSize: '8px 1px', + backgroundRepeat: 'repeat-x', +})); + +const Fahrzeugklasse = styled.span<{ coach: CoachSequenceCoach }>( + { bottom: 0, right: 0, position: 'absolute', }, - klasse0: { - '&::after': { - content: '"?"', - }, - }, - klasse1: { - backgroundColor: theme.colors.yellow, - color: theme.palette.getContrastText(theme.colors.yellow), - '&::after': { - content: '"1"', - }, - }, - klasse2: { - backgroundColor: theme.colors.red, - color: theme.palette.getContrastText(theme.colors.red), - '&::after': { - content: '"2"', - }, - }, - klasse3: { - background: `linear-gradient(to right, ${theme.colors.yellow}, ${theme.colors.red})`, - '&::after': { - content: '"1/2"', - }, - }, - klasse4: { - right: '50%', - transform: 'translateX(50%)', - '&::after': { - content: '"LOK"', - }, - }, - doppelstock: { - position: 'absolute', - height: '1px', - top: '45%', - left: 0, - right: 0, - backgroundImage: `linear-gradient(to right, ${theme.palette.text.primary} 33%, transparent 0%)`, - backgroundSize: '8px 1px', - backgroundRepeat: 'repeat-x', + ({ coach, theme }) => { + switch (coach.class) { + case 0: + return { + '&::after': { + content: '"?"', + }, + }; + case 1: + return { + backgroundColor: theme.colors.yellow, + color: theme.palette.getContrastText(theme.colors.yellow), + '&::after': { + content: '"1"', + }, + }; + case 2: + return { + backgroundColor: theme.colors.red, + color: theme.palette.getContrastText(theme.colors.red), + '&::after': { + content: '"2"', + }, + }; + case 3: + return { + background: `linear-gradient(to right, ${theme.colors.yellow}, ${theme.colors.red})`, + '&::after': { + content: '"1/2"', + }, + }; + case 4: + return { + right: '50%', + transform: 'translateX(50%)', + '&::after': { + content: '"LOK"', + }, + }; + } }, +); + +const IdentificationNumber = styled.span` + position: absolute; + z-index: 1; + left: 50%; + transform: translateX(-50%); + bottom: 0; +`; + +const ComfortIcon = styled.span(({ theme }) => ({ + position: 'absolute', + top: '.2em', + right: '.3em', + width: '.7em', + height: '.7em', + backgroundColor: theme.colors.red, + borderRadius: '50%', })); +const ExtraInfoContainer = styled.span` + position: absolute; + top: 150%; + display: flex; + flex-direction: column; + width: 100%; + align-items: center; +`; + export interface InheritedProps { scale: number; correctLeft: number; @@ -162,7 +180,6 @@ export const Fahrzeug: FC = ({ identifier, type, }) => { - const classes = useStyles(); const { startPercent, endPercent } = fahrzeug.position; const position = { @@ -171,25 +188,18 @@ export const Fahrzeug: FC = ({ }; return ( -
- {fahrzeug.category.includes('DOPPELSTOCK') && ( - - )} - + {fahrzeug.category.includes('DOPPELSTOCK') && } + {fahrzeug.identificationNumber && ( - {fahrzeug.identificationNumber} + + {fahrzeug.identificationNumber} + )} {Object.entries(fahrzeug.features).map(([key, enabled]) => { @@ -197,21 +207,21 @@ export const Fahrzeug: FC = ({ // @ts-expect-error this is correct, it's exact! const SpecificIcon = icons[key]; if (!SpecificIcon) return null; - return ; + return ; } return null; })} - {fahrzeug.features.comfort && } + {fahrzeug.features.comfort && } - + {showUIC && } - -
+ + ); }; diff --git a/packages/client/Common/Components/Reihung/Gruppe.tsx b/packages/client/Common/Components/Reihung/Gruppe.tsx index f5f934a6f..73e07f5e5 100644 --- a/packages/client/Common/Components/Reihung/Gruppe.tsx +++ b/packages/client/Common/Components/Reihung/Gruppe.tsx @@ -1,21 +1,19 @@ /* eslint-disable react/no-unescaped-entities */ import { BRInfo } from 'client/Common/Components/Reihung/BRInfo'; import { Fahrzeug } from './Fahrzeug'; -import { makeStyles } from '@material-ui/core'; import { useMemo } from 'react'; +import styled from '@emotion/styled'; import type { CoachSequenceGroup } from 'types/coachSequence'; import type { FC } from 'react'; import type { InheritedProps } from './Fahrzeug'; -const useStyles = makeStyles({ - bezeichnung: { - display: 'flex', - flexDirection: 'column', - alignItems: 'center', - position: 'absolute', - bottom: '2.5em', - }, -}); +const Bezeichnung = styled.div` + display: flex; + flex-direction: column; + align-items: center; + position: absolute; + bottom: 2.5em; +`; interface Props extends InheritedProps { gruppe: CoachSequenceGroup; @@ -36,7 +34,6 @@ export const Gruppe: FC = ({ originalTrainNumber, ...rest }) => { - const classes = useStyles(); const gruppenPos = useMemo(() => { const groupStart = Math.min( ...gruppe.coaches.map((c) => c.position.startPercent), @@ -79,7 +76,7 @@ export const Gruppe: FC = ({ <> {fahrzeuge} {extraInfoLine && ( - + {gruppe.baureihe && } {showGruppenZugnummer && gruppe.number && ( @@ -93,7 +90,7 @@ export const Gruppe: FC = ({ {gruppe.name.replace(RPFRegex, '$1 $2 $3')} )} - + )} ); diff --git a/packages/client/Common/Components/Reihung/Sektor.tsx b/packages/client/Common/Components/Reihung/Sektor.tsx index ad61e3f66..373533a41 100644 --- a/packages/client/Common/Components/Reihung/Sektor.tsx +++ b/packages/client/Common/Components/Reihung/Sektor.tsx @@ -1,15 +1,13 @@ -import { makeStyles } from '@material-ui/core'; import { useMemo } from 'react'; +import styled from '@emotion/styled'; import type { CoachSequenceSector } from 'types/coachSequence'; import type { FC } from 'react'; -const useStyles = makeStyles({ - wrap: { - position: 'absolute', - fontWeight: 'bolder', - textAlign: 'center', - }, -}); +const Container = styled.div` + position: absolute; + font-weight: bolder; + text-align: center; +`; interface Props { sector: CoachSequenceSector; @@ -18,7 +16,6 @@ interface Props { } export const Sektor: FC = ({ sector, correctLeft, scale }) => { - const classes = useStyles(); const position = useMemo(() => { const { startPercent, endPercent } = sector.position; @@ -27,9 +24,5 @@ export const Sektor: FC = ({ sector, correctLeft, scale }) => { width: `${(endPercent - startPercent) * scale}%`, }; }, [correctLeft, scale, sector.position]); - return ( -
- {sector.name} -
- ); + return {sector.name}; }; diff --git a/packages/client/Common/Components/Reihung/SitzplatzInfo.tsx b/packages/client/Common/Components/Reihung/SitzplatzInfo.tsx index 33cdf7209..6d8954eff 100644 --- a/packages/client/Common/Components/Reihung/SitzplatzInfo.tsx +++ b/packages/client/Common/Components/Reihung/SitzplatzInfo.tsx @@ -1,27 +1,25 @@ -import { Dialog, DialogContent, makeStyles } from '@material-ui/core'; -import { stopPropagation } from 'client/Common/stopPropagation'; +import { Dialog, DialogContent } from '@mui/material'; import { useCallback, useState } from 'react'; +import styled from '@emotion/styled'; import type { CoachSequenceCoachSeats } from 'types/coachSequence'; import type { FC, SyntheticEvent } from 'react'; -const useStyles = makeStyles((theme) => ({ - wrap: { - color: theme.colors.blue, - cursor: 'pointer', - }, - textLine: { - display: 'flex', - justifyContent: 'space-between', - }, +const OpenText = styled.span(({ theme }) => ({ + color: theme.colors.blue, + cursor: 'pointer', })); +const TextLine = styled.div` + display: flex; + justify-content: space-between; +`; + interface Props { seats?: CoachSequenceCoachSeats; identificationNumber?: string; } export const SitzplatzInfo: FC = ({ seats, identificationNumber }) => { - const classes = useStyles(); const [open, setOpen] = useState(false); const toggle = useCallback((e: SyntheticEvent) => { e.preventDefault(); @@ -35,39 +33,29 @@ export const SitzplatzInfo: FC = ({ seats, identificationNumber }) => { return ( <> - + Plätze - - + +

Sitzplätze Wagen {identificationNumber}

{seats.comfort && ( -
+ Comfort: {seats.comfort} -
+ )} {seats.disabled && ( -
+ Schwerbehindert: {seats.disabled} -
+ )} {seats.family && ( -
+ Familienbereich: {seats.family} -
+ )}
diff --git a/packages/client/Common/Components/Reihung/WagenLink.tsx b/packages/client/Common/Components/Reihung/WagenLink.tsx index cd7df7f78..7b1a5c44d 100644 --- a/packages/client/Common/Components/Reihung/WagenLink.tsx +++ b/packages/client/Common/Components/Reihung/WagenLink.tsx @@ -1,4 +1,4 @@ -import { makeStyles } from '@material-ui/core'; +import { css } from '@emotion/react'; import { stopPropagation } from 'client/Common/stopPropagation'; import { useMemo } from 'react'; import type { @@ -7,14 +7,12 @@ import type { } from 'types/coachSequence'; import type { FC } from 'react'; -const useStyles = makeStyles({ - link: { - position: 'absolute', - top: '100%', - left: '50%', - transform: 'translateX(-50%)', - }, -}); +const linkCss = css` + position: absolute; + top: 100%; + left: 50%; + transform: translateX(-50%); +`; interface Props { fahrzeug: CoachSequenceCoach; @@ -48,7 +46,6 @@ const allowedTypes = ['IC', 'ICE']; const seriesRegex = /\.S(\d)/; export const WagenLink: FC = ({ fahrzeug, identifier, type }) => { - const classes = useStyles(); const imageName = useMemo(() => { if ( !allowedTypes.includes(type) || @@ -83,12 +80,12 @@ export const WagenLink: FC = ({ fahrzeug, identifier, type }) => { }, [fahrzeug.category, fahrzeug.type, fahrzeug.uic, identifier, type]); if (!imageName) { - return {fahrzeug.type}; + return {fahrzeug.type}; } return ( ({ - wrap: { - overflowX: 'auto', - }, - main: { - minWidth: '70em', - overflow: 'hidden', - position: 'relative', - fontSize: '170%', - marginBottom: '1em', - marginRight: '.3em', - }, - sektoren: { - position: 'relative', - }, - reihungWrap: { - position: 'relative', - marginTop: '1.3em', - height: '100%', - }, - plan: { - position: 'absolute', - bottom: '1.5em', - }, - richtung: { +const ContainerWrap = styled.div` + overflow-x: auto; +`; + +const Container = styled.div` + min-width: 70em; + overflow: hidden; + position: relative; + font-size: 170%; + margin-bottom: 1em; + margin-right: 0.3em; +`; + +const Sectors = styled.div` + position: relative; +`; + +const Sequence = styled.div` + position: relative; + margin-top: 1.3em; + height: 100%; +`; + +const PlannedOnlyIndicator = styled.span` + position: absolute; + bottom: 1.5em; +`; + +const DirectionOfTravel = styled.span<{ reversed?: boolean }>( + ({ theme, reversed }) => ({ backgroundColor: theme.palette.text.primary, width: '50%', height: 2, @@ -45,7 +49,7 @@ const useStyles = makeStyles((theme) => ({ left: '50%', bottom: '.5em', zIndex: 10, - transform: 'translateX(-50%)', + transform: reversed ? 'rotate(180deg) translateX(50%)' : 'translateX(-50%)', '&::after': { border: `solid ${theme.palette.text.primary}`, borderWidth: '0 2px 2px 0', @@ -56,11 +60,8 @@ const useStyles = makeStyles((theme) => ({ position: 'absolute', top: -3, }, - }, - reverseRichtung: { - transform: 'rotate(180deg) translateX(50%)', - }, -})); + }), +); interface Props { className?: string; @@ -82,7 +83,6 @@ export const Reihung: FC = ({ loadHidden, fallbackTrainNumbers, }) => { - const classes = useStyles(); const sequences = useSequences(); const { getSequences } = useSequencesActions(); const { fahrzeugGruppe, showUIC } = useCommonConfig(); @@ -155,9 +155,9 @@ export const Reihung: FC = ({ } return ( -
-
-
+ + + {sequence.stop.sectors.map((s) => ( = ({ sector={s} /> ))} -
-
+ + {sequence.sequence.groups.map((g, i) => ( = ({ key={i} /> ))} -
+ {!sequence.isRealtime && ( - Plandaten + Plandaten )} {sequence.direction != null && ( - + )} -
-
+ + ); }; // eslint-disable-next-line import/no-default-export diff --git a/packages/client/Common/Components/SingleAuslastungsDisplay.tsx b/packages/client/Common/Components/SingleAuslastungsDisplay.tsx index ae0e7de61..caea6395d 100644 --- a/packages/client/Common/Components/SingleAuslastungsDisplay.tsx +++ b/packages/client/Common/Components/SingleAuslastungsDisplay.tsx @@ -1,13 +1,8 @@ import { AuslastungsValue } from 'types/routing'; -import { makeStyles } from '@material-ui/core'; -import Close from '@material-ui/icons/Close'; -import clsx from 'clsx'; -import Done from '@material-ui/icons/Done'; -import ErrorOutline from '@material-ui/icons/ErrorOutline'; -import Help from '@material-ui/icons/Help'; -import Warning from '@material-ui/icons/Warning'; +import { Close, Done, ErrorOutline, Help, Warning } from '@mui/icons-material'; +import styled from '@emotion/styled'; import type { FC } from 'react'; -import type { Theme } from '@material-ui/core'; +import type { Theme } from '@emotion/react'; function getIcon(auslastung?: AuslastungsValue) { switch (auslastung) { @@ -29,12 +24,8 @@ const getColors = (backgroundColor: string, theme: Theme) => ({ color: theme.palette.getContrastText(backgroundColor), }); -const useStyles = makeStyles((theme) => ({ - [AuslastungsValue.Gering]: getColors(theme.colors.green, theme), - [AuslastungsValue.Hoch]: getColors(theme.colors.yellow, theme), - [AuslastungsValue.SehrHoch]: getColors(theme.colors.orange, theme), - [AuslastungsValue.Ausgebucht]: getColors(theme.colors.red, theme), - wrap: { +const Container = styled.span<{ auslastung?: AuslastungsValue }>( + { fontSize: '.7em', display: 'inline-block', borderRadius: '50%', @@ -42,7 +33,21 @@ const useStyles = makeStyles((theme) => ({ padding: '.2em', lineHeight: 0, }, -})); + ({ theme, auslastung }) => { + switch (auslastung) { + case AuslastungsValue.Gering: + return getColors(theme.colors.green, theme); + case AuslastungsValue.Hoch: + return getColors(theme.colors.yellow, theme); + case AuslastungsValue.SehrHoch: + return getColors(theme.colors.orange, theme); + case AuslastungsValue.Ausgebucht: + return getColors(theme.colors.red, theme); + default: + return {}; + } + }, +); export interface Props { auslastung?: AuslastungsValue; @@ -52,14 +57,9 @@ export const SingleAuslastungsDisplay: FC = ({ auslastung, className, }) => { - const classes = useStyles(); - return ( - + {getIcon(auslastung)} - + ); }; diff --git a/packages/client/Common/Components/StationLink.tsx b/packages/client/Common/Components/StationLink.tsx index 90feba34f..2f053bb9d 100644 --- a/packages/client/Common/Components/StationLink.tsx +++ b/packages/client/Common/Components/StationLink.tsx @@ -17,11 +17,11 @@ export const StationLink: FC = ({ return ( {stationName} diff --git a/packages/client/Common/Components/StopPlaceSearch.tsx b/packages/client/Common/Components/StopPlaceSearch.tsx index 5d03ab626..08989cff7 100644 --- a/packages/client/Common/Components/StopPlaceSearch.tsx +++ b/packages/client/Common/Components/StopPlaceSearch.tsx @@ -1,48 +1,32 @@ import { Loading, LoadingType } from './Loading'; -import { makeStyles, MenuItem, Paper, TextField } from '@material-ui/core'; +import { MenuItem, Paper, TextField } from '@mui/material'; import { useCallback, useRef } from 'react'; import { useStopPlaceSearch } from 'client/Common/hooks/useStopPlaceSearch'; import Downshift from 'downshift'; +import styled from '@emotion/styled'; import type { AllowedHafasProfile } from 'types/HAFAS'; -import type { FC, ReactNode } from 'react'; +import type { FC } from 'react'; import type { MinimalStopPlace } from 'types/stopPlace'; -const useStyles = makeStyles((theme) => ({ - wrap: { - flex: 1, - position: 'relative', - }, - menuWrap: { - background: theme.palette.background.default, - marginTop: theme.spacing(1), - position: 'absolute', - left: 0, - right: 0, - zIndex: 2, - }, - menuItem: { - fontWeight: 400, - }, - selectedMenuItem: { - fontWeight: 500, - }, - icons: { - '& > svg': { - fontSize: '1.3em', - verticalAlign: 'center', - }, - position: 'absolute', - right: 0, - cursor: 'pointer', - top: '50%', - transform: 'translateY(-50%)', - }, - loading: ({ additionalIcon }: { additionalIcon: boolean }) => ({ - right: additionalIcon ? '1.7em' : '.5em', - top: '-1em', - position: 'absolute', - transform: 'scale(.5)', - }), +const PositionedLoading = styled(Loading)` + right: 0.5em; + top: -1em; + position: absolute; + transform: scale(0.5); +`; + +const Container = styled.div` + flex: 1; + position: relative; +`; + +const SuggestionContainer = styled(Paper)(({ theme }) => ({ + background: theme.palette.background.default, + marginTop: theme.spacing(1), + position: 'absolute', + left: 0, + right: 0, + zIndex: 2, })); export interface Props { @@ -53,7 +37,6 @@ export interface Props { placeholder?: string; profile?: AllowedHafasProfile; maxSuggestions?: number; - additionalIcon?: ReactNode; filterForIris?: boolean; groupedBySales?: boolean; } @@ -65,11 +48,9 @@ export const StopPlaceSearch: FC = ({ autoFocus, placeholder, maxSuggestions = 7, - additionalIcon, filterForIris = false, groupedBySales = false, }) => { - const classes = useStyles({ additionalIcon: Boolean(additionalIcon) }); const inputRef = useRef(); const { @@ -94,7 +75,7 @@ export const StopPlaceSearch: FC = ({ ); return ( -
+ = ({ inputValue, isOpen, setState, - selectedItem, openMenu, }) => { const { onBlur, onChange, onFocus, ...inputProps } = getInputProps({ @@ -162,24 +142,17 @@ export const StopPlaceSearch: FC = ({
{isOpen && ( - + {suggestions.length ? ( suggestions.map((suggestion, index) => { const itemProps = getItemProps({ item: suggestion, index, }); - const selected = - selectedItem && selectedItem.name === suggestion.name; const highlighted = highlightedIndex === index; return ( = ({ {loading ? 'Loading...' : 'No options'} )} - + )}
); }} - {/*
- - {additionalIcon} -
*/} - {loading && ( - - )} -
+ {loading && } + ); }; diff --git a/packages/client/Common/Components/Streik.tsx b/packages/client/Common/Components/Streik.tsx index a518baf67..362fdd08d 100644 --- a/packages/client/Common/Components/Streik.tsx +++ b/packages/client/Common/Components/Streik.tsx @@ -1,5 +1,5 @@ -import { Alert } from '@material-ui/lab'; -import { Snackbar } from '@material-ui/core'; +import { Alert } from '@mui/lab'; +import { Snackbar } from '@mui/material'; import { useCallback, useState } from 'react'; import type { FC } from 'react'; diff --git a/packages/client/Common/Components/ThemeHeaderTags.tsx b/packages/client/Common/Components/ThemeHeaderTags.tsx index 8e1c46969..1f63566c2 100644 --- a/packages/client/Common/Components/ThemeHeaderTags.tsx +++ b/packages/client/Common/Components/ThemeHeaderTags.tsx @@ -1,5 +1,5 @@ import { Helmet } from 'react-helmet-async'; -import { useTheme } from '@material-ui/core'; +import { useTheme } from '@mui/system'; import type { FC } from 'react'; export const ThemeHeaderTags: FC = () => { diff --git a/packages/client/Common/Components/Time.tsx b/packages/client/Common/Components/Time.tsx index 20aa1483c..b99f03b0d 100644 --- a/packages/client/Common/Components/Time.tsx +++ b/packages/client/Common/Components/Time.tsx @@ -1,27 +1,39 @@ /* eslint no-nested-ternary: 0 */ import { format, subMinutes } from 'date-fns'; -import { makeStyles } from '@material-ui/core'; import { useCommonConfig } from 'client/Common/provider/CommonConfigProvider'; -import clsx from 'clsx'; +import styled from '@emotion/styled'; import type { FC } from 'react'; -const useStyles = makeStyles((theme) => ({ - delayed: theme.mixins.delayed, - early: theme.mixins.early, - cancelled: theme.mixins.cancelled, - wrap: { +const DelayContainer = styled.span<{ early?: boolean; delayed?: boolean }>( + ({ theme, early }) => early && theme.mixins.early, + ({ theme, delayed }) => delayed && theme.mixins.delayed, +); + +const Container = styled(DelayContainer.withComponent('div'))<{ + alignEnd?: boolean; + multiLine?: boolean; + cancelled?: boolean; +}>( + { display: 'flex', }, - alignEnd: { - alignItems: 'flex-end', - }, - multiLineWrap: { - flexDirection: 'column', - }, - oneLine: { - marginRight: '.2em', - }, -})); + ({ alignEnd }) => + alignEnd && { + alignItems: 'flex-end', + }, + ({ multiLine }) => + multiLine && { + flexDirection: 'column', + }, + ({ theme, cancelled }) => cancelled && theme.mixins.cancelled, +); + +const TimeContainer = styled.span<{ oneLine?: boolean }>( + ({ oneLine }) => + oneLine && { + marginRight: '.2em', + }, +); interface Props { alignEnd?: boolean; @@ -50,7 +62,6 @@ export const Time: FC = ({ oneLine, cancelled, }) => { - const classes = useStyles(); const showOriginalTime = !useCommonConfig().time; if (!real) return null; @@ -59,33 +70,29 @@ export const Time: FC = ({ const hasDelay = showZero ? delay != null : Boolean(delay); return ( -
0 ? classes.delayed : classes.early), - { - [classes.alignEnd]: alignEnd, - [classes.multiLineWrap]: !oneLine, - [classes.cancelled]: cancelled, - }, + 0)} + early={Boolean( + !showOriginalTime && hasDelay && delay != null && delay <= 0, )} + alignEnd={alignEnd} + multiLine={!oneLine} + cancelled={cancelled} > - + {format(time, 'HH:mm')} - + {hasDelay && ( - 0 ? classes.delayed : classes.early), - )} + 0)} + early={Boolean(delay && delay <= 0)} data-testid="delay" > {delayString(delay as number)} - + )} -
+ ); }; diff --git a/packages/client/Common/Components/Zugsuche.tsx b/packages/client/Common/Components/Zugsuche.tsx index 4a81d29d6..d2489fc6b 100644 --- a/packages/client/Common/Components/Zugsuche.tsx +++ b/packages/client/Common/Components/Zugsuche.tsx @@ -4,11 +4,11 @@ import { DialogContent, DialogTitle, FormControl, - makeStyles, -} from '@material-ui/core'; -import { DatePicker } from '@material-ui/pickers'; + TextField, +} from '@mui/material'; +import { MobileDatePicker } from '@mui/lab'; import { NavigationContext } from './Navigation/NavigationContext'; -import { Search, Today, Train } from '@material-ui/icons'; +import { Search, Today, Train } from '@mui/icons-material'; import { stopPropagation } from 'client/Common/stopPropagation'; import { subHours } from 'date-fns'; import { useCallback, useContext, useState } from 'react'; @@ -16,44 +16,47 @@ import { useNavigate } from 'react-router'; import { useStorage } from 'client/useStorage'; import { ZugsucheAutocomplete } from 'client/Common/Components/ZugsucheAutocomplete'; import qs from 'qs'; +import styled from '@emotion/styled'; import type { FC, ReactElement, SyntheticEvent } from 'react'; import type { ParsedJourneyMatchResponse } from 'types/HAFAS/JourneyMatch'; -const useStyles = makeStyles({ - title: { - textAlign: 'center', - padding: '16px 24px 0 24px', - }, - content: { - minWidth: '40%', - }, - inputWrapper: { - position: 'relative', - display: 'flex', - justifyContent: 'space-between', - maxWidth: 240, - margin: '0 auto', - }, - datePicker: { - margin: 20, - }, - icon: { - position: 'absolute', - right: 20, - top: 39, - }, - searchButton: { - height: 45, - margin: 10, - width: '95%', - }, -}); +const Title = styled(DialogTitle)` + text-align: center; + padding: 16px 24px 0 24px; +`; + +const Content = styled(DialogContent)` + min-width: 40%; +`; + +const DateInputField = styled(TextField)` + margin: 20px; +`; +const TrainIcon = styled(Train)` + position: absolute; + right: 20px; + top: 39px; +`; +const TodayIcon = TrainIcon.withComponent(Today); + +const InputContainer = styled.div` + position: relative; + display: flex; + justify-content: space-between; + max-width: 240px; + margin: 0 auto; +`; + +const SearchButton = styled(Button)` + height: 45px; + margin: 10px; + width: 95%; +`; interface Props { children?: (toggle: (e: SyntheticEvent) => void) => ReactElement; } export const Zugsuche: FC = ({ children }) => { - const classes = useStyles(); const navigate = useNavigate(); const storage = useStorage(); const { toggleDrawer } = useContext(NavigationContext); @@ -104,36 +107,35 @@ export const Zugsuche: FC = ({ children }) => { return ( <> - Zugsuche - + Zugsuche +
-
- + } label="Datum" value={date} onChange={setDate} /> - -
-
+ + + - -
- +
-
+
{children?.(toggleModal)} diff --git a/packages/client/Common/Components/ZugsucheAutocomplete.tsx b/packages/client/Common/Components/ZugsucheAutocomplete.tsx index a591e8178..1052a9e87 100644 --- a/packages/client/Common/Components/ZugsucheAutocomplete.tsx +++ b/packages/client/Common/Components/ZugsucheAutocomplete.tsx @@ -1,28 +1,28 @@ import { journeyMatch } from 'client/Common/service/details'; import { Loading, LoadingType } from 'client/Common/Components/Loading'; -import { makeStyles, MenuItem, Paper, TextField } from '@material-ui/core'; +import { MenuItem, Paper, TextField } from '@mui/material'; import { useCallback, useState } from 'react'; import { useStorage } from 'client/useStorage'; import Axios from 'axios'; import debounce from 'debounce-promise'; import Downshift from 'downshift'; +import styled from '@emotion/styled'; import type { FC } from 'react'; import type { ParsedJourneyMatchResponse } from 'types/HAFAS/JourneyMatch'; const debouncedJourneyMatch = debounce(journeyMatch, 300); -const useStyles = makeStyles({ - loading: { - position: 'absolute', - top: 0, - right: '1.1em', - transform: 'scale(.5)', - }, - wrap: { - position: 'relative', - margin: 20, - }, -}); +const Container = styled.div` + position: relative; + margin: 20px; +`; + +const PositionedLoading = styled(Loading)` + position: absolute; + top: 0; + right: 1.1em; + transform: scale(0.5); +`; interface Props { initialDeparture?: Date; @@ -34,7 +34,6 @@ export const ZugsucheAutocomplete: FC = ({ initialDeparture = new Date(), onChange, }) => { - const classes = useStyles(); const [suggestions, setSuggestions] = useState( [], ); @@ -63,7 +62,7 @@ export const ZugsucheAutocomplete: FC = ({ ); return ( -
+ = ({ ); }} - {Boolean(loading) && ( - - )} -
+ {Boolean(loading) && } + ); }; diff --git a/packages/client/Common/Components/__tests__/StationLink.test.ts b/packages/client/Common/Components/__tests__/StationLink.test.ts index d955bb891..20fdc51e9 100644 --- a/packages/client/Common/Components/__tests__/StationLink.test.ts +++ b/packages/client/Common/Components/__tests__/StationLink.test.ts @@ -13,14 +13,4 @@ describe('StationLink', () => { expect(anchor).toHaveAttribute('href', '/test'); expect(anchor).toHaveTextContent('test'); }); - - it('passes extra props', () => { - render(StationLink, { - stationName: 'test', - // @ts-expect-error just for test - extra: 1, - }); - - expect(screen.queryByTestId('stationLink')).toHaveAttribute('extra', '1'); - }); }); diff --git a/packages/client/Common/Components/__tests__/__snapshots__/AuslastungsDisplay.test.ts.snap b/packages/client/Common/Components/__tests__/__snapshots__/AuslastungsDisplay.test.ts.snap index 794ec0786..22375b74d 100644 --- a/packages/client/Common/Components/__tests__/__snapshots__/AuslastungsDisplay.test.ts.snap +++ b/packages/client/Common/Components/__tests__/__snapshots__/AuslastungsDisplay.test.ts.snap @@ -1,45 +1,109 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`AuslastungsDisplay Gering / Hoch 1`] = ` +.emotion-0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + margin-bottom: 0.3em; +} + +.emotion-1 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + margin-right: 0.5em; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-2 { + font-size: .7em; + display: inline-block; + border-radius: 50%; + text-align: center; + padding: .2em; + line-height: 0; + background-color: #7cb342; + color: rgba(0, 0, 0, 0.87); +} + +.emotion-3 { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 1em; + height: 1em; + display: inline-block; + fill: currentColor; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + -webkit-transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + font-size: inherit; +} + +.emotion-5 { + font-size: .7em; + display: inline-block; + border-radius: 50%; + text-align: center; + padding: .2em; + line-height: 0; + background-color: #ffee58; + color: rgba(0, 0, 0, 0.87); +} +
1
2
1
2 @@ -105,45 +273,198 @@ exports[`AuslastungsDisplay SehrHoch / Ausgebucht 1`] = ` `; exports[`AuslastungsDisplay Unbekannt / Hoch 1`] = ` +.emotion-0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + margin-bottom: 0.3em; +} + +.emotion-0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + margin-bottom: 0.3em; +} + +.emotion-0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + margin-bottom: 0.3em; +} + +.emotion-1 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + margin-right: 0.5em; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-1 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + margin-right: 0.5em; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-1 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + margin-right: 0.5em; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-2 { + font-size: .7em; + display: inline-block; + border-radius: 50%; + text-align: center; + padding: .2em; + line-height: 0; +} + +.emotion-3 { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 1em; + height: 1em; + display: inline-block; + fill: currentColor; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + -webkit-transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + font-size: inherit; +} + +.emotion-3 { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 1em; + height: 1em; + display: inline-block; + fill: currentColor; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + -webkit-transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + font-size: inherit; +} + +.emotion-3 { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 1em; + height: 1em; + display: inline-block; + fill: currentColor; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + -webkit-transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + font-size: inherit; +} + +.emotion-5 { + font-size: .7em; + display: inline-block; + border-radius: 50%; + text-align: center; + padding: .2em; + line-height: 0; + background-color: #ffee58; + color: rgba(0, 0, 0, 0.87); +} + +.emotion-5 { + font-size: .7em; + display: inline-block; + border-radius: 50%; + text-align: center; + padding: .2em; + line-height: 0; + background-color: #ffee58; + color: rgba(0, 0, 0, 0.87); +} +
1
2
@@ -28,11 +352,58 @@ exports[`Loading returns children if isLoading is false 1`] = ` `; exports[`Loading shows loading if no children given (dots type) 1`] = ` +@keyframes animation-0 { + 0% { + top: 6px; + height: 51px; + } + + 50%, 100% { + top: 19px; + height: 26px; + } +} + +.emotion-0 { + display: inline-block; + position: relative; + width: 64px; + height: 64px; +} + +.emotion-0>div { + display: inline-block; + position: absolute; + left: 6px; + width: 13px; + background: #fff; + -webkit-animation: animation-0 1.2s cubic-bezier(0, 0.5, 0.5, 1) infinite; + animation: animation-0 1.2s cubic-bezier(0, 0.5, 0.5, 1) infinite; +} + +.emotion-0>div:nth-of-type(1) { + left: 6px; + -webkit-animation-delay: -0.24s; + animation-delay: -0.24s; +} + +.emotion-0>div:nth-of-type(2) { + left: 26px; + -webkit-animation-delay: -0.12s; + animation-delay: -0.12s; +} + +.emotion-0>div:nth-of-type(3) { + left: 45px; + -webkit-animation-delay: 0; + animation-delay: 0; +} +
@@ -43,11 +414,173 @@ exports[`Loading shows loading if no children given (dots type) 1`] = ` `; exports[`Loading shows loading if no children given 1`] = ` +@keyframes animation-0 { + 0%, 70%, 100% { + -webkit-transform: scale3d(1,1,1); + -moz-transform: scale3d(1,1,1); + -ms-transform: scale3d(1,1,1); + transform: scale3d(1,1,1); + } + + 35% { + -webkit-transform: scale3d(0,0,1); + -moz-transform: scale3d(0,0,1); + -ms-transform: scale3d(0,0,1); + transform: scale3d(0,0,1); + } +} + +@keyframes animation-0 { + 0%, 70%, 100% { + -webkit-transform: scale3d(1,1,1); + -moz-transform: scale3d(1,1,1); + -ms-transform: scale3d(1,1,1); + transform: scale3d(1,1,1); + } + + 35% { + -webkit-transform: scale3d(0,0,1); + -moz-transform: scale3d(0,0,1); + -ms-transform: scale3d(0,0,1); + transform: scale3d(0,0,1); + } +} + +.emotion-0 { + top: 0; + left: 0; + bottom: 0; + right: 0; + width: 35vmin; + height: 35vmin; + margin: auto; + position: absolute; +} + +.emotion-0>div { + width: 33%; + height: 33%; + background-color: #fff; + float: left; + -webkit-animation: animation-0 1.3s infinite ease-in-out; + animation: animation-0 1.3s infinite ease-in-out; +} + +.emotion-0>div:nth-of-type(1) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.emotion-0>div:nth-of-type(2) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} + +.emotion-0>div:nth-of-type(3) { + -webkit-animation-delay: 0.4s; + animation-delay: 0.4s; +} + +.emotion-0>div:nth-of-type(4) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; +} + +.emotion-0>div:nth-of-type(5) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.emotion-0>div:nth-of-type(6) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} + +.emotion-0>div:nth-of-type(7) { + -webkit-animation-delay: 0s; + animation-delay: 0s; +} + +.emotion-0>div:nth-of-type(8) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; +} + +.emotion-0>div:nth-of-type(9) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.emotion-0 { + top: 0; + left: 0; + bottom: 0; + right: 0; + width: 35vmin; + height: 35vmin; + margin: auto; + position: absolute; +} + +.emotion-0>div { + width: 33%; + height: 33%; + background-color: #fff; + float: left; + -webkit-animation: animation-0 1.3s infinite ease-in-out; + animation: animation-0 1.3s infinite ease-in-out; +} + +.emotion-0>div:nth-of-type(1) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.emotion-0>div:nth-of-type(2) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} + +.emotion-0>div:nth-of-type(3) { + -webkit-animation-delay: 0.4s; + animation-delay: 0.4s; +} + +.emotion-0>div:nth-of-type(4) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; +} + +.emotion-0>div:nth-of-type(5) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.emotion-0>div:nth-of-type(6) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} + +.emotion-0>div:nth-of-type(7) { + -webkit-animation-delay: 0s; + animation-delay: 0s; +} + +.emotion-0>div:nth-of-type(8) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; +} + +.emotion-0>div:nth-of-type(9) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} +
@@ -64,11 +597,92 @@ exports[`Loading shows loading if no children given 1`] = ` `; exports[`Loading shows loading instead of children if isLoading is given 1`] = ` +@keyframes animation-0 { + 0%, 70%, 100% { + -webkit-transform: scale3d(1,1,1); + -moz-transform: scale3d(1,1,1); + -ms-transform: scale3d(1,1,1); + transform: scale3d(1,1,1); + } + + 35% { + -webkit-transform: scale3d(0,0,1); + -moz-transform: scale3d(0,0,1); + -ms-transform: scale3d(0,0,1); + transform: scale3d(0,0,1); + } +} + +.emotion-0 { + top: 0; + left: 0; + bottom: 0; + right: 0; + width: 35vmin; + height: 35vmin; + margin: auto; + position: absolute; +} + +.emotion-0>div { + width: 33%; + height: 33%; + background-color: #fff; + float: left; + -webkit-animation: animation-0 1.3s infinite ease-in-out; + animation: animation-0 1.3s infinite ease-in-out; +} + +.emotion-0>div:nth-of-type(1) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.emotion-0>div:nth-of-type(2) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} + +.emotion-0>div:nth-of-type(3) { + -webkit-animation-delay: 0.4s; + animation-delay: 0.4s; +} + +.emotion-0>div:nth-of-type(4) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; +} + +.emotion-0>div:nth-of-type(5) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.emotion-0>div:nth-of-type(6) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} + +.emotion-0>div:nth-of-type(7) { + -webkit-animation-delay: 0s; + animation-delay: 0s; +} + +.emotion-0>div:nth-of-type(8) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; +} + +.emotion-0>div:nth-of-type(9) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} +
@@ -85,12 +699,255 @@ exports[`Loading shows loading instead of children if isLoading is given 1`] = ` `; exports[`Loading supports custom className 1`] = ` +@keyframes animation-0 { + 0%, 70%, 100% { + -webkit-transform: scale3d(1,1,1); + -moz-transform: scale3d(1,1,1); + -ms-transform: scale3d(1,1,1); + transform: scale3d(1,1,1); + } + + 35% { + -webkit-transform: scale3d(0,0,1); + -moz-transform: scale3d(0,0,1); + -ms-transform: scale3d(0,0,1); + transform: scale3d(0,0,1); + } +} + +@keyframes animation-0 { + 0%, 70%, 100% { + -webkit-transform: scale3d(1,1,1); + -moz-transform: scale3d(1,1,1); + -ms-transform: scale3d(1,1,1); + transform: scale3d(1,1,1); + } + + 35% { + -webkit-transform: scale3d(0,0,1); + -moz-transform: scale3d(0,0,1); + -ms-transform: scale3d(0,0,1); + transform: scale3d(0,0,1); + } +} + +@keyframes animation-0 { + 0%, 70%, 100% { + -webkit-transform: scale3d(1,1,1); + -moz-transform: scale3d(1,1,1); + -ms-transform: scale3d(1,1,1); + transform: scale3d(1,1,1); + } + + 35% { + -webkit-transform: scale3d(0,0,1); + -moz-transform: scale3d(0,0,1); + -ms-transform: scale3d(0,0,1); + transform: scale3d(0,0,1); + } +} + +.emotion-0 { + top: 0; + left: 0; + bottom: 0; + right: 0; + width: 35vmin; + height: 35vmin; + margin: auto; + position: absolute; +} + +.emotion-0>div { + width: 33%; + height: 33%; + background-color: #fff; + float: left; + -webkit-animation: animation-0 1.3s infinite ease-in-out; + animation: animation-0 1.3s infinite ease-in-out; +} + +.emotion-0>div:nth-of-type(1) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.emotion-0>div:nth-of-type(2) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} + +.emotion-0>div:nth-of-type(3) { + -webkit-animation-delay: 0.4s; + animation-delay: 0.4s; +} + +.emotion-0>div:nth-of-type(4) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; +} + +.emotion-0>div:nth-of-type(5) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.emotion-0>div:nth-of-type(6) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} + +.emotion-0>div:nth-of-type(7) { + -webkit-animation-delay: 0s; + animation-delay: 0s; +} + +.emotion-0>div:nth-of-type(8) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; +} + +.emotion-0>div:nth-of-type(9) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.emotion-0 { + top: 0; + left: 0; + bottom: 0; + right: 0; + width: 35vmin; + height: 35vmin; + margin: auto; + position: absolute; +} + +.emotion-0>div { + width: 33%; + height: 33%; + background-color: #fff; + float: left; + -webkit-animation: animation-0 1.3s infinite ease-in-out; + animation: animation-0 1.3s infinite ease-in-out; +} + +.emotion-0>div:nth-of-type(1) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.emotion-0>div:nth-of-type(2) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} + +.emotion-0>div:nth-of-type(3) { + -webkit-animation-delay: 0.4s; + animation-delay: 0.4s; +} + +.emotion-0>div:nth-of-type(4) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; +} + +.emotion-0>div:nth-of-type(5) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.emotion-0>div:nth-of-type(6) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} + +.emotion-0>div:nth-of-type(7) { + -webkit-animation-delay: 0s; + animation-delay: 0s; +} + +.emotion-0>div:nth-of-type(8) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; +} + +.emotion-0>div:nth-of-type(9) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.emotion-0 { + top: 0; + left: 0; + bottom: 0; + right: 0; + width: 35vmin; + height: 35vmin; + margin: auto; + position: absolute; +} + +.emotion-0>div { + width: 33%; + height: 33%; + background-color: #fff; + float: left; + -webkit-animation: animation-0 1.3s infinite ease-in-out; + animation: animation-0 1.3s infinite ease-in-out; +} + +.emotion-0>div:nth-of-type(1) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.emotion-0>div:nth-of-type(2) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} + +.emotion-0>div:nth-of-type(3) { + -webkit-animation-delay: 0.4s; + animation-delay: 0.4s; +} + +.emotion-0>div:nth-of-type(4) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; +} + +.emotion-0>div:nth-of-type(5) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.emotion-0>div:nth-of-type(6) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} + +.emotion-0>div:nth-of-type(7) { + -webkit-animation-delay: 0s; + animation-delay: 0s; +} + +.emotion-0>div:nth-of-type(8) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; +} + +.emotion-0>div:nth-of-type(9) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} +
diff --git a/packages/client/Common/Components/__tests__/__snapshots__/Platform.test.tsx.snap b/packages/client/Common/Components/__tests__/__snapshots__/Platform.test.tsx.snap index 05488dec3..863fbcf65 100644 --- a/packages/client/Common/Components/__tests__/__snapshots__/Platform.test.tsx.snap +++ b/packages/client/Common/Components/__tests__/__snapshots__/Platform.test.tsx.snap @@ -2,7 +2,7 @@ exports[`Platform No platform provided 1`] = `
( @@ -33,8 +47,26 @@ exports[`Platform scheduled !== real & cancelled 1`] = ` `; exports[`Platform scheduled !== real 1`] = ` +.emotion-0 { + color: #ff1744!important; +} + +.emotion-1 { + -webkit-text-decoration: line-through; + text-decoration: line-through; + text-decoration-color: #fff; + padding-left: .3em; +} + +.emotion-1 { + -webkit-text-decoration: line-through; + text-decoration: line-through; + text-decoration-color: #fff; + padding-left: .3em; +} +
( @@ -54,8 +86,14 @@ exports[`Platform scheduled !== real 1`] = ` `; exports[`Platform scheduled === real & cancelled 1`] = ` +.emotion-0 { + -webkit-text-decoration: line-through; + text-decoration: line-through; + text-decoration-color: #fff; +} +
13:55 @@ -16,17 +57,33 @@ exports[`Time does not show 0 delay number 1`] = ` exports[`Time no time 1`] = `null`; exports[`Time showOriginalTime = false 5 Minutes early 1`] = ` +.emotion-0 { + color: #7cb342; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-2 { + color: #7cb342; +} +
13:55 -5 @@ -35,17 +92,33 @@ exports[`Time showOriginalTime = false 5 Minutes early 1`] = ` `; exports[`Time showOriginalTime = false 10 Minutes delay 1`] = ` +.emotion-0 { + color: #ff1744; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-2 { + color: #ff1744; +} +
13:55 +10 @@ -54,17 +127,56 @@ exports[`Time showOriginalTime = false 10 Minutes delay 1`] = ` `; exports[`Time showOriginalTime = true 5 Minutes early 1`] = ` +.emotion-0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-2 { + color: #7cb342; +} + +.emotion-2 { + color: #7cb342; +} +
14:00 -5 @@ -73,17 +185,46 @@ exports[`Time showOriginalTime = true 5 Minutes early 1`] = ` `; exports[`Time showOriginalTime = true 10 Minutes delay 1`] = ` +.emotion-0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-2 { + color: #ff1744; +} + +.emotion-2 { + color: #ff1744; +} +
13:45 +10 @@ -92,17 +233,40 @@ exports[`Time showOriginalTime = true 10 Minutes delay 1`] = ` `; exports[`Time shows 0 delay number 1`] = ` +.emotion-0 { + color: #7cb342; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.emotion-0 { + color: #7cb342; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} +
13:55 +0 diff --git a/packages/client/Common/hooks/useToggleState.ts b/packages/client/Common/hooks/useToggleState.ts index b67a59da8..1328e55d8 100644 --- a/packages/client/Common/hooks/useToggleState.ts +++ b/packages/client/Common/hooks/useToggleState.ts @@ -1,8 +1,8 @@ -import { useMemo, useState } from 'react'; +import { useCallback, useState } from 'react'; export const useToggleState = (defaultValue = false): [boolean, () => void] => { const [state, setState] = useState(defaultValue); - const toggleState = useMemo(() => () => setState((old) => !old), []); + const toggleState = useCallback(() => setState((old) => !old), []); return [state, toggleState]; }; diff --git a/packages/client/Common/provider/ThemeProvider.tsx b/packages/client/Common/provider/ThemeProvider.tsx index fb68a4160..ce86444bc 100644 --- a/packages/client/Common/provider/ThemeProvider.tsx +++ b/packages/client/Common/provider/ThemeProvider.tsx @@ -25,25 +25,25 @@ export const [InnerThemeProvider, useTheme] = constate(useThemeInner); export const ThemeProvider: FC = ({ children }) => { const storage = useStorage(); const query = useQuery(); - let initialTheme = query.theme; - if (!initialTheme) { - // @ts-expect-error works - initialTheme = ThemeType[storage.get('theme')]; - if (!initialTheme) { - initialTheme = globalThis.matchMedia?.('(prefers-color-scheme: light)') - .matches - ? ThemeType.light - : ThemeType.dark; - if (initialTheme === ThemeType.light) { - storage.set('theme', initialTheme); + const initialTheme = useMemo(() => { + let theme = query.theme; + if (!theme) { + // @ts-expect-error works + theme = ThemeType[storage.get('theme')]; + if (!theme) { + theme = globalThis.matchMedia?.('(prefers-color-scheme: light)').matches + ? ThemeType.light + : ThemeType.dark; + if (theme === ThemeType.light) { + storage.set('theme', theme); + } } } - } + return (theme as ThemeType) || ThemeType.dark; + }, []); return ( - + {children} ); diff --git a/packages/client/Map/Components/ActivePolyline.tsx b/packages/client/Map/Components/ActivePolyline.tsx index b9dbb549d..797c4de3f 100644 --- a/packages/client/Map/Components/ActivePolyline.tsx +++ b/packages/client/Map/Components/ActivePolyline.tsx @@ -1,4 +1,3 @@ -import { makeStyles } from '@material-ui/core'; import { Marker, Polyline, Tooltip } from 'react-leaflet'; import { useMapProvider } from 'client/Map/provider/MapProvider'; import { useMemo } from 'react'; @@ -9,15 +8,7 @@ import icon from 'leaflet/dist/images/marker-icon.png'; import iconShadow from 'leaflet/dist/images/marker-shadow.png'; import L from 'leaflet'; -const useStyles = makeStyles({ - '@global': { - '.mapIcon': { - filter: 'hue-rotate(270deg)', - }, - }, -}); export const ActivePolyline: FC = () => { - useStyles(); const { activePolyline, activeJourney } = useMapProvider(); const trainIcon = useMemo( () => diff --git a/packages/client/Map/Components/MapSettings.tsx b/packages/client/Map/Components/MapSettings.tsx index 28b75c08a..db2154ffd 100644 --- a/packages/client/Map/Components/MapSettings.tsx +++ b/packages/client/Map/Components/MapSettings.tsx @@ -4,27 +4,24 @@ import { DialogContent, DialogTitle, FormControlLabel, - makeStyles, NativeSelect, Switch, -} from '@material-ui/core'; -import { Settings } from '@material-ui/icons'; -import { stopPropagation } from 'client/Common/stopPropagation'; +} from '@mui/material'; +import { Settings } from '@mui/icons-material'; import { useCallback } from 'react'; import { useMapProvider } from 'client/Map/provider/MapProvider'; import { useToggleState } from 'client/Common/hooks/useToggleState'; +import styled from '@emotion/styled'; import type { ChangeEvent, FC, SyntheticEvent } from 'react'; -const useStyles = makeStyles({ - settingsIcon: { - position: 'absolute', - top: '1em', - right: '1em', - color: 'black', - zIndex: 10000, - cursor: 'pointer', - }, -}); +const SettingsIcon = styled(Settings)` + position: absolute; + top: 1em; + right: 1em; + color: black; + z-index: 10000; + cursor: pointer; +`; interface FormSwitchLabelProps { checked: boolean; @@ -46,7 +43,6 @@ const FormSwitchLabel = ({ ); export const MapSettings: FC = () => { - const classes = useStyles(); const [open, toggleOpen] = useToggleState(); const onIconClick = useCallback( (e: SyntheticEvent) => { @@ -77,12 +73,8 @@ export const MapSettings: FC = () => { return ( <> - - + + Settings { - const classes = useStyles(); const query = useQuery(); const { setActiveJourney } = useMapProvider(); @@ -53,25 +50,22 @@ export const TrainMap: FC = () => { ); return ( - - {!query.noTiles && ( - <> - - - - )} - + <> + + {!query.noTiles && ( + <> + + + + )} + + + - - + ); }; diff --git a/packages/client/Map/index.tsx b/packages/client/Map/index.tsx index ba890e053..a2a93a308 100644 --- a/packages/client/Map/index.tsx +++ b/packages/client/Map/index.tsx @@ -1,5 +1,5 @@ import { MapProvider } from 'client/Map/provider/MapProvider'; -import { NoSsr } from '@material-ui/core'; +import { NoSsr } from '@mui/material'; import loadable from '@loadable/component'; import type { FC } from 'react'; diff --git a/packages/client/Regional/Components/MainPage.tsx b/packages/client/Regional/Components/MainPage.tsx index 3a481b88a..c9049ccfa 100644 --- a/packages/client/Regional/Components/MainPage.tsx +++ b/packages/client/Regional/Components/MainPage.tsx @@ -9,6 +9,6 @@ interface Props { export const RegionalMainPage: FC = ({ staticContext }) => ( - + ); diff --git a/packages/client/Routing/Components/Header.tsx b/packages/client/Routing/Components/Header.tsx index 651feec00..8a68bd5b4 100644 --- a/packages/client/Routing/Components/Header.tsx +++ b/packages/client/Routing/Components/Header.tsx @@ -1,50 +1,57 @@ import { BaseHeader } from 'client/Common/Components/BaseHeader'; -import { IconButton, makeStyles } from '@material-ui/core'; +import { Favorite, FavoriteBorder } from '@mui/icons-material'; +import { IconButton } from '@mui/material'; import { routingFavKey, useRoutingFavActions, useRoutingFavs, } from 'client/Routing/provider/RoutingFavProvider'; -import { Star, StarBorder } from '@material-ui/icons'; import { useCallback, useMemo } from 'react'; import { useRoutingConfig } from 'client/Routing/provider/RoutingConfigProvider'; +import styled from '@emotion/styled'; import type { FC } from 'react'; import type { MinimalStopPlace } from 'types/stopPlace'; import type { RoutingFav } from 'client/Routing/provider/RoutingFavProvider'; +function stripToMinimalStopPlace(stopPlace: MinimalStopPlace): MinimalStopPlace; function stripToMinimalStopPlace( - stopPlace: MinimalStopPlace, -): MinimalStopPlace { + stopPlace?: MinimalStopPlace, +): MinimalStopPlace | undefined; +function stripToMinimalStopPlace( + stopPlace?: MinimalStopPlace, +): MinimalStopPlace | undefined { + if (!stopPlace) return undefined; return { evaNumber: stopPlace.evaNumber, name: stopPlace.name, }; } -const useStyles = makeStyles((theme) => ({ - wrap: { - width: '100%', - display: 'grid', - gridTemplateColumns: '1fr max-content', - gridTemplateRows: '1fr 1fr', - gridTemplateAreas: '"s f" "d f"', - alignItems: 'center', - }, - start: { - gridArea: 's', - ...theme.mixins.singleLineText, - }, - destination: { +const Container = styled.div` + width: 100%; + display: grid; + grid-template-columns: 1fr max-content; + grid-template-rows: 1fr 1fr; + grid-template-areas: 's f' 'd f'; + align-items: center; +`; + +const StartName = styled.span(({ theme }) => theme.mixins.singleLineText, { + gridArea: 's', +}); + +const DestinationName = styled.span( + ({ theme }) => theme.mixins.singleLineText, + { gridArea: 'd', - ...theme.mixins.singleLineText, - }, - fav: { - gridArea: 'f', }, -})); +); + +const FavoriteButton = styled(IconButton)` + grid-area: f; +`; const InnerHeader = () => { - const classes = useStyles(); const { start, destination, via } = useRoutingConfig(); const favs = useRoutingFavs(); const { fav, unfav } = useRoutingFavActions(); @@ -77,19 +84,15 @@ const InnerHeader = () => { } return ( -
- {start?.name} - {destination?.name} + + {start?.name} + {destination?.name} {currentFav && ( - - {isFaved ? : } - + + {isFaved ? : } + )} -
+ ); }; diff --git a/packages/client/Routing/Components/RouteFavEntry.tsx b/packages/client/Routing/Components/RouteFavEntry.tsx index 706cb7ef8..d49c7be60 100644 --- a/packages/client/Routing/Components/RouteFavEntry.tsx +++ b/packages/client/Routing/Components/RouteFavEntry.tsx @@ -1,46 +1,47 @@ -import { AllowedHafasProfile } from 'types/HAFAS'; -import { Delete } from '@material-ui/icons'; +import { Delete } from '@mui/icons-material'; import { getRouteLink } from 'client/Routing/util'; import { Link } from 'react-router-dom'; -import { makeStyles, Paper } from '@material-ui/core'; +import { Paper } from '@mui/material'; import { routingFavKey, useRoutingFavActions, } from 'client/Routing/provider/RoutingFavProvider'; import { useCallback } from 'react'; +import styled from '@emotion/styled'; import type { FC, SyntheticEvent } from 'react'; import type { RoutingFav } from 'client/Routing/provider/RoutingFavProvider'; -const useStyles = makeStyles((theme) => ({ - wrap: { - padding: '.3em', - display: 'grid', - gridTempateColumns: 'max-content 1fr max-content max-content', - gridTemplateRows: '1fr 1fr', - gridTemplateAreas: '". s f r" "a d f r"', - alignItems: 'center', - flex: 1, - cursor: 'pointer', - '&:hover': { - backgroundColor: theme.palette.action.hover, - }, - }, - start: { - gridArea: 's', - }, - destination: { - gridArea: 'd', - }, - arrow: { - gridArea: 'a', - justifySelf: 'center', - marginRight: '1em', - }, - profile: { - gridArea: 'f', - }, - delete: { - gridArea: 'r', +const RemoveIcon = styled(Delete)` + grid-area: r; +`; + +const StartName = styled.span` + grid-area: s; +`; + +const DestinationName = styled.span` + grid-area: d; +`; + +const Arrow = styled.span` + grid-area: a; + justify-self: center; + margin-right: 1em; +`; + +const ContainerPaper = styled(Paper)(({ theme }) => ({ + padding: '.3em', + display: 'grid', + marginLeft: '1em', + marginRight: '1em', + gridTemplateColumns: 'max-content 1fr max-content', + gridTemplateRows: '1fr 1fr', + gridTemplateAreas: '". s r" "a d r"', + alignItems: 'center', + flex: 1, + cursor: 'pointer', + '&:hover': { + backgroundColor: theme.palette.action.hover, }, })); @@ -48,7 +49,6 @@ interface Props { fav: RoutingFav; } export const RouteFavEntry: FC = ({ fav }) => { - const classes = useStyles(); const { unfav } = useRoutingFavActions(); const removeFav = useCallback( (e: SyntheticEvent) => { @@ -64,25 +64,12 @@ export const RouteFavEntry: FC = ({ fav }) => { date-testid="RouteFavEntry" to={getRouteLink(fav.start, fav.destination, fav.via)} > - - {fav.start.name} - {fav.destination.name} - {'->'} - - {Object.keys(AllowedHafasProfile).find( - // @ts-expect-error works - (key) => AllowedHafasProfile[key] === fav.profile, - )} - - - + + {fav.start.name} + {fav.destination.name} + {'->'} + + ); }; diff --git a/packages/client/Routing/Components/RouteList/Route.tsx b/packages/client/Routing/Components/RouteList/Route.tsx index 6302f63af..3342a0fd5 100644 --- a/packages/client/Routing/Components/RouteList/Route.tsx +++ b/packages/client/Routing/Components/RouteList/Route.tsx @@ -1,9 +1,10 @@ import { formatDuration } from 'client/Routing/util'; -import { makeStyles, Paper } from '@material-ui/core'; +import { Paper } from '@mui/material'; import { PlannedType } from 'client/Common/Components/PlannedType'; import { RouteSegments } from './RouteSegments'; import { Time } from 'client/Common/Components/Time'; import { useMemo } from 'react'; +import styled from '@emotion/styled'; import type { FC, SyntheticEvent } from 'react'; import type { SingleRoute } from 'types/routing'; @@ -13,33 +14,33 @@ interface Props { onClick: (e: SyntheticEvent) => void; } -const useStyles = makeStyles({ - wrap: { - gridTemplateColumns: '2fr 2fr 2fr 2fr', - gridTemplateRows: '60px 20px', - display: 'grid', - marginBottom: '.2em', - alignItems: 'center', - minHeight: '3em', - }, - time: { - '& > span': { - marginRight: '.2em', - }, - }, - detailRouteSegments: { - textDecoration: 'initial', - overflow: 'hidden', - gridArea: '3 / 1 / 4 / 5', - }, - products: { - fontSize: '.9em', - gridArea: '2 / 1 / 3 / 5', - }, -}); +const Container = styled(Paper)` + grid-template-columns: 2fr 2fr 2fr 2fr; + grid-template-rows: 60px 20px; + display: grid; + margin-bottom: 0.2em; + align-items: center; + min-height: 3em; +`; + +const StyledTime = styled(Time)` + & > span { + margin-right: 0.2em; + } +`; + +const StyledRouteSegments = styled(RouteSegments)` + text-decoration: initial; + overflow: hidden; + grid-area: 3 / 1 / 4 / 5; +`; + +const Product = styled.span` + font-size: 0.9em; + grid-area: 2 / 1 / 3 / 5; +`; export const Route: FC = ({ route, detail, onClick }) => { - const classes = useStyles(); const segmentTypes = useMemo(() => { if (route.segmentTypes.length > 1) return route.segmentTypes.join(' - '); @@ -58,32 +59,16 @@ export const Route: FC = ({ route, detail, onClick }) => { }, [route]); return ( - - + ); }; diff --git a/packages/client/Routing/Components/RouteList/RouteHeader.tsx b/packages/client/Routing/Components/RouteList/RouteHeader.tsx index ac5af5f78..c6b04dc02 100644 --- a/packages/client/Routing/Components/RouteList/RouteHeader.tsx +++ b/packages/client/Routing/Components/RouteList/RouteHeader.tsx @@ -1,48 +1,46 @@ -import { Chip, makeStyles, Paper } from '@material-ui/core'; +import { Chip, Paper } from '@mui/material'; import { format } from 'date-fns'; +import styled from '@emotion/styled'; import type { FC } from 'react'; -const useStyles = makeStyles({ - wrap: { - gridTemplateColumns: '2fr 2fr 2fr 2fr', - gridTemplateRows: '60px 20px', - display: 'grid', - marginBottom: '.2em', - alignItems: 'center', - fontSize: '.8em', - }, - date: { - gridArea: '1 / 1 / 2 / 5', - textAlign: 'center', - marginBottom: 10, - }, - chip: { - fontSize: '1.4rem', - }, -}); +const Container = styled(Paper)` + grid-template-columns: 2fr 2fr 2fr 2fr; + grid-template-rows: 60px 20px; + display: grid; + margin-bottom: 0.2em; + align-items: center; + font-size: 0.8em; +`; + +const DateContainer = styled.span` + grid-area: 1 / 1 /2 / 5; + text-align: center; + margin-bottom: 10px; +`; + +const StyledChip = styled(Chip)` + font-size: 1.4rem; +`; interface Props { date: Date; } export const RouteHeader: FC = ({ date }) => { - const classes = useStyles(); - return ( - - - + + - + Ab An Dauer Umstiege - + ); }; diff --git a/packages/client/Routing/Components/RouteList/RouteSegment.tsx b/packages/client/Routing/Components/RouteList/RouteSegment.tsx index 901c46a4f..f45a6194a 100644 --- a/packages/client/Routing/Components/RouteList/RouteSegment.tsx +++ b/packages/client/Routing/Components/RouteList/RouteSegment.tsx @@ -1,46 +1,55 @@ +import { css } from '@emotion/react'; import { JnySegmentTrain } from './SegmentTrainComponent/JnySegmentTrain'; -import { makeStyles } from '@material-ui/core'; import { Platform } from 'client/Common/Components/Platform'; import { Time } from 'client/Common/Components/Time'; import { WalkSegmentTrain } from './SegmentTrainComponent/WalkSegmentTrain'; +import styled from '@emotion/styled'; import type { FC, MouseEvent } from 'react'; import type { Route$JourneySegment } from 'types/routing'; -const useStyles = makeStyles((theme) => ({ - wrap: { - backgroundColor: theme.colors.shadedBackground, - padding: '.4em', - display: 'grid', - gridTemplateColumns: '2fr 7fr 1fr', - gridTemplateRows: '1fr auto 1fr', - gridTemplateAreas: '"dt dn dp" "t t t" "at an ap"', - margin: '1em 0', - }, - departureTime: { - gridArea: 'dt', - }, - departureName: { - gridArea: 'dn', - }, - departurePlatform: { - gridArea: 'dp', - }, - arrivalTime: { - gridArea: 'at', - }, - arrivalName: { - gridArea: 'an', - }, - arrivalPlatform: { - gridArea: 'ap', - }, - segment: { - margin: '.5em 0', - gridArea: 't', - alignSelf: 'center', - paddingLeft: '.3em', - overflow: 'hidden', - }, +const DepartureTime = styled(Time)` + grid-area: dt; +`; + +const DepartureName = styled.span` + grid-area: dn; +`; + +const DeparturePlatform = styled(Platform)` + grid-area: dp; +`; + +const ArrivalTime = styled(Time)` + grid-area: at; +`; + +const ArrivalName = styled.span` + grid-area: an; +`; + +const ArrivalPlatform = styled(Platform)` + grid-area: ap; +`; + +const segmentCss = css` + margin: 0.5em 0; + grid-area: t; + align-self: center; + padding-left: 0.3em; +`; + +const JourneySegment = styled(JnySegmentTrain)(segmentCss); + +const WalkSegment = styled(WalkSegmentTrain)(segmentCss); + +const Container = styled.div(({ theme }) => ({ + backgroundColor: theme.colors.shadedBackground, + padding: '.4em', + display: 'grid', + gridTemplateColumns: '2fr 7fr 1fr', + gridTemplateRows: '1fr auto 1fr', + gridTemplateAreas: '"dt dn dp" "t t t" "at an ap"', + margin: '1em 0', })); interface Props { @@ -50,53 +59,42 @@ interface Props { } export const RouteSegment: FC = ({ segment, detail, onTrainClick }) => { - const classes = useStyles(); - return ( <> -
-
+ {'changeDuration' in segment && ( {segment.changeDuration} Minuten Umsteigezeit )} diff --git a/packages/client/Routing/Components/RouteList/SegmentTrainComponent/JnySegmentTrain.tsx b/packages/client/Routing/Components/RouteList/SegmentTrainComponent/JnySegmentTrain.tsx index 106896618..46ab68de7 100644 --- a/packages/client/Routing/Components/RouteList/SegmentTrainComponent/JnySegmentTrain.tsx +++ b/packages/client/Routing/Components/RouteList/SegmentTrainComponent/JnySegmentTrain.tsx @@ -2,10 +2,9 @@ import { AuslastungsDisplay } from 'client/Common/Components/AuslastungsDisplay' import { DetailsLink } from 'client/Common/Components/Details/DetailsLink'; import { PlannedType } from 'client/Common/Components/PlannedType'; import { Reihung } from 'client/Common/Components/Reihung'; +import { segmentStyles } from './style'; import { StopList } from 'client/Routing/Components/RouteList/StopList'; -import { Tooltip } from '@material-ui/core'; -import { useStyles } from './style'; -import clsx from 'clsx'; +import { Tooltip } from '@mui/material'; import type { FC, MouseEvent } from 'react'; import type { Route$JourneySegmentTrain } from 'types/routing'; @@ -21,8 +20,6 @@ export const JnySegmentTrain: FC = ({ className, detail, }) => { - const classes = useStyles(); - const tooltipTitle = segment.train.number && segment.train.number && @@ -32,8 +29,8 @@ export const JnySegmentTrain: FC = ({ return (
-
- +
+ @@ -45,7 +42,7 @@ export const JnySegmentTrain: FC = ({ - + {segment.finalDestination} = ({
{detail && ( <> - {segment.departure.reihung && segment.train.number && ( + {segment.train.number && ( )} - + )}
diff --git a/packages/client/Routing/Components/RouteList/SegmentTrainComponent/WalkSegmentTrain.tsx b/packages/client/Routing/Components/RouteList/SegmentTrainComponent/WalkSegmentTrain.tsx index 0e842ec4f..da1576623 100644 --- a/packages/client/Routing/Components/RouteList/SegmentTrainComponent/WalkSegmentTrain.tsx +++ b/packages/client/Routing/Components/RouteList/SegmentTrainComponent/WalkSegmentTrain.tsx @@ -1,6 +1,5 @@ +import { segmentStyles } from './style'; import { stopPropagation } from 'client/Common/stopPropagation'; -import { useStyles } from './style'; -import clsx from 'clsx'; import type { FC } from 'react'; import type { Route$JourneySegmentWalk } from 'types/routing'; @@ -10,15 +9,14 @@ interface Props { } export const WalkSegmentTrain: FC = ({ segment, className }) => { - const classes = useStyles(); const mapsLink = `https://www.google.com/maps/dir/?api=1&origin=${segment.segmentStart.coordinates.lat},${segment.segmentStart.coordinates.lng}&destination=${segment.segmentDestination.coordinates.lat},${segment.segmentDestination.coordinates.lng}&travelmode=walking`; return (
-
- {segment.train.name} +
+ {segment.train.name} = ({ stops, product }) => { - const classes = useStyles(); - +export const StopList: FC = ({ stops }) => { return stops ? ( -
- {stops.map((s, i) => ( - + + {stops.map((s) => ( + ))} -
+ ) : null; }; diff --git a/packages/client/Routing/Components/RouteList/index.tsx b/packages/client/Routing/Components/RouteList/index.tsx index 48b41e942..18447ebfd 100644 --- a/packages/client/Routing/Components/RouteList/index.tsx +++ b/packages/client/Routing/Components/RouteList/index.tsx @@ -1,4 +1,4 @@ -import { Button, makeStyles } from '@material-ui/core'; +import { Button } from '@mui/material'; import { Fragment, useCallback, useState } from 'react'; import { isSameDay } from 'date-fns'; import { Loading } from 'client/Common/Components/Loading'; @@ -7,6 +7,7 @@ import { RouteFavList } from 'client/Routing/Components/RouteFavList'; import { RouteHeader } from './RouteHeader'; import { useFetchRouting } from 'client/Routing/provider/useFetchRouting'; import { useRouting } from 'client/Routing/provider/RoutingProvider'; +import styled from '@emotion/styled'; import type { FC } from 'react'; const translateError = (e: any) => { @@ -22,23 +23,21 @@ const translateError = (e: any) => { return String(e); }; -const useStyles = makeStyles({ - button: { - height: 45, - margin: 10, - flex: 1, - }, - wrap: { - display: 'flex', - flexDirection: 'column', - '& > div': { - padding: '0 .5em 0 .1em', - }, - }, -}); +const Container = styled.div` + display: flex; + flex-direction: column; + & > div { + padding: 0 0.5em 0 0.1em; + } +`; + +const StyledButton = styled(Button)` + height: 45px; + margin: 10px; + flex: 1; +`; export const RouteList: FC = () => { - const classes = useStyles(); const { routes, error, earlierContext, laterContext } = useRouting(); const { fetchContext } = useFetchRouting(); const [detail, setDetail] = useState(); @@ -56,26 +55,25 @@ export const RouteList: FC = () => { }, [fetchContext]); if (error) { - return
{translateError(error)}
; + return {translateError(error)}; } if (!routes) return ; if (!routes.length) return ; return ( -
+ {earlierContext && (loadingEarlier ? ( ) : ( - + ))} {routes .filter((r) => r.isRideable) @@ -99,15 +97,14 @@ export const RouteList: FC = () => { (loadingLater ? ( ) : ( - + ))} -
+ ); }; diff --git a/packages/client/Routing/Components/RoutesMain.tsx b/packages/client/Routing/Components/RoutesMain.tsx index 24b8db4da..ff09a3c07 100644 --- a/packages/client/Routing/Components/RoutesMain.tsx +++ b/packages/client/Routing/Components/RoutesMain.tsx @@ -1,10 +1,10 @@ import { format } from 'date-fns'; -import { makeStyles } from '@material-ui/core'; import { RouteList } from './RouteList'; import { Search } from './Search'; import { useEffect } from 'react'; import { useHeaderTagsActions } from 'client/Common/provider/HeaderTagProvider'; import { useRoutingConfig } from 'client/Routing/provider/RoutingConfigProvider'; +import styled from '@emotion/styled'; import type { FC } from 'react'; const RouteHeaderTags = () => { @@ -30,25 +30,22 @@ const RouteHeaderTags = () => { } @ ${format(date || Date.now(), 'HH:mm dd.MM.yy')}`, ); } - }); + }, [start, destination, via, date]); return null; }; -const useStyles = makeStyles({ - wrap: { - marginLeft: '.5em', - marginRight: '.5em', - }, -}); +const Container = styled.main` + margin-left: 0.5em; + margin-right: 0.5em; +`; export const RoutesMain: FC = () => { - const classes = useStyles(); return ( -
+ -
+ ); }; diff --git a/packages/client/Routing/Components/Search/SettingsPanel.tsx b/packages/client/Routing/Components/Search/SettingsPanel.tsx index 13001538c..f5e50a57c 100644 --- a/packages/client/Routing/Components/Search/SettingsPanel.tsx +++ b/packages/client/Routing/Components/Search/SettingsPanel.tsx @@ -5,53 +5,56 @@ import { Badge, Chip, FormControlLabel, - makeStyles, Switch, TextField, -} from '@material-ui/core'; +} from '@mui/material'; import { AllInclusive, Cached, ExpandMore, Timelapse, Train, -} from '@material-ui/icons'; +} from '@mui/icons-material'; +import { css } from '@emotion/react'; import { useCallback, useMemo } from 'react'; import { useRoutingConfigActions, useRoutingSettings, } from 'client/Routing/provider/RoutingConfigProvider'; +import styled from '@emotion/styled'; import type { ChangeEvent, FC } from 'react'; import type { RoutingSettings } from 'client/Routing/provider/RoutingConfigProvider'; -const useStyles = makeStyles({ - accordion: { - margin: '0!important', - boxShadow: 'none', - }, - summary: { - '& > div:first-child': { - margin: '22px 0 !important', - display: 'flex', - justifyContent: 'space-around', - }, - }, - details: { - flexDirection: 'column', - }, - label: { - marginLeft: 0, - '& * + span': { - flex: 1, - }, - }, - input: { - width: '3.2em', - }, -}); +const StyledAccordion = styled(Accordion)` + margin: 0 !important; + box-shadow: none; +`; + +const StyledAccordionSummary = styled(AccordionSummary)` + & > div:first-of-type { + margin: 22px 0 !important; + display: flex; + justify-content: space-around; + } +`; + +const StyledAccordionDetails = styled(AccordionDetails)` + flex-direction: column; + display: flex; +`; + +const FormLabel = styled(FormControlLabel)` + margin-left: 0; + & * + span { + flex: 1; + } +`; + +const inputCss = css` + width: 3.2em; +`; export const SettingsPanel: FC = () => { - const classes = useStyles(); const settings = useRoutingSettings(); const { updateSettings } = useRoutingConfigActions(); const handleInputChange = useCallback( @@ -75,9 +78,8 @@ export const SettingsPanel: FC = () => { }, [settings.maxChanges]); return ( - - + } > @@ -101,14 +103,13 @@ export const SettingsPanel: FC = () => { label={settings.onlyRegional ? 'Nahverkehr' : 'Alle Zuege'} icon={} /> - - - + + { } label="Max Umstiege" /> - { } label="Min Umstiegszeit" /> - { } label="Nur Regionalzüge" /> - - + + ); }; diff --git a/packages/client/Routing/Components/Search/index.tsx b/packages/client/Routing/Components/Search/index.tsx index b78497c0c..5c065fae8 100644 --- a/packages/client/Routing/Components/Search/index.tsx +++ b/packages/client/Routing/Components/Search/index.tsx @@ -8,17 +8,15 @@ import { startOfDay, subDays, } from 'date-fns'; -import { Button, Divider, makeStyles } from '@material-ui/core'; -import { DateTimePicker } from '@material-ui/pickers'; +import { Button, Divider, TextField } from '@mui/material'; import { - Delete, FavoriteBorder, Search as SearchIcon, - SwapVert, Today, -} from '@material-ui/icons'; +} from '@mui/icons-material'; import { getRouteLink } from 'client/Routing/util'; import { getStopPlaceFromAPI } from 'client/Common/service/stopPlaceSearch'; +import { MobileDateTimePicker } from '@mui/lab'; import { SettingsPanel } from './SettingsPanel'; import { StopPlaceSearch } from 'client/Common/Components/StopPlaceSearch'; import { useCallback, useEffect, useMemo } from 'react'; @@ -29,6 +27,7 @@ import { useRoutingConfigActions, } from 'client/Routing/provider/RoutingConfigProvider'; import deLocale from 'date-fns/locale/de'; +import styled from '@emotion/styled'; import type { FC, SyntheticEvent } from 'react'; import type { MinimalStopPlace } from 'types/stopPlace'; @@ -42,56 +41,55 @@ const setStopPlaceById = async ( } }; -const useStyles = makeStyles((theme) => ({ - destination: { - display: 'flex', +const DateTimePickerContainer = styled.div` + position: relative; +`; + +const TodayIcon = styled(Today)` + top: 50%; + right: 0; + position: absolute; + transform: translateY(-50%); +`; + +const Destination = styled.div` + display: flex; +`; + +const Buttons = styled.div(({ theme }) => ({ + display: 'flex', + margin: '15px 0 1em', + '& > button:nth-of-type(1)': { + flex: 2, }, - datePickerWrap: { - position: 'relative', + '& > button:nth-of-type(2)': { + flex: 1, }, - dateTimePicker: { - '& input': { - paddingRight: 10, - }, - }, - buttons: { + '& > button': { + margin: '0 10px', + height: 50, + fontSize: '1rem', display: 'flex', - margin: '15px 0 1em', - '& > button:nth-child(1)': { - flex: 2, - }, - '& > button:nth-child(2)': { - flex: 1, - }, - '& > button': { - margin: '0 10px', - height: 50, - fontSize: '1rem', - display: 'flex', - justifyContent: 'space-between', - padding: '5px 20px', - color: theme.palette.text.primary, - }, - }, - todayIcon: { - top: '50%', - right: 0, - position: 'absolute', - transform: 'translateY(-50%)', + justifyContent: 'space-between', + padding: '5px 20px', + color: theme.palette.text.primary, }, })); +const DateTimePickerInput = styled(TextField)` + width: 100%; +`; + export const Search: FC = () => { - const classes = useStyles(); - const { setStart, setDestination, swapStartDestination, updateVia, setDate } = + const { setStart, setDestination, updateVia, setDate, setVia } = useRoutingConfigActions(); - const { start, destination, date, via } = useRoutingConfig(); + const { start, destination, date, via, touchedDate } = useRoutingConfig(); const { fetchRoutes, clearRoutes } = useFetchRouting(); const params = useParams<'start' | 'destination' | 'date' | 'via'>(); - const formatDate = useCallback((date: null | Date) => { - if (!date) { + const formattedDate = useMemo(() => { + if (!touchedDate) { return `Jetzt (Heute ${lightFormat(new Date(), 'HH:mm')})`; } const today = startOfDay(new Date()); @@ -117,7 +115,7 @@ export const Search: FC = () => { relativeDayString += ` ${lightFormat(date, 'HH:mm')}`; return relativeDayString; - }, []); + }, [touchedDate, date]); const navigate = useNavigate(); @@ -141,11 +139,11 @@ export const Search: FC = () => { if (params.via) { const viaStations = params.via.split('|').filter(Boolean); - viaStations.forEach((viaId, index) => { - void setStopPlaceById(viaId, (stopPlace) => { - updateVia(index, stopPlace); - }); - }); + void Promise.all(viaStations.map(getStopPlaceFromAPI)).then( + (resolvedVias) => { + setVia(resolvedVias.filter(Boolean)); + }, + ); } }, [params.via, updateVia]); @@ -169,7 +167,6 @@ export const Search: FC = () => { onChange={(s) => updateVia(index, s)} value={v} key={index} - additionalIcon={ updateVia(index)} />} /> )), [updateVia, via], @@ -193,41 +190,39 @@ export const Search: FC = () => { /> )}
-
+ - } /> -
-
- + + ( + + )} onChange={setDate} - cancelLabel="Abbrechen" - autoOk clearable - clearLabel="Jetzt" minutesStep={5} + toolbarTitle="" /> - -
+ + -
+ -
+ ); diff --git a/packages/client/Routing/index.tsx b/packages/client/Routing/index.tsx index 57df04f56..1e100e98c 100644 --- a/packages/client/Routing/index.tsx +++ b/packages/client/Routing/index.tsx @@ -1,29 +1,24 @@ import { Header } from './Components/Header'; -import { makeStyles } from '@material-ui/core'; import { RoutingConfigProvider } from 'client/Routing/provider/RoutingConfigProvider'; import { RoutingFavProvider } from 'client/Routing/provider/RoutingFavProvider'; import { RoutingRoutes } from 'client/Routing/RoutingRoutes'; +import styled from '@emotion/styled'; import type { FC } from 'react'; -const useStyles = makeStyles({ - wrap: { - display: 'flex', - flexDirection: 'column', - }, -}); +const Container = styled.div` + display: flex; + flex-direction: column; +`; -export const Routing: FC = () => { - const classes = useStyles(); - return ( - - -
-
- -
-
-
- ); -}; +export const Routing: FC = () => ( + + + +
+ + + + +); // eslint-disable-next-line import/no-default-export export default Routing; diff --git a/packages/client/Routing/provider/RoutingConfigProvider.tsx b/packages/client/Routing/provider/RoutingConfigProvider.tsx index 3892ac241..241d084c0 100644 --- a/packages/client/Routing/provider/RoutingConfigProvider.tsx +++ b/packages/client/Routing/provider/RoutingConfigProvider.tsx @@ -18,7 +18,8 @@ const useRoutingConfigInternal = ({ const [start, setStart] = useState(); const [destination, setDestination] = useState(); const [via, setVia] = useState([]); - const [date, setDate] = useState(null); + const [date, setDate] = useState(new Date()); + const [touchedDate, setTouchedDate] = useState(false); const [settings, setSettings] = useState(initialSettings); const storage = useStorage(); @@ -61,15 +62,25 @@ const useRoutingConfigInternal = ({ [destination, start], ); + const setDateWithTouched = useCallback((date: Date | null) => { + setTouchedDate(Boolean(date)); + if (!date) { + date = new Date(); + } + setDate(date); + }, []); + return { start, setStart, destination, setDestination, date, - setDate, + setDate: setDateWithTouched, + touchedDate, via, updateVia, + setVia, swapStartDestination, settings, updateSetting, @@ -88,6 +99,7 @@ export const [ destination: v.destination, date: v.date, via: v.via, + touchedDate: v.touchedDate, }), (v) => v.settings, (v) => ({ @@ -95,6 +107,7 @@ export const [ setDestination: v.setDestination, setDate: v.setDate, updateVia: v.updateVia, + setVia: v.setVia, swapStartDestination: v.swapStartDestination, updateSettings: v.updateSetting, }), diff --git a/packages/client/Routing/provider/useFetchRouting.ts b/packages/client/Routing/provider/useFetchRouting.ts index 243ef6d06..6845152f0 100644 --- a/packages/client/Routing/provider/useFetchRouting.ts +++ b/packages/client/Routing/provider/useFetchRouting.ts @@ -18,7 +18,7 @@ export const useFetchRouting = () => { laterContext, setError, } = useRouting(); - const { start, destination, date, via } = useRoutingConfig(); + const { start, destination, date, via, touchedDate } = useRoutingConfig(); const settings = useRoutingSettings(); const commonRouteSettings = useMemo( @@ -27,7 +27,7 @@ export const useFetchRouting = () => { ? { start: start?.evaNumber, destination: destination?.evaNumber, - via: via.map((v) => ({ + via: via.filter(Boolean).map((v) => ({ evaId: v.evaNumber, })), ...settings, @@ -46,7 +46,7 @@ export const useFetchRouting = () => { try { const routingResult = ( await Axios.post('/api/hafas/v3/tripSearch', { - time: date || new Date(), + time: touchedDate ? date : new Date(), ...routeSettings, }) ).data; diff --git a/packages/client/ServerBaseComponent.tsx b/packages/client/ServerBaseComponent.tsx index 3357ab628..35ad3f1b0 100644 --- a/packages/client/ServerBaseComponent.tsx +++ b/packages/client/ServerBaseComponent.tsx @@ -3,6 +3,8 @@ import { StaticRouter } from 'react-router-dom/server'; import { StorageContext } from 'client/useStorage'; import { ThemeProvider } from 'client/Common/provider/ThemeProvider'; import { ThemeWrap } from 'client/ThemeWrap'; +import React from 'react'; +import type { EmotionCache } from '@emotion/react'; import type { ReactElement } from 'react'; import type { StorageInterface } from 'client/Common/Storage'; @@ -10,23 +12,25 @@ interface Props { helmetContext: any; url: string; storage: StorageInterface; - sheetsRegistry: any; + emotionCache: EmotionCache; } export function ServerBaseComponent({ helmetContext, url, storage, - sheetsRegistry, + emotionCache, }: Props): ReactElement { return ( - - - - - - - - - + + + + + + + + + + + ); } diff --git a/packages/client/ThemeWrap.tsx b/packages/client/ThemeWrap.tsx index 10a714836..65d660374 100644 --- a/packages/client/ThemeWrap.tsx +++ b/packages/client/ThemeWrap.tsx @@ -1,49 +1,47 @@ import { App } from './App'; -import { - createGenerateClassName, - StylesProvider, - ThemeProvider, -} from '@material-ui/core'; -import { MuiPickersUtilsProvider } from '@material-ui/pickers'; +import { CacheProvider } from '@emotion/react'; +import { LocalizationProvider } from '@mui/lab'; +import { StyledEngineProvider } from '@mui/material'; import { ThemeHeaderTags } from 'client/Common/Components/ThemeHeaderTags'; -import { useMemo } from 'react'; +import { ThemeProvider } from '@mui/material'; import { useTheme } from 'client/Common/provider/ThemeProvider'; -import DateFnsUtils from '@date-io/date-fns'; +import AdapterDateFns from '@mui/lab/AdapterDateFns'; +import createEmotionCache from '@emotion/cache'; import deLocale from 'date-fns/locale/de'; +import type { EmotionCache } from '@emotion/react'; import type { ReactElement, ReactNode } from 'react'; -import type { SheetsRegistry } from 'jss'; interface Props { children?: ReactNode; - sheetsRegistry?: SheetsRegistry; - generateClassName?: ReturnType; + // generateClassName?: ReturnType; + emotionCache?: EmotionCache; } export const ThemeWrap = ({ children = , - sheetsRegistry, - generateClassName, + // generateClassName, + emotionCache = createEmotionCache({ + key: 'css', + }), }: Props): ReactElement => { const { theme } = useTheme(); - const classNameGenerator = useMemo( - () => generateClassName || createGenerateClassName(), - // eslint-disable-next-line react-hooks/exhaustive-deps - [], - ); + // const classNameGenerator = useMemo( + // () => generateClassName || createGenerateClassName(), + // // eslint-disable-next-line react-hooks/exhaustive-deps + // [], + // ); return ( - - - - - {children} - - - + + + + + + {children} + + + + ); }; diff --git a/packages/client/Themes/colors.ts b/packages/client/Themes/colors.ts index 6e8dd31e8..76807f09f 100644 --- a/packages/client/Themes/colors.ts +++ b/packages/client/Themes/colors.ts @@ -6,9 +6,9 @@ import { orange, red, yellow, -} from '@material-ui/core/colors'; +} from '@mui/material/colors'; import { ThemeType } from './type'; -import type { Theme as MuiTheme } from '@material-ui/core'; +import type { Theme } from '@mui/material'; interface Colors { red: string; @@ -20,9 +20,11 @@ interface Colors { transparentBackground: string; } -export function getColors(theme: MuiTheme, themeType: ThemeType): Colors { +export function getColors(theme: Theme, themeType: ThemeType): Colors { const backgroundAugment = theme.palette.augmentColor({ - main: theme.palette.background.default, + color: { + main: theme.palette.background.default, + }, }); switch (themeType) { diff --git a/packages/client/Themes/index.ts b/packages/client/Themes/index.ts index b48c55a22..e4e7323b0 100644 --- a/packages/client/Themes/index.ts +++ b/packages/client/Themes/index.ts @@ -1,24 +1,21 @@ -import { createTheme as createMuiTheme } from './mui'; +import { createMuiTheme } from './mui'; import { getColors } from './colors'; // eslint-disable-next-line import/no-unresolved +import { css } from '@mui/material'; import type { Theme as MaruTheme } from 'maru'; -import type { Theme as MuiTheme } from '@material-ui/core'; +import type { Theme as MuiTheme } from '@mui/material'; import type { ThemeType } from './type'; -declare module '@material-ui/styles/defaultTheme' { - interface DefaultTheme extends MaruTheme, MuiTheme {} -} - -declare module '@material-ui/core/styles/createTheme' { +type MaruMixins = MaruTheme['mixins']; +declare module '@mui/material/styles/createTheme' { interface Theme extends MaruTheme {} } -type MaruMixins = MaruTheme['mixins']; -declare module '@material-ui/core/styles/createMixins' { - interface Mixins extends MaruMixins {} +declare module '@emotion/react' { + interface Theme extends MuiTheme {} } -export const createTheme = (themeType: ThemeType): MuiTheme & MaruTheme => { +export const createTheme = (themeType: ThemeType): MuiTheme => { const mui = createMuiTheme(themeType); const colors = getColors(mui, themeType); @@ -51,8 +48,12 @@ export const createTheme = (themeType: ThemeType): MuiTheme & MaruTheme => { const maruTheme = { colors, mixins: { - ...mixins, ...mui.mixins, + ...Object.keys(mixins).reduce((m, mixinKey) => { + // @ts-expect-error workaround for now + m[mixinKey] = css(mixins[mixinKey]); + return m; + }, {}), }, }; diff --git a/packages/client/Themes/mui.ts b/packages/client/Themes/mui.ts index 40d47273a..8ed1114c2 100644 --- a/packages/client/Themes/mui.ts +++ b/packages/client/Themes/mui.ts @@ -1,20 +1,8 @@ -import { blue } from '@material-ui/core/colors'; -import { createTheme as createMuiTheme } from '@material-ui/core'; +import { blue, purple } from '@mui/material/colors'; +import { createTheme } from '@mui/material'; import { ThemeType } from './type'; -import deepMerge from 'deepmerge'; -import type { MuiPickersOverrides } from '@material-ui/pickers/typings/overrides'; -import type { Theme as MuiTheme } from '@material-ui/core'; -import type { ThemeOptions } from '@material-ui/core/styles/createTheme'; - -declare module '@material-ui/core/styles/overrides' { - export interface ComponentNameToClassKey extends MuiPickersOverrides {} -} - -declare module '@material-ui/core/styles/shape' { - export interface Shape { - headerSpacing: number; - } -} +import type { Mixins as MaruMixins } from 'maru'; +import type { Theme, ThemeOptions } from '@mui/material'; const getPaletteType = (themeType: ThemeType) => { switch (themeType) { @@ -26,72 +14,101 @@ const getPaletteType = (themeType: ThemeType) => { } }; +declare module '@mui/system/createTheme/shape' { + export interface Shape { + headerSpacing: number; + } +} + +declare module '@mui/material/styles/createMixins' { + export interface Mixins extends MaruMixins {} +} + const headerSpacing = 54; -const getMuiOptions = (themeType: ThemeType) => { - const commonOptions: ThemeOptions = { + +const primaryColor = { + [ThemeType.dark]: blue[700], + [ThemeType.black]: blue[800], + [ThemeType.light]: blue[400], +}; + +const backgroundColor = { + [ThemeType.dark]: '#303030', + [ThemeType.black]: '#000000', + [ThemeType.light]: '#fafafa', +}; + +const secondaryColor = { + [ThemeType.dark]: purple.A400, + [ThemeType.black]: purple.A400, + [ThemeType.light]: purple[400], +}; + +const overrides = { + [ThemeType.black]: { + MuiPaper: { + styleOverrides: { + elevation1: { + backgroundColor: 'inherit', + backgroundImage: 'unset', + boxShadow: '0 1px 0 rgba(120, 120, 120, 0.5)', + }, + }, + }, + }, +}; + +const getMuiOptions = (themeType: ThemeType): ThemeOptions => { + return { palette: { - type: getPaletteType(themeType), + background: { + default: backgroundColor[themeType], + }, + primary: { + main: primaryColor[themeType], + }, + secondary: { + main: secondaryColor[themeType], + }, + mode: getPaletteType(themeType), }, shape: { headerSpacing, }, - overrides: { - MuiPickersModal: { - withAdditionalAction: { - color: 'red', + components: { + MuiTextField: { + defaultProps: { + variant: 'standard', }, }, MuiToolbar: { - regular: { - minHeight: `${headerSpacing}px!important`, + styleOverrides: { + regular: { + minHeight: `${headerSpacing}px!important`, + }, + }, + }, + MuiAppBar: { + styleOverrides: { + root: { + backgroundImage: 'unset', + }, }, }, MuiPaper: { - elevation1: { - backgroundColor: 'inherit', - boxShadow: '0 1px 0 rgba(0, 0, 0, 0.24)', + styleOverrides: { + elevation1: { + backgroundColor: 'inherit', + backgroundImage: 'unset', + boxShadow: '0 1px 0 rgba(0, 0, 0, 0.24)', + }, }, }, + // @ts-expect-error undefined works if index doesnt exist + ...overrides[themeType], }, }; - - switch (themeType) { - case ThemeType.black: - return deepMerge(commonOptions, { - palette: { - background: { - default: '#000000', - }, - primary: { - main: blue[800], - }, - }, - overrides: { - MuiPaper: { - elevation1: { - boxShadow: '0 1px 0 rgba(120, 120, 120, 0.5)', - }, - }, - }, - }); - case ThemeType.dark: - return deepMerge(commonOptions, { - palette: { - primary: { - main: blue[700], - }, - }, - }); - case ThemeType.light: - return deepMerge(commonOptions, { - palette: { - primary: { - main: blue[400], - }, - }, - }); - } }; -export const createTheme = (themeType: ThemeType): MuiTheme => - createMuiTheme(getMuiOptions(themeType)); +export const createMuiTheme = (themeType: ThemeType): Theme => + createTheme(getMuiOptions(themeType)); diff --git a/packages/client/__tests__/testHelper.tsx b/packages/client/__tests__/testHelper.tsx index e1c30e42d..35a3e9be7 100644 --- a/packages/client/__tests__/testHelper.tsx +++ b/packages/client/__tests__/testHelper.tsx @@ -12,12 +12,11 @@ import { ThemeWrap } from 'client/ThemeWrap'; import Cookies from 'universal-cookie'; import type { CommonConfig } from 'client/Common/config'; import type { ComponentProps, ComponentType } from 'react'; -import type { DefaultTheme } from '@material-ui/styles'; import type { Location } from 'history'; -import type { Rule, StyleSheet } from 'jss'; +import type { Theme } from '@mui/material'; let currentThemeType: ThemeType; -let theme: DefaultTheme; +let theme: Theme; interface ContextWithOptions extends React.Context { initialState?: V; @@ -44,12 +43,12 @@ const LocationHelper = ({ children }: any) => { return children; }; -const generateClassName = (rule: Rule, sheet?: StyleSheet) => { - // @ts-expect-error sheet wrongly typed - const name = `${sheet.options.name}-${rule.key}`; +// const generateClassName = (rule: Rule, sheet?: StyleSheet) => { +// // @ts-expect-error sheet wrongly typed +// const name = `${sheet.options.name}-${rule.key}`; - return name; -}; +// return name; +// }; export function render>( Comp: CP, @@ -57,7 +56,7 @@ export function render>( { withNavigation, context, commonConfig, provider }: Options = {}, ): Omit, 'container'> & { container: ChildNode | null; - theme: DefaultTheme; + theme: Theme; cookies: Cookies; getLocation: () => Location; } { @@ -103,7 +102,7 @@ export function render>( - + {result} diff --git a/packages/client/index.tsx b/packages/client/index.tsx index c4890c1cd..c4435b8e8 100644 --- a/packages/client/index.tsx +++ b/packages/client/index.tsx @@ -7,6 +7,7 @@ import { StorageContext } from 'client/useStorage'; import { ThemeProvider } from 'client/Common/provider/ThemeProvider'; import { ThemeWrap } from './ThemeWrap'; import Axios from 'axios'; +import React from 'react'; import type { ComponentType } from 'react'; // 15s timeout Axios.defaults.timeout = 15000; @@ -36,15 +37,17 @@ Axios.defaults.transformResponse = [ const storage = new ClientStorage(); const renderApp = (App: ComponentType) => ( - - - - - - - - - + + + + + + + + + + + ); const container = document.getElementById('app'); diff --git a/packages/client/jest.config.json b/packages/client/jest.config.json index 0f02f8a48..f2c304afd 100644 --- a/packages/client/jest.config.json +++ b/packages/client/jest.config.json @@ -12,5 +12,6 @@ "./__tests__/setup.ts", "@testing-library/jest-dom/extend-expect" ], - "testMatch": ["**/__tests__/**/?(*.)+(spec|test).[jt]s?(x)"] + "testMatch": ["**/__tests__/**/?(*.)+(spec|test).[jt]s?(x)"], + "snapshotSerializers": ["@emotion/jest/serializer"] } diff --git a/packages/client/package.json b/packages/client/package.json index 59950b44f..0e732dd6f 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -9,19 +9,17 @@ "lint": "eslint --ext .js,.jsx,.ts,.tsx ." }, "dependencies": { - "@date-io/core": "^1.3.13", - "@date-io/date-fns": "^1.3.13", + "@emotion/react": "^11.7.0", + "@emotion/styled": "^11.6.0", "@loadable/component": "^5.15.0", - "@material-ui/core": "^4.12.3", - "@material-ui/icons": "^4.11.2", - "@material-ui/lab": "^4.0.0-alpha.60", - "@material-ui/pickers": "^3.3.10", + "@mui/icons-material": "^5.2.1", + "@mui/lab": "^5.0.0-alpha.59", + "@mui/material": "^5.2.3", + "@mui/system": "^5.2.3", "axios": "^0.24.0", - "clsx": "^1.1.1", "constate": "^3.3.0", "date-fns": "^2.27.0", "debounce-promise": "^3.1.2", - "deepmerge": "^4.2.2", "downshift": "^6.1.7", "leaflet": "^1.7.1", "qs": "^6.10.2", diff --git a/packages/server/API/controller/Hafas/experimental.ts b/packages/server/API/controller/Hafas/experimental.ts index 3bc2b7a50..b78f5b9a9 100644 --- a/packages/server/API/controller/Hafas/experimental.ts +++ b/packages/server/API/controller/Hafas/experimental.ts @@ -109,7 +109,7 @@ export class HafasExperimentalController extends Controller { .map((departure) => StationBoardToTimetables(departure, mappedHafasArrivals, idSet), ) - .filter(Boolean as unknown as ExcludesFalse) + .filter(Boolean) .slice(0, 75), wings: {}, }; diff --git a/packages/server/StopPlace/search.ts b/packages/server/StopPlace/search.ts index 9f24537ca..d160c509b 100644 --- a/packages/server/StopPlace/search.ts +++ b/packages/server/StopPlace/search.ts @@ -66,7 +66,7 @@ export async function irisFilter( } }), ) - ).filter(Boolean as unknown as ExcludesFalse); + ).filter(Boolean); } export async function searchStopPlace( diff --git a/packages/server/cache.ts b/packages/server/cache.ts index 65f636aec..5702f3fed 100644 --- a/packages/server/cache.ts +++ b/packages/server/cache.ts @@ -1,6 +1,5 @@ import { logger } from 'server/logger'; import cacheManager from 'cache-manager'; -import redisStore from 'cache-manager-ioredis'; import type { Cache } from 'cache-manager'; const redisSettings = process.env.REDIS_HOST @@ -75,7 +74,7 @@ export function createNewCache( if (useRedis) { baseCache = cacheManager.caching({ ...redisSettings, - store: redisStore, + store: require('cache-manager-ioredis'), ttl, db, max: 10000, diff --git a/packages/server/iris/Timetable.ts b/packages/server/iris/Timetable.ts index 928d061c7..76a22fb70 100644 --- a/packages/server/iris/Timetable.ts +++ b/packages/server/iris/Timetable.ts @@ -433,7 +433,7 @@ export default class Timetable { ); parsedMessages - .filter(Boolean as unknown as ExcludesFalse) + .filter(Boolean) .sort((a, b) => compareAsc(a.message.timestamp || 0, b.message.timestamp || 0), ) diff --git a/packages/server/middleware/webpackDev.ts b/packages/server/middleware/webpackDev.ts index 05805ae14..086923b6c 100644 --- a/packages/server/middleware/webpackDev.ts +++ b/packages/server/middleware/webpackDev.ts @@ -68,7 +68,7 @@ export default function webpackDev(koa: Koa): Promise { koa.use((ctx, next) => { return new Promise((resolve, reject) => { - middleware( + void middleware( ctx.req, { // @ts-expect-error ??? diff --git a/packages/server/package.json b/packages/server/package.json index 2c0237170..d3ac3ce84 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -10,6 +10,7 @@ "doc:build": "tsoa spec-and-routes && node ../../scripts/adjustSpecJson" }, "dependencies": { + "@emotion/server": "^11.4.0", "@koa/router": "^10.1.1", "@loadable/component": "^5.15.0", "@loadable/server": "^5.15.1", @@ -28,7 +29,6 @@ "ejs": "^3.1.6", "google-polyline": "^1.0.3", "iconv-lite": "^0.6.3", - "jss": "^10.9.0", "koa": "^2.13.4", "koa-bodyparser": "^4.3.0", "koa-static": "^5.0.0", diff --git a/packages/server/render.tsx b/packages/server/render.tsx index d46326699..629fb412f 100644 --- a/packages/server/render.tsx +++ b/packages/server/render.tsx @@ -3,7 +3,8 @@ import { ChunkExtractor } from '@loadable/server'; import { renderToString } from 'react-dom/server'; import { sanitizeStorage } from 'server/sanitizeStorage'; import { ServerBaseComponent } from 'client/ServerBaseComponent'; -import { SheetsRegistry } from 'jss'; +import createEmotionCache from '@emotion/cache'; +import createEmotionServer from '@emotion/server/create-instance'; import ejs from 'ejs'; import fs from 'fs'; import path from 'path'; @@ -26,6 +27,12 @@ const footerEjs = fs const footerTemplate = ejs.compile(footerEjs); export default (ctx: Context): void => { + const emotionCache = createEmotionCache({ + key: 'css', + }); + // eslint-disable-next-line @typescript-eslint/unbound-method + const { extractCriticalToChunks, constructStyleTagsFromChunks } = + createEmotionServer(emotionCache); const extractor = new ChunkExtractor({ stats: ctx.loadableStats }); const selectedDetail = ctx.query.selectedDetail; @@ -58,25 +65,27 @@ export default (ctx: Context): void => { }); const context: any = {}; - const sheets = new SheetsRegistry(); const App = extractor.collectChunks( , ); // eslint-disable-next-line testing-library/render-result-naming-convention const app = renderToString(App); + const emotionChunks = extractCriticalToChunks(app); + const emotionCss = constructStyleTagsFromChunks(emotionChunks); ctx.body = headerTemplate({ + withStats: process.env.NODE_ENV === 'production', header: context.helmet, cssTags: extractor.getStyleTags(), linkTags: extractor.getLinkTags(), configOverride: JSON.stringify(globalThis.configOverride), imprint: JSON.stringify(globalThis.IMPRINT), - jssCss: sheets.toString(), + emotionCss, baseUrl: globalThis.BASE_URL, rawBaseUrl: globalThis.RAW_BASE_URL, }); diff --git a/packages/server/sanitizeStorage.ts b/packages/server/sanitizeStorage.ts index 36b2fb511..dcba1823e 100644 --- a/packages/server/sanitizeStorage.ts +++ b/packages/server/sanitizeStorage.ts @@ -35,8 +35,8 @@ function sanitizeFavs( if (modified) storage.set(storageKey, favs); } -function isCurrentFormatFav(stop: MinimalStopPlace): boolean { - return Boolean(stop.evaNumber && stop.name); +function isCurrentFormatFav(stop?: MinimalStopPlace): boolean { + return Boolean(stop && stop.evaNumber && stop.name); } function migrateOldFav(oldFav: any): MinimalStopPlace { diff --git a/packages/server/views/header.ejs b/packages/server/views/header.ejs index 031865401..7c3371167 100644 --- a/packages/server/views/header.ejs +++ b/packages/server/views/header.ejs @@ -1,7 +1,9 @@ - + <% if (withStats) { %> + + <% } %> @@ -44,9 +46,7 @@ U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } - <% if (jssCss) {%> - - <%}%> + <%- emotionCss %> <% if (cssTags) {%> <%- cssTags %> <%}%> diff --git a/scripts/getBabelConfig.js b/scripts/getBabelConfig.js index 9727ad140..d4a04a138 100644 --- a/scripts/getBabelConfig.js +++ b/scripts/getBabelConfig.js @@ -16,9 +16,6 @@ const getBabelConfig = (type) => { const serverModuleResolver = isServer ? { extensions: ['.js', '.jsx', '.web.ts', '.ts', '.tsx'], - alias: { - classnames: 'clsx', - }, } : undefined; @@ -32,7 +29,7 @@ const getBabelConfig = (type) => { '@loadable/babel-plugin', ['@babel/plugin-proposal-decorators', { legacy: true }], 'babel-plugin-parameter-decorator', - './scripts/babelTransform/debugStyleNames.js', + // './scripts/babelTransform/debugStyleNames.js', [ 'module-resolver', { @@ -92,6 +89,7 @@ const getBabelConfig = (type) => { '@babel/preset-react', { runtime: 'automatic', + importSource: '@emotion/react', }, ], ], @@ -103,7 +101,13 @@ const getBabelConfig = (type) => { env: { production: { compact: true, - plugins: ['babel-plugin-jsx-remove-data-test-id'], + plugins: ['@emotion', 'babel-plugin-jsx-remove-data-test-id'], + }, + development: { + plugins: ['@emotion'], + }, + testProduction: { + plugins: ['@emotion'], }, }, }; diff --git a/tsconfig.json b/tsconfig.json index 1c2a2ca66..b129ee4ca 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -24,7 +24,13 @@ "baseUrl": "./packages/", "paths": { "@sinonjs/fake-timers": ["../node_modules/@types/sinonjs__fake-timers"] - } + }, + "plugins": [ + { + "name": "typescript-styled-plugin" + } + ], + "jsxImportSource": "@emotion/react" }, "include": ["@types", "./packages"] } diff --git a/webpack.config.js b/webpack.config.js index c287fa4b5..a75d869b7 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -76,7 +76,7 @@ if (isDev) { optimization.splitChunks = { cacheGroups: { vendor: { - test: /[\\/]node_modules[\\/](axios|react|react-dom|react-router|react-router-dom|@material-ui|jss|downshift|date-fns)[\\/]/, + test: /[\\/]node_modules[\\/](axios|react|react-dom|react-router|react-router-dom|@mui|@emotion|downshift|date-fns)[\\/]/, name: 'vendor', chunks: 'all', }, @@ -113,7 +113,6 @@ module.exports = { modules: ['node_modules'], extensions: ['.ts', '.tsx', '.json', '.web.ts', '.js', '.jsx'], alias: { - classnames$: 'clsx', 'lodash-es$': 'lodash', }, }, diff --git a/yarn.lock b/yarn.lock index 113349c08..6af240a72 100644 --- a/yarn.lock +++ b/yarn.lock @@ -62,17 +62,17 @@ __metadata: linkType: hard "@babel/core@npm:^7.1.0, @babel/core@npm:^7.11.1, @babel/core@npm:^7.12.3, @babel/core@npm:^7.16.0, @babel/core@npm:^7.7.2, @babel/core@npm:^7.7.5": - version: 7.16.0 - resolution: "@babel/core@npm:7.16.0" + version: 7.16.5 + resolution: "@babel/core@npm:7.16.5" dependencies: "@babel/code-frame": ^7.16.0 - "@babel/generator": ^7.16.0 - "@babel/helper-compilation-targets": ^7.16.0 - "@babel/helper-module-transforms": ^7.16.0 - "@babel/helpers": ^7.16.0 - "@babel/parser": ^7.16.0 + "@babel/generator": ^7.16.5 + "@babel/helper-compilation-targets": ^7.16.3 + "@babel/helper-module-transforms": ^7.16.5 + "@babel/helpers": ^7.16.5 + "@babel/parser": ^7.16.5 "@babel/template": ^7.16.0 - "@babel/traverse": ^7.16.0 + "@babel/traverse": ^7.16.5 "@babel/types": ^7.16.0 convert-source-map: ^1.7.0 debug: ^4.1.0 @@ -80,18 +80,18 @@ __metadata: json5: ^2.1.2 semver: ^6.3.0 source-map: ^0.5.0 - checksum: a140f669daa90c774016a76b1f85641975333c1c219ae0a8e65d8b4c316836e918276e0dfd55613b14f8e578406a92393d4368a63bdd5d0708122976ee2ee8e3 + checksum: e5b76c6be95ab56a441772173463a56f824b39eba5fd3efe4b9784863922a1cb8abde6331d894854ed563b5ffe4be76d52524ecd07963660bb146f49a3cb3556 languageName: node linkType: hard -"@babel/generator@npm:^7.16.0, @babel/generator@npm:^7.7.2": - version: 7.16.0 - resolution: "@babel/generator@npm:7.16.0" +"@babel/generator@npm:^7.16.5, @babel/generator@npm:^7.7.2": + version: 7.16.5 + resolution: "@babel/generator@npm:7.16.5" dependencies: "@babel/types": ^7.16.0 jsesc: ^2.5.1 source-map: ^0.5.0 - checksum: 9ff53e0db72a225c8783c4a277698b4efcead750542ebb9cff31732ba62d092090715a772df10a323446924712f6928ad60c03db4e7051bed3a9701b552d51fb + checksum: 621fa2da21a5397a4739f03af1eda76140f0da9f962071640a479c0cf1859edc576aa8881b5771be9274238f048bf9024c94d826003659f64eee29c48f2fe470 languageName: node linkType: hard @@ -104,17 +104,17 @@ __metadata: languageName: node linkType: hard -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.16.0" +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.16.5" dependencies: "@babel/helper-explode-assignable-expression": ^7.16.0 "@babel/types": ^7.16.0 - checksum: 01beb9f3f2285b7b170cc167ec79b2fd657202cb25be9cb111951f94a04c97c5b446dd1498ede32f0052d67fc9f2f2ac2b7862351b364fe94f9b4de98488d863 + checksum: c351f534205aba6eff063692bb410d8484d568947b94df3f6f86396a1bd009156692e448cbee747442df29c53ac2f444d7a324861579762833665f5de04c9c62 languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.16.0, @babel/helper-compilation-targets@npm:^7.16.3": +"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.16.3": version: 7.16.3 resolution: "@babel/helper-compilation-targets@npm:7.16.3" dependencies: @@ -128,19 +128,20 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/helper-create-class-features-plugin@npm:7.16.0" +"@babel/helper-create-class-features-plugin@npm:^7.16.0, @babel/helper-create-class-features-plugin@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/helper-create-class-features-plugin@npm:7.16.5" dependencies: "@babel/helper-annotate-as-pure": ^7.16.0 + "@babel/helper-environment-visitor": ^7.16.5 "@babel/helper-function-name": ^7.16.0 - "@babel/helper-member-expression-to-functions": ^7.16.0 + "@babel/helper-member-expression-to-functions": ^7.16.5 "@babel/helper-optimise-call-expression": ^7.16.0 - "@babel/helper-replace-supers": ^7.16.0 + "@babel/helper-replace-supers": ^7.16.5 "@babel/helper-split-export-declaration": ^7.16.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: 0f7d1b8d413e5fbd719c95e22e3b59749b4c6c652f20e0fa1fa954112145a134c22709f1325574632d7262aeeeaaf4fc7c2eb8117e0d521e42b36d05c3e5a885 + checksum: f558098f8297c1fb4d824bffd099f285af35bb6ca3080701e1da3f88b21ab9a94fd444603175ba186762eb2c2ef8197416faafeacd2a82aab1b7c4a233c765a8 languageName: node linkType: hard @@ -174,6 +175,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-environment-visitor@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/helper-environment-visitor@npm:7.16.5" + dependencies: + "@babel/types": ^7.16.0 + checksum: f57da613f2fb9ca0b85cb4a9131cb688555e78ba8b0047ac0e73551b247eb71bf8fa075e6408064e8ab71ec230f24b4e06367efc9ccd1dcfcea0efe0086f02f3 + languageName: node + linkType: hard + "@babel/helper-explode-assignable-expression@npm:^7.16.0": version: 7.16.0 resolution: "@babel/helper-explode-assignable-expression@npm:7.16.0" @@ -212,12 +222,12 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/helper-member-expression-to-functions@npm:7.16.0" +"@babel/helper-member-expression-to-functions@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/helper-member-expression-to-functions@npm:7.16.5" dependencies: "@babel/types": ^7.16.0 - checksum: 58ef8e3a4af0c1dc43a2011f43f25502877ac1c5aa9a4a6586f0265ab857b65831f60560044bc9380df43c91ac21cad39a84095b91764b433d1acf18d27e38d6 + checksum: 54d061e0f77fc7b4c338aca4c53104f5074126c23a702e6320dac39c4f99ee7ea07962824256b6b18f1202ea3c23d4e388b23a846df65550896398f65675d397 languageName: node linkType: hard @@ -230,19 +240,19 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/helper-module-transforms@npm:7.16.0" +"@babel/helper-module-transforms@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/helper-module-transforms@npm:7.16.5" dependencies: + "@babel/helper-environment-visitor": ^7.16.5 "@babel/helper-module-imports": ^7.16.0 - "@babel/helper-replace-supers": ^7.16.0 "@babel/helper-simple-access": ^7.16.0 "@babel/helper-split-export-declaration": ^7.16.0 "@babel/helper-validator-identifier": ^7.15.7 "@babel/template": ^7.16.0 - "@babel/traverse": ^7.16.0 + "@babel/traverse": ^7.16.5 "@babel/types": ^7.16.0 - checksum: a3d0e5556f26ebdf2ae422af3b9a1ba1848fead891f46bcd1c6a4be88ad8e9f348140f81d1843a3481574be1643a9c79b01469231f5b5801f5d5e691efdd11f3 + checksum: 0463e7198e5540cbb90981f769c89ec302001b211c33df1a6790a1eaee678ec418cee40ef3cf0fe159d40787214fbba129582f6b07e79244dc8cbcd5e791dd18 languageName: node linkType: hard @@ -255,33 +265,34 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.13.0, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.14.5 - resolution: "@babel/helper-plugin-utils@npm:7.14.5" - checksum: fe20e90a24d02770a60ebe80ab9f0dfd7258503cea8006c71709ac9af1aa3e47b0de569499673f11ea6c99597f8c0e4880ae1d505986e61101b69716820972fe +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.13.0, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": + version: 7.16.5 + resolution: "@babel/helper-plugin-utils@npm:7.16.5" + checksum: 3ff605f879a9ed287952b538a8334bb16e6cf7cf441f205713b1cf8043b047a965773b66e50575018504f349e16368acfe4702a2f376e16263733e2c7c6c3e39 languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.16.0, @babel/helper-remap-async-to-generator@npm:^7.16.4": - version: 7.16.4 - resolution: "@babel/helper-remap-async-to-generator@npm:7.16.4" +"@babel/helper-remap-async-to-generator@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/helper-remap-async-to-generator@npm:7.16.5" dependencies: "@babel/helper-annotate-as-pure": ^7.16.0 - "@babel/helper-wrap-function": ^7.16.0 + "@babel/helper-wrap-function": ^7.16.5 "@babel/types": ^7.16.0 - checksum: debe997695fe2c11813e88b2fa4afc89d4543f72457dda00c7296a728cd5eeb81d4ef8607a5fef7823da410a8579407c631a430e5bfc78290172ff6fc430355c + checksum: 85195707465fc9fe87b1ce67490c7e7a58ea980444f8a34d156a0e09bf3148a66b245b1425e4f4fa13d3a6eb09395943cae52df57bc4296d7eb6d3bc3cb0c3ff languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/helper-replace-supers@npm:7.16.0" +"@babel/helper-replace-supers@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/helper-replace-supers@npm:7.16.5" dependencies: - "@babel/helper-member-expression-to-functions": ^7.16.0 + "@babel/helper-environment-visitor": ^7.16.5 + "@babel/helper-member-expression-to-functions": ^7.16.5 "@babel/helper-optimise-call-expression": ^7.16.0 - "@babel/traverse": ^7.16.0 + "@babel/traverse": ^7.16.5 "@babel/types": ^7.16.0 - checksum: 61f04bbe05ff0987d5a8d5253cb101d47004a27951d6c5cd95457e30fcb3adaca85f0bcaa7f31f4d934f22386b935ac7281398c68982d4a4768769d95c028460 + checksum: 7eb2cba87a6c4d9c7a8d0951b70eb19007e37bfbba61e1087f847fb263b21e13cc659d6ce29c0ccd00f9870e26131c1e09a0f01afcd10f6cb792dc9d8db147bc languageName: node linkType: hard @@ -326,26 +337,26 @@ __metadata: languageName: node linkType: hard -"@babel/helper-wrap-function@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/helper-wrap-function@npm:7.16.0" +"@babel/helper-wrap-function@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/helper-wrap-function@npm:7.16.5" dependencies: "@babel/helper-function-name": ^7.16.0 "@babel/template": ^7.16.0 - "@babel/traverse": ^7.16.0 + "@babel/traverse": ^7.16.5 "@babel/types": ^7.16.0 - checksum: 2bb4e05f49cf217cc5890581284a051245ba0ddaccbe3ddd662010d7a6969f52d2027e310d26db2e030273c5fe9341448c7845fcb4795ad8eb56bdeabec148b8 + checksum: fd53491bb27b9939604f1a1d2b7ef64aff582257e77991406b42ef1656e0e3bd8368e63413af3115fb0308ed5919c8d06f39deea430eaeef36b3802416cd4aa7 languageName: node linkType: hard -"@babel/helpers@npm:^7.16.0": - version: 7.16.3 - resolution: "@babel/helpers@npm:7.16.3" +"@babel/helpers@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/helpers@npm:7.16.5" dependencies: "@babel/template": ^7.16.0 - "@babel/traverse": ^7.16.3 + "@babel/traverse": ^7.16.5 "@babel/types": ^7.16.0 - checksum: b725b1aab734e9e1407247ee499880583855843fa2855377a2c26277bd9fbd7080219109189bc69b18d71cc30759666bfe66d534729b41452097866d1f5a66ef + checksum: 960d938a4359b7f9ff7b753e33b6f600e269aec0ef6030c8026ac37525103da8cde5f1c04ce7de1ad6fc37707aa6178eae938d6fc82544aa25c9fd602c62e0a8 languageName: node linkType: hard @@ -360,12 +371,12 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.16.0, @babel/parser@npm:^7.16.3, @babel/parser@npm:^7.7.2": - version: 7.16.4 - resolution: "@babel/parser@npm:7.16.4" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.16.0, @babel/parser@npm:^7.16.5, @babel/parser@npm:^7.7.2": + version: 7.16.6 + resolution: "@babel/parser@npm:7.16.6" bin: parser: ./bin/babel-parser.js - checksum: ce0a8f92f440f2a12bc932f070a7b60c5133bf8a63f461841f9e39af0194f573707959d606c6fad1a2fd496a45148553afd9b74d3b8dd36cdb7861598d1f3e36 + checksum: 5cbb01a7b2ba5d609945099bfadb01f54e11ef85201e1e0bf47010ee1b35c257eca6ff91606c6ce8adba82a95e180b583183e4dc076f4a70e706152075dd98ca languageName: node linkType: hard @@ -393,204 +404,204 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-async-generator-functions@npm:^7.16.4": - version: 7.16.4 - resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.16.4" +"@babel/plugin-proposal-async-generator-functions@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - "@babel/helper-remap-async-to-generator": ^7.16.4 + "@babel/helper-plugin-utils": ^7.16.5 + "@babel/helper-remap-async-to-generator": ^7.16.5 "@babel/plugin-syntax-async-generators": ^7.8.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: dcd5a76ee12eacee93440e021a7e4a8e53b5d13d26c8fd7d412fc83341a1633a949bef1ef94301ae753164d39d303cb01b59234e6b48205377ca1d041f670ba5 + checksum: b57649dd33174a13b8e379b70dc6f2c2cc42d8d97befbc8c3eeed211f9060479d4f48ae096826fcd0b247497c18efb97672760b3b4c04fa1ae086fbb15c1fe7e languageName: node linkType: hard -"@babel/plugin-proposal-class-properties@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-proposal-class-properties@npm:7.16.0" +"@babel/plugin-proposal-class-properties@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-proposal-class-properties@npm:7.16.5" dependencies: - "@babel/helper-create-class-features-plugin": ^7.16.0 - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-create-class-features-plugin": ^7.16.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b1665ced553e5cdb95eec2fda321cb226c5f255edd1a94b226b9d81e97e026472184b6898af26f2bb9ee64101fad1afe215b6fc469d3103dec78c55e732e49aa + checksum: 2a58b1a43e2625f1345c45f3cc8a4976d80f67c00a95933c692512d9d3b18cd1323ab3676a3562f4afa70be93dccacb5276da1cf209f5ebc8b46bf63aba36d27 languageName: node linkType: hard -"@babel/plugin-proposal-class-static-block@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-proposal-class-static-block@npm:7.16.0" +"@babel/plugin-proposal-class-static-block@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-proposal-class-static-block@npm:7.16.5" dependencies: - "@babel/helper-create-class-features-plugin": ^7.16.0 - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-create-class-features-plugin": ^7.16.5 + "@babel/helper-plugin-utils": ^7.16.5 "@babel/plugin-syntax-class-static-block": ^7.14.5 peerDependencies: "@babel/core": ^7.12.0 - checksum: 59c4bb3d6ad4828e7773fe1c63730c68bf646c3a8d042b9ed4062fd98a26c1656b7ee108c5f144fd8b24ff567baf3b2efa644be29c6c8bcfe60e09e485e22116 + checksum: 461dbd90c232ecd11d5b6fc67c7c50285a4762eec27463928e871918660c28b3f5558aa675cdfd52ccfaadeb3feda1c8f2e539fca60225dd21b6bca003442f3a languageName: node linkType: hard "@babel/plugin-proposal-decorators@npm:^7.16.4": - version: 7.16.4 - resolution: "@babel/plugin-proposal-decorators@npm:7.16.4" + version: 7.16.5 + resolution: "@babel/plugin-proposal-decorators@npm:7.16.5" dependencies: - "@babel/helper-create-class-features-plugin": ^7.16.0 - "@babel/helper-plugin-utils": ^7.14.5 - "@babel/plugin-syntax-decorators": ^7.16.0 + "@babel/helper-create-class-features-plugin": ^7.16.5 + "@babel/helper-plugin-utils": ^7.16.5 + "@babel/plugin-syntax-decorators": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: de4f3187c60d14fca37f4edf9d27c61b22e62609708bbaa48bd25b705ab4d5d09457b1011bf6fb55607b11c7a227310f3db5ced4802ded96a79202af7fad7101 + checksum: dec0c4a02bec3dba9b889eb50082e13ac351522364dfdce43a2e3913fe817ad07634c27fbc256c002149946c0fb0c9fe8db90220b0d000c3b05ee9925264976a languageName: node linkType: hard -"@babel/plugin-proposal-dynamic-import@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-proposal-dynamic-import@npm:7.16.0" +"@babel/plugin-proposal-dynamic-import@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-proposal-dynamic-import@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 "@babel/plugin-syntax-dynamic-import": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4027da640443d8fd4a20637d1dd67cce1c13207b8c19fa77796a08b9eec9881b95322c1a5c489128adf3a12e9bbc02b31de9ddd536c909d072577a74a2a70b67 + checksum: e08d1e2dac8c44c094e50e38d9fe7b0008f0a2ff3a9ccff7beb6f15c53b06edbadd6bfc2aa6ab5923bb480608bbc85a2126602cf2abe358d7302c89d2372e143 languageName: node linkType: hard -"@babel/plugin-proposal-export-namespace-from@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.16.0" +"@babel/plugin-proposal-export-namespace-from@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 "@babel/plugin-syntax-export-namespace-from": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 0bdc166ac44d9a0579e6d14d07ed1364932b4b7852626f4ba0c0011464097ed23bec43a3e93793d888c2854918ce9937ac251a945abbe0d283eaa1df206e0b05 + checksum: 9f52177482b4ef8858b8c6386e2d136384796bbcc24ac84622943b84579371168ce9cbb4cc438e1120d6c4d8789ca5b43a5fd05c694bddccad5c553a2afc7883 languageName: node linkType: hard -"@babel/plugin-proposal-json-strings@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-proposal-json-strings@npm:7.16.0" +"@babel/plugin-proposal-json-strings@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-proposal-json-strings@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 "@babel/plugin-syntax-json-strings": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: fa93be8eff22ced96a68c9db8c0e930414a4ffb44cf68b473717309c06a4feee2bac6e41415a699c829f29928653d67b4b7d29a45861784d235264d829055a1e + checksum: 31c8d80d597c3072d204a8cb9323127ecdf9bf17c286755325de836692985dc5579a53642f3db1dd22ad0d8c20d802a21488d84f73ffe825eb1e2f1ddd4555dc languageName: node linkType: hard -"@babel/plugin-proposal-logical-assignment-operators@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.16.0" +"@babel/plugin-proposal-logical-assignment-operators@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7e6cd10248803f0c5801805ef1a357314940c3204c3d2f00994711f272c21276f181d0e83ada5bce6185ae2c97c4417e778331505ffc2e71a2b9c4425a5dcc6d + checksum: 453f8b89c77c423ca710394c4409a337e5ecc4ac58ecb32fe5392dcd0db122d86b3eeec0578e1ae4ddf09515d0201e511021b7c1c7f4c6a27c5e91afe4ed0c5c languageName: node linkType: hard -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.16.0" +"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e50f94929970cdc5c6ee22ec4c95c46ae25cdd8c391baf601f7f3d3a3cec417efc663a3fafa9ae5bca82a6815d49687b07cab9857f5a10e9ea862438ecb81e4a + checksum: 035a5a8f4d892ead797ce5c39b59c5fd91ef14f20cc9bfeafbbe7179ef05bd6ae311b73a5f36472cc278e3d282a1d025b0326ff7cf0bbfb63173cae469ff823b languageName: node linkType: hard -"@babel/plugin-proposal-numeric-separator@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-proposal-numeric-separator@npm:7.16.0" +"@babel/plugin-proposal-numeric-separator@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-proposal-numeric-separator@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 "@babel/plugin-syntax-numeric-separator": ^7.10.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: eb7895a4f38263df644a0ded7042991190f23bdec4b53f3e2c8b40b82d2dbc537a6ca9afbfd490d1aa5dd33244e7a51bf1ae0c4c6890d9978bc1adc325b7e795 + checksum: 38dfbca1a3b8dfdb8a90d8f4b6767dcbca4987de9a748416c980ca243dcaac460f044999644118be277f80d4b08161c6df8b2835c7134efde3601f949b75e3ef languageName: node linkType: hard -"@babel/plugin-proposal-object-rest-spread@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.16.0" +"@babel/plugin-proposal-object-rest-spread@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.16.5" dependencies: - "@babel/compat-data": ^7.16.0 - "@babel/helper-compilation-targets": ^7.16.0 - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/compat-data": ^7.16.4 + "@babel/helper-compilation-targets": ^7.16.3 + "@babel/helper-plugin-utils": ^7.16.5 "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-transform-parameters": ^7.16.0 + "@babel/plugin-transform-parameters": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c7716ba50e65aae613e553dd568d3f4b4c42fa8d9f1c3aca6cc227670fc792b600cd5a5c710451490f3d7d5916e77607cba45033e199534ca71feed451f63820 + checksum: 8632cf389ce153c31f57d4bb8b69314ba93732bb469b6b5923ba53ee48e4d506bbba614c4d0748e21790e0780612d60c2f6db7477ef98f6757b35eb7a03508da languageName: node linkType: hard -"@babel/plugin-proposal-optional-catch-binding@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.16.0" +"@babel/plugin-proposal-optional-catch-binding@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 5003a1d48fb6bac1661b481681baf7941de518f1f773d9745e65a650e750b715cb69181a4b723e28f4e43b94143b7b0fe5d12ff1ceceda9731f073cd6bf4e195 + checksum: 38a2c0c677eedd198617e156aa29f6adbd17f9b5cf9f9a79fe5950d68a0ea8e99225965e20f65ca03502a513cd09f28083875a924cc0dd0e6fb3cb0ec2a22317 languageName: node linkType: hard -"@babel/plugin-proposal-optional-chaining@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.16.0" +"@babel/plugin-proposal-optional-chaining@npm:^7.16.0, @babel/plugin-proposal-optional-chaining@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-proposal-optional-chaining@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 "@babel/helper-skip-transparent-expression-wrappers": ^7.16.0 "@babel/plugin-syntax-optional-chaining": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8301e0829220327c8b969b711c5c4ee5aef88b391e5fb7838381bd18c0fd0cf360d3a307ad5c6113414470ae920504dc2c41983af0ddf3762f5c88957e0c3a94 + checksum: 4eaf5d4bd1438e1aece5d50fe6ef3b67277161103010eb4b2d45124ab6354fe1083752cf3e9422d72afd439e2a42b61ebdb4e2a10b2d10fcaf9696ee691003e4 languageName: node linkType: hard -"@babel/plugin-proposal-private-methods@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-proposal-private-methods@npm:7.16.0" +"@babel/plugin-proposal-private-methods@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-proposal-private-methods@npm:7.16.5" dependencies: - "@babel/helper-create-class-features-plugin": ^7.16.0 - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-create-class-features-plugin": ^7.16.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6f648f54ea1219262b7a05f86f94de7cb466dc81ffd86e4f37ba536037762457ef13408083eb4325d44d2a5aae27c097756efe1067f5c1fbddb8078b923580f5 + checksum: 93326582f848f3a0771803b3e835b2c981560f23a417ec1e0c2180b6cc5294ed7a8dfdef35939ede8c9a96e2b5f34dce9e5cc8d3f848d66f1f3a25f7b7b0240f languageName: node linkType: hard -"@babel/plugin-proposal-private-property-in-object@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.16.0" +"@babel/plugin-proposal-private-property-in-object@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.16.5" dependencies: "@babel/helper-annotate-as-pure": ^7.16.0 - "@babel/helper-create-class-features-plugin": ^7.16.0 - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-create-class-features-plugin": ^7.16.5 + "@babel/helper-plugin-utils": ^7.16.5 "@babel/plugin-syntax-private-property-in-object": ^7.14.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9098fb34f4abac376ec5823bf6aaedacd46e6925a6fc62559a8086a110bf39310ee308bfbbed052f047ad803b7148b87e43b6d83a759be0aeab1149efd4b8eeb + checksum: 649d5e799e55001dd96ffd02e2aeb0ada31cca682d3e25e63552c91ac0ef6fff352f7fa8465fbb4b6751c2e08eb98fa54ad6014a7e586996846912449edb22d1 languageName: node linkType: hard -"@babel/plugin-proposal-unicode-property-regex@npm:^7.16.0, @babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": - version: 7.16.0 - resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.16.0" +"@babel/plugin-proposal-unicode-property-regex@npm:^7.16.5, @babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": + version: 7.16.5 + resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.16.5" dependencies: "@babel/helper-create-regexp-features-plugin": ^7.16.0 - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f26b76c9aa680820fe693f768a36e3a2c4d969e72d7a362059fffad7c874eed8a89bde2be5bde650283a685bd879415f8937fb37a9a1397b287a81df0c6f7c23 + checksum: 884109813dc054afae7ffc0804851a0091a2ae5473243c5a2e3c7a8b00bc24803597298301d407a8c5a80bd7e0e5f82fe737f1889a508880b073787ab7c9b4b4 languageName: node linkType: hard @@ -638,14 +649,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-decorators@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-syntax-decorators@npm:7.16.0" +"@babel/plugin-syntax-decorators@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-syntax-decorators@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: afee8cc796f4e8e7ab407420f25d6241932a988036d9b49db289f5e71346e8e7e93157d3c0305f3d95acf4c901cfd6d2ad2d951701e208457788427dc38319c2 + checksum: 7c20f78ac37bd3df693282ebc9b29dd79f97680ef9286efe5727e517a457f866b0a3d3413f729287943afc5b143729b51f983cb7c7f6fc04cc320dcb2f24c858 languageName: node linkType: hard @@ -693,14 +704,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-syntax-jsx@npm:7.16.0" +"@babel/plugin-syntax-jsx@npm:^7.12.13, @babel/plugin-syntax-jsx@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-syntax-jsx@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 34afe4030c249ed5a559c7d164b317a6209f3fca2db7dee7ecb8413af84167381d82f23517bf8e41d359da07da9b0fd2c0472e81c4389e5cc9d1997a308d49de + checksum: 2f90d83924084b2677dc8b6a66360afae6cec8aa16f00f203e96293c2ad0bdf77f0ea8e9119c50cbaeb39508c793fe12f6fe7dad70207897fcb419b7deab698e languageName: node linkType: hard @@ -793,430 +804,431 @@ __metadata: linkType: hard "@babel/plugin-syntax-typescript@npm:^7.16.0, @babel/plugin-syntax-typescript@npm:^7.3.3, @babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.16.0 - resolution: "@babel/plugin-syntax-typescript@npm:7.16.0" + version: 7.16.5 + resolution: "@babel/plugin-syntax-typescript@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2da3bdd031230e515615fe39c50d40064d04f64f1d2b60113adff2c112a27e4f9425425e604297d5c2af2b635e7980f3677e434dfeb1d7320ad2cd1ffc8e8c2a + checksum: 73454e8e9d5be92304d60d457203b43e04a9d331c4234eefad390a3a4d36a30d75b211ba9e98205e0b322a6c178e46b5852da35889eef9183549d6589d04a01e languageName: node linkType: hard -"@babel/plugin-transform-arrow-functions@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.16.0" +"@babel/plugin-transform-arrow-functions@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ff647300424968d1cd6c6b015fd72d332042a94c7b08f3e785f32d22364bfad49258a41c53675de08573af98da1a623efa03da13a653f06988f79a9d571f7030 + checksum: 5e84ff27f0eca46a1519c2cbc35d2e5afbb75d744cc3ff32ae060bfe5b6f1de9f7326b2fbbf589be4b8072d99325c9836cf73fd12b9ecd6e80028440ee768c47 languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.16.0" +"@babel/plugin-transform-async-to-generator@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.16.5" dependencies: "@babel/helper-module-imports": ^7.16.0 - "@babel/helper-plugin-utils": ^7.14.5 - "@babel/helper-remap-async-to-generator": ^7.16.0 + "@babel/helper-plugin-utils": ^7.16.5 + "@babel/helper-remap-async-to-generator": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2ebf505f43350d246007d754577477ddb0132c4ab39c9fd420d36ebb6e489b2b3eb48f27fe58f7ad0c742946a1e81e3b150666507abab03fe6bd649ff585ed45 + checksum: e50fcf1fc72aeff66a621c8c0e4bdfb77c5bd023a8a013900db7f5cc23c3474681cd0508bcf4306cbe872a98d6cfc945249c1aa3f7fcea6c26242f9b9e99609c languageName: node linkType: hard -"@babel/plugin-transform-block-scoped-functions@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.16.0" +"@babel/plugin-transform-block-scoped-functions@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f7efc5d8ce9242e11c94c82d9c940d4c534a751ff3679839d2f7d7a300c29ac4c4a3c26c238b5f2828201cac8a848bfb6342c285460f6ce5bc267cbdc1bb070b + checksum: c4c13997a5b491d60f69ded97ba899d898472275315c91d87729360e6bf57da948356ea7a4b2bdf52cf9ea9a97582ec551f9eb7b759202b950acb5cab8e4cbdb languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-block-scoping@npm:7.16.0" +"@babel/plugin-transform-block-scoping@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-block-scoping@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e5bcb9eeed7974ee6dd14c360c21ad2465f81342001e5468bbec5db483fffc78bb0e7f84155be6c32588bc0b43a6ca0050c7962400b33d134f6298c31c8073d4 + checksum: 1aa74a77cd69613a8f8ccbedfcf44587f49361d42f27201f52b2b6c3cc08639d553171ae2ed31c4af449e49574d0a796241e66fddc381606ed1185af11d17c6d languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-classes@npm:7.16.0" +"@babel/plugin-transform-classes@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-classes@npm:7.16.5" dependencies: "@babel/helper-annotate-as-pure": ^7.16.0 + "@babel/helper-environment-visitor": ^7.16.5 "@babel/helper-function-name": ^7.16.0 "@babel/helper-optimise-call-expression": ^7.16.0 - "@babel/helper-plugin-utils": ^7.14.5 - "@babel/helper-replace-supers": ^7.16.0 + "@babel/helper-plugin-utils": ^7.16.5 + "@babel/helper-replace-supers": ^7.16.5 "@babel/helper-split-export-declaration": ^7.16.0 globals: ^11.1.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7db47296045761b3f35a9075b4bcce99ad5aa93714cca235961fa596983ba6cfd4d84b29fa6745e4752bd2a60ac299b0dee3231ce20061b6798ae16a147e4992 + checksum: a142a4c2c46d7946cb7b7d0d1ae62bd52629dbf68056bfaa3739ecc3d252292d20a93daeff100b9a7acd89e5abc4bf4f45417a142a0e3fb1eebf707bd92c711b languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-computed-properties@npm:7.16.0" +"@babel/plugin-transform-computed-properties@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-computed-properties@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 0f86de419cf5daf28b01c5b2feafa426e5b0ec776290e731de3d7a6ec4ec742400e13436d67292e500ecd50e21ddab9ae34da79357a85a443d30dc94f2a4f6a3 + checksum: 57b829e737e1f69f02bd1c10a8835b30e1a7c77b1c1c9dffecaf30101a4d4c7a37851f36e225bc02d4dec8032e1cc503c6bc46592700bf69611455b8d34d4df4 languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-destructuring@npm:7.16.0" +"@babel/plugin-transform-destructuring@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-destructuring@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 0a499c9abd6b50d4da6a3c8416e3cdf305f8002fddb3bd9ddd0774ba17ab1b10134f79fe8edc495c94344e5ab387626fb0ee124d31810758968a92d573ff9034 + checksum: bdc5c4b52800c5c49e63d839231937259ea4ec555b07ea735d1eb2fdec2c9a4d43c9fca79771bafa79c06ebf10e902e531092dee0d493e2aee4aa1a101dca40c languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.16.0, @babel/plugin-transform-dotall-regex@npm:^7.4.4": - version: 7.16.0 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.16.0" +"@babel/plugin-transform-dotall-regex@npm:^7.16.5, @babel/plugin-transform-dotall-regex@npm:^7.4.4": + version: 7.16.5 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.16.5" dependencies: "@babel/helper-create-regexp-features-plugin": ^7.16.0 - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c1f381f0d44a1b33714a68ffd60f2b9efac1be95caf3c21192cc8233afde2fae1da268e26b3cb40764736f090793b66946574c3310cfdd4906a7e72310239ff9 + checksum: f14e5ec1e7795d356435875256da0f6e4c9d2930a7dc2a5818439ced23161d1a664506654ffcd86d25e23e7ed8346e719e6a13cd2d6b262629d2fea7699aead4 languageName: node linkType: hard -"@babel/plugin-transform-duplicate-keys@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.16.0" +"@babel/plugin-transform-duplicate-keys@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 66f09487fdf737aa280c780a609bafc9a771b34b5f9a8dccf69752c22110893763f6c105062776f084ed872a55d1656b3f14e2a9c2031f3dbdf31da20d9c827b + checksum: c897998b8dddae4cd6fb4451cbc9954468cdd7a04087f3f064a43741feb4e74dde8d69772af540fa7869c0484a15a23f89356f845f508bcfd8c7bec1e4670807 languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.16.0" +"@babel/plugin-transform-exponentiation-operator@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.16.5" dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": ^7.16.0 - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-builder-binary-assignment-operator-visitor": ^7.16.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 22e1d4804a5fc522744a1cc13e2c35c5d81c2e303a634822fee59829477b3748dcf897a020c3083084350ab1d3b76752157b216971157763394021e2f2184094 + checksum: 8eb96d043af3ef72091b11f9e05e01d0bc0eb71c9adac36e2750b9f34d8ac1198a070139d404beaf07b5665bcb612ba52146f5cb82fb85daec88b43a22482cf6 languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-for-of@npm:7.16.0" +"@babel/plugin-transform-for-of@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-for-of@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 504d967b30b00d3e1a2784f6a215963fc0036871f8fd6ca61e41e67cdb3319511e9148164428144469416b35b0e02c896c144402ace7cd7a6c45b0d1e8746ae6 + checksum: 203fbbf9101d14d756c564df9e219eb7c134bb42a8a5f083148110493a89a40c08aa2f412e11b6253bb48db885ca1869f36e0d0cfc65532a8e0a5ce793948618 languageName: node linkType: hard -"@babel/plugin-transform-function-name@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-function-name@npm:7.16.0" +"@babel/plugin-transform-function-name@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-function-name@npm:7.16.5" dependencies: "@babel/helper-function-name": ^7.16.0 - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 289f4fce26e8b3a81fcae752cecdb78b363eb29e400aa4dc8318484156d908ddc6dd5b274b8fbcdb80ea59a362834554c4a5d3454e974957dbd2b30c3d00ad3f + checksum: 3b933eb0650d00c3bef51e06ec8f106e8ba97960b111e6723e1ff4818c6a0c4f02547336446366a4d8b5f8b5f08fef1e7e014e3d1264dbd665c85f1b47dd99a3 languageName: node linkType: hard -"@babel/plugin-transform-literals@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-literals@npm:7.16.0" +"@babel/plugin-transform-literals@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-literals@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7291771c7626a27684053ceefc4e2e3e480a6ceab9f3c8abbdd9c90fcea63f035ace397e53bfc4b7311b835f7c79449be03226affa69e2e2a96c14b6da4d5db9 + checksum: 81066d35cb212f759cbc00e682b661c2ff77425d7c725a45679d2bee17d9aed28c240deb3f5063faa81c794e892e31269633433a5abdca0f6735cc153673b10e languageName: node linkType: hard -"@babel/plugin-transform-member-expression-literals@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.16.0" +"@babel/plugin-transform-member-expression-literals@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d5ed6cf840b9fd8b88f719dea46dc26a1778f10aeab6878b3eabf2350cfa813bfeff09d91c6afc93dd3536a48bc892a0afcf9f99f3bad6b54b41638f3ae80fa9 + checksum: ce491530a413538e9024f78e550faf043023fb57b3f4584f59c3d7632c0d0d5f1065b2d0ffe6d2c1035124e79d8f47db1e0b0b08b97bb50817cec7fe77580925 languageName: node linkType: hard -"@babel/plugin-transform-modules-amd@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-modules-amd@npm:7.16.0" +"@babel/plugin-transform-modules-amd@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-modules-amd@npm:7.16.5" dependencies: - "@babel/helper-module-transforms": ^7.16.0 - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-module-transforms": ^7.16.5 + "@babel/helper-plugin-utils": ^7.16.5 babel-plugin-dynamic-import-node: ^2.3.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c37ccb8cd7a301123fb5590712d957bf9f82bb0d89a83441b570a9f9793af76b99449c93f1079ad187fb598a5eeb5571561ff4d71af9192c7d6e407a464d6aff + checksum: 5587a9efd84e4ed9a36362b92dcfceff274267fee93e9b6c499a16bc3e6b54807917171b1852b7201abafbd6baf4ac624c72410a08344b19d1672c5285c8ee15 languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.16.0" +"@babel/plugin-transform-modules-commonjs@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.16.5" dependencies: - "@babel/helper-module-transforms": ^7.16.0 - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-module-transforms": ^7.16.5 + "@babel/helper-plugin-utils": ^7.16.5 "@babel/helper-simple-access": ^7.16.0 babel-plugin-dynamic-import-node: ^2.3.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a7e43670f503b31d6ad42977ddefb7bffc23f700a24252859652aa03efd666698567b0817060dd6f84a6cd23e7aac7464bc0dc7f7f929cad212263abcac9d470 + checksum: 5b5c23e492d60ccddf2b0fcca150965818c33892f8301633404861d0aab6c78d8d0110cf7f91b669e2842eb3815d1e629af5b4c5d801df6100be0bc5f50e8c49 languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.16.0" +"@babel/plugin-transform-modules-systemjs@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.16.5" dependencies: "@babel/helper-hoist-variables": ^7.16.0 - "@babel/helper-module-transforms": ^7.16.0 - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-module-transforms": ^7.16.5 + "@babel/helper-plugin-utils": ^7.16.5 "@babel/helper-validator-identifier": ^7.15.7 babel-plugin-dynamic-import-node: ^2.3.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4aa9bd45a4c1f79a4abd92482b4f9ac6492b5e727ee34316c80a30b6524281d39959a2d556b231eae4b1031f35e0133e60270f9e4bfa5f25a8cb68ef145dfcd2 + checksum: fc7937fa417848c8cfc4ffe590ab5b13ee881a527c6a6c11eb146fe335f01b2d679c68dfed6b95a586e83841f5aac54b5a6a818d6733ff4cc1f0ac3d54c23eba languageName: node linkType: hard -"@babel/plugin-transform-modules-umd@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-modules-umd@npm:7.16.0" +"@babel/plugin-transform-modules-umd@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-modules-umd@npm:7.16.5" dependencies: - "@babel/helper-module-transforms": ^7.16.0 - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-module-transforms": ^7.16.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b07d41eae3a1163fdb2dca4bffb0de880981e6581163948a88b7665709e860612932f5a73e54d70057e834d3968e3b5f86222f1d302c9e1d34d95a764584af54 + checksum: ce9ec8e928528bb193007a56e0619d5e7defec84d8df795239a7fdcfc87d08b3b029b059cfad1bb560e4083f03170b469ae6a7272016e6cce57f5541598260be languageName: node linkType: hard -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.16.0" +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.16.5" dependencies: "@babel/helper-create-regexp-features-plugin": ^7.16.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: 758a87aca66ea7944c5f94ed7a798220c3b2986da4c38dc3f63221065ec96534bf39b3b043dd9759dbdff4026d340bbe51082d5ad4505c19b08893663130675b + checksum: b34e89fa86c81ae618a2ffd036a383aba5718e1a389d4844519b7f064450d18221f3d3f6a298d89d3b806623f0be522abac88f0fa06010b870bb8c3a033b79c3 languageName: node linkType: hard -"@babel/plugin-transform-new-target@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-new-target@npm:7.16.0" +"@babel/plugin-transform-new-target@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-new-target@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c741ba3e84c182f1af3174cb7f00c4e434080ff882e72c7b2743d1d636eebcf12c865772be051a323c823bd4ebdfbae19cb78e95218d6b14c338f27a64608e31 + checksum: bbb3769cc47ce082e98f2e0a4df02fc56a771f74b23a1ca7a8912f642c9d98d1a89b54c40c3fe678a6af40e001119d490e06045094c5e66fd755c0a770e3c219 languageName: node linkType: hard -"@babel/plugin-transform-object-super@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-object-super@npm:7.16.0" +"@babel/plugin-transform-object-super@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-object-super@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - "@babel/helper-replace-supers": ^7.16.0 + "@babel/helper-plugin-utils": ^7.16.5 + "@babel/helper-replace-supers": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b6ed0a8f5a1231b4dadb5edb2cef8fba7957cbad943c0018002719d066fda93b805da961e42b38d625e43e7c79f5c07d5719d6d63f9cf178501882a4aa5d30da + checksum: 003a065b99faeb9b749fa37a9077addb98468f9ea72052fd16090643feb8b6c429ce9bf0d3480c79393c3ea0ba0ffdf9daaf8952850ac39d1fee23e2201ca1cf languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.16.0, @babel/plugin-transform-parameters@npm:^7.16.3": - version: 7.16.3 - resolution: "@babel/plugin-transform-parameters@npm:7.16.3" +"@babel/plugin-transform-parameters@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-parameters@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7c0154fa66f03f69f6767adc01e72ef00d50cae8eb87c65506adccccc1cf776730ecbb96a5de0127910554cc0e86e375bc437fa085f619783d368936736a4f58 + checksum: d9057796dd27502e9f23bb4e393002bd4b75f34fc33bfb0c55ac8d9b74fd0480f037cf836cafc6014e32ea1f21a857b8ccb8175620adada9c89a675c950678f2 languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-property-literals@npm:7.16.0" +"@babel/plugin-transform-property-literals@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-property-literals@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e9eb9355db4cf18dc82879174fc2de6590521afea04f1c80c5805d3f759bfa25946bcac1095b5fe0e4ad3f5eb330cd7e308467626a0212f07b9f41b9f00affa8 + checksum: fab2c628e40f9fc5c02d9558c556b5730b0c5d80aaed71f64544108595aa3b7168cc8ffda89ddf8b75fcf03f14d9679a657bd55e17ea4495736499f0b3393dc6 languageName: node linkType: hard "@babel/plugin-transform-react-constant-elements@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-react-constant-elements@npm:7.16.0" + version: 7.16.5 + resolution: "@babel/plugin-transform-react-constant-elements@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 15f0497d7c8419eaaf40ea9fef31279abf537d7cb9b14867591f3e632ca77309c92467a922d143289cbbbdeea4f74293e5a1053f91eb6289b22798bb633e02ae + checksum: 994f61a4ab9aa8732dbcec9fb06e021a8569df4de4a7e866a8dc5bf81defa83f4f75a086bec621ec0688309de02458ea7996a90629a1c40785123a90555c7745 languageName: node linkType: hard -"@babel/plugin-transform-react-display-name@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-react-display-name@npm:7.16.0" +"@babel/plugin-transform-react-display-name@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-react-display-name@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 82ca59676ccf5179585828c64b5703aec597d78fe4adf788579529d02b071b0fc6c2df69aa033118b7ac1c12e1dc418046fe7e9c6a593e1005beacc2846f4281 + checksum: f56b11e585038342ed9b7e5cd734b297aeff038207ec075469e4798ee2601236c35fa398dd82da0f3b4b042726d657d5d851ca41355954c4f556481a24022de4 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-development@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.16.0" +"@babel/plugin-transform-react-jsx-development@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.16.5" dependencies: - "@babel/plugin-transform-react-jsx": ^7.16.0 + "@babel/plugin-transform-react-jsx": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2724db0d24779107a6e019f4be17e894e26dc23e33f797b3cd750afc0db33d477db27d6aafb63eb459e3514fdd9f408b9487c7db3d7c6858129382e9c26352dc + checksum: d709c372c1b4ce131cfda3cc27cf1b8c588d1436e3dbf260cc5fb3e1014230f5e23d6dfccc769f8fdafa2ecae77e99fc86c68742323a633fe7cc3830bf39d0c7 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-react-jsx@npm:7.16.0" +"@babel/plugin-transform-react-jsx@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-react-jsx@npm:7.16.5" dependencies: "@babel/helper-annotate-as-pure": ^7.16.0 "@babel/helper-module-imports": ^7.16.0 - "@babel/helper-plugin-utils": ^7.14.5 - "@babel/plugin-syntax-jsx": ^7.16.0 + "@babel/helper-plugin-utils": ^7.16.5 + "@babel/plugin-syntax-jsx": ^7.16.5 "@babel/types": ^7.16.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c4fd2307750f3903ce1ff83e3eac5ebc3ef38838c542ff92676332d98292cacb60b91c19f49e30c9442494937c692992160101ae28175af0e1b1c7b40936e8c0 + checksum: 07a8b2443df86bd7ef51849fc097f9c5f72205ad47c8e41462f08b49a00c16fbd96f60a9f18a9ce741d9852fa1516bb65d91fbe7437f69a2e1852a20f89261f7 languageName: node linkType: hard -"@babel/plugin-transform-react-pure-annotations@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.16.0" +"@babel/plugin-transform-react-pure-annotations@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.16.5" dependencies: "@babel/helper-annotate-as-pure": ^7.16.0 - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b06c0f5efd7bc6118d43ad1e3a8cb94ebe01b19cff6fbeab0941801d1013b7bc372d2db9742b1ed746a89828a955f8dab9eb460d21fc3af352038de4cb0c6184 + checksum: 6411611c23ab4a0d9210ab181128b99521d072a1c404b521065f486e33044b68e512ebcb271c4765f21fc3ec77afba2a4cae0c45423c47aa737c293f227987f0 languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-regenerator@npm:7.16.0" +"@babel/plugin-transform-regenerator@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-regenerator@npm:7.16.5" dependencies: regenerator-transform: ^0.14.2 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 32b1b43f8d55d9e78e87bbc6a19b0bb0ff968220e215e9a3984c0de140048c54c62cf46889bee16f987221eab112909318de391426df33cdbe3fd710480068f7 + checksum: db6f0278bbe6119546a7d3023b3e8c7536e3bf1b601d18e1e26ad53ece1b51f196ae4a6731ef9c09b8558c834a57855a406ccea46e3286aad5b99a4788fb3fbc languageName: node linkType: hard -"@babel/plugin-transform-reserved-words@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-reserved-words@npm:7.16.0" +"@babel/plugin-transform-reserved-words@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-reserved-words@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7a8288cfe2375e43579d3786d5f6654b36d8344b1be3df4fbafe81ae49bf634f85f68fe5a1a280f56aa7d626deaaa6ba89e586422b3d8b13f7d4b0e0617362d6 + checksum: 96a24ee8e43118110ccdfdfc1e085ad24e475cce279508b755f6121d99f1fdca22b0e79cf2a9cd7534201e999943190ffe03036694680846108bb94fbdf3e1f1 languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.16.0" +"@babel/plugin-transform-shorthand-properties@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7ae0f218aaccd2f7e8b0027c558fbbc291f7df7c83749826075776de780d1ac421f9056c760c5eb2e486b7b1983a41cd8dc00589504904b833c810fdb80b3868 + checksum: 5af07bf0ed697506da25846177a732e1b44c98308a4420e21a5f6532019160ddce073fa38daeba9ebb73d6fc34c0f43c7b5202e8dd70d2cba4b37e349c4cce58 languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-spread@npm:7.16.0" +"@babel/plugin-transform-spread@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-spread@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 "@babel/helper-skip-transparent-expression-wrappers": ^7.16.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c295ef5e329fc31bd78e0aac3d6d848475a26e40cffff207dfd450416a25478bedb03402a0cc569bc5b7d3e92c22bff8a7cf76f1a9d896070e3cdeae1aee0316 + checksum: 06b22ca770a841299789c46e6f580303d875efa4c0ffcea8d0c2b6c3ddb4e65490d9a7696aac2276cc5b4a9a6a77077ec6fbeec3b75335fa8f99b8536a7bb1f1 languageName: node linkType: hard -"@babel/plugin-transform-sticky-regex@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.16.0" +"@babel/plugin-transform-sticky-regex@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 80c7ccb797e4d31f112ace4614e8259ad0707eab3ed1c5a900ac0799dc23fded8bad57142ceb29222d6f0645f7b0d6a74fa133c945b8611d5db137b13ee68882 + checksum: 184b6c08234644fe1b201943aa9141bbf9646d43963eaaa91129c0dfa0cea8659855b2218c0a20ee8a1cff691341a3169bcdeaa9a7868adf26247384fede6abf languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-template-literals@npm:7.16.0" +"@babel/plugin-transform-template-literals@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-template-literals@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 230638ee56bbe8c4237d2c3366d700eca1f66f93c37935f6d775f699c5d2593e3f176e81010cfb2d46f89e340c6c042649263c3b913ce269182fadfb4db01369 + checksum: 4297a7615ba634a39b0573301f2f36ca67f126c27516b29bc2640d1b407444989a55e1b4478c9f77accc396c9062d089a5a13ebc9ce52921749adce54d887e8c languageName: node linkType: hard -"@babel/plugin-transform-typeof-symbol@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.16.0" +"@babel/plugin-transform-typeof-symbol@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 60e91d57b3e5a5ca02cebbf9f6dacd06e8a3b7c92c54fd60616f01ac1c79b3ec5fd2e8c5fa5c86ffcd9da6fa811e6de8dc7602cf1e05da17def0ea06f1e8548e + checksum: f5cee6f93eb79aaf00a963de19a454ef2315424258d6b34769074101acb98e7e005b3c330386b0394d482f3bb666f79824c8217fee2defbb19d0132506a4cdf0 languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.16.0": +"@babel/plugin-transform-typescript@npm:^7.16.1": version: 7.16.1 resolution: "@babel/plugin-transform-typescript@npm:7.16.1" dependencies: @@ -1229,54 +1241,54 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.16.0" +"@babel/plugin-transform-unicode-escapes@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 63ac80d6b7592a7a038cde0b7b8fd7fc8f478de107543fb20c0ee47e00c5cd4c12be936501f55e2fd9370056603d9c4e4c57cdf335674837475865f80b4ae734 + checksum: 7c42417fb8addc5964687af9d7414046b9962da07b3cb4d4b0455408fa5462dad7efb10a42244a99180f4367a8c02feeaea45b998bc644d34f5af634290e1b7c languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.16.0" +"@babel/plugin-transform-unicode-regex@npm:^7.16.5": + version: 7.16.5 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.16.5" dependencies: "@babel/helper-create-regexp-features-plugin": ^7.16.0 - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 61e498425fb44951067e1d17cd66e97777a340118c06943cee9d1032a8bfec661f262738a9b2a00a498b0ad5ba56551ea81e76f0d6afe46c0301abc3a86bee22 + checksum: 61ce38563348060d5f092af717b4b7a266865cc08af62433c58031cdf73156d853ead8c57b1dcca11e5c86b732a42bc5f35a3996635c940c90838133fc995506 languageName: node linkType: hard "@babel/preset-env@npm:^7.11.0, @babel/preset-env@npm:^7.16.4": - version: 7.16.4 - resolution: "@babel/preset-env@npm:7.16.4" + version: 7.16.5 + resolution: "@babel/preset-env@npm:7.16.5" dependencies: "@babel/compat-data": ^7.16.4 "@babel/helper-compilation-targets": ^7.16.3 - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 "@babel/helper-validator-option": ^7.14.5 "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.16.2 "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.16.0 - "@babel/plugin-proposal-async-generator-functions": ^7.16.4 - "@babel/plugin-proposal-class-properties": ^7.16.0 - "@babel/plugin-proposal-class-static-block": ^7.16.0 - "@babel/plugin-proposal-dynamic-import": ^7.16.0 - "@babel/plugin-proposal-export-namespace-from": ^7.16.0 - "@babel/plugin-proposal-json-strings": ^7.16.0 - "@babel/plugin-proposal-logical-assignment-operators": ^7.16.0 - "@babel/plugin-proposal-nullish-coalescing-operator": ^7.16.0 - "@babel/plugin-proposal-numeric-separator": ^7.16.0 - "@babel/plugin-proposal-object-rest-spread": ^7.16.0 - "@babel/plugin-proposal-optional-catch-binding": ^7.16.0 - "@babel/plugin-proposal-optional-chaining": ^7.16.0 - "@babel/plugin-proposal-private-methods": ^7.16.0 - "@babel/plugin-proposal-private-property-in-object": ^7.16.0 - "@babel/plugin-proposal-unicode-property-regex": ^7.16.0 + "@babel/plugin-proposal-async-generator-functions": ^7.16.5 + "@babel/plugin-proposal-class-properties": ^7.16.5 + "@babel/plugin-proposal-class-static-block": ^7.16.5 + "@babel/plugin-proposal-dynamic-import": ^7.16.5 + "@babel/plugin-proposal-export-namespace-from": ^7.16.5 + "@babel/plugin-proposal-json-strings": ^7.16.5 + "@babel/plugin-proposal-logical-assignment-operators": ^7.16.5 + "@babel/plugin-proposal-nullish-coalescing-operator": ^7.16.5 + "@babel/plugin-proposal-numeric-separator": ^7.16.5 + "@babel/plugin-proposal-object-rest-spread": ^7.16.5 + "@babel/plugin-proposal-optional-catch-binding": ^7.16.5 + "@babel/plugin-proposal-optional-chaining": ^7.16.5 + "@babel/plugin-proposal-private-methods": ^7.16.5 + "@babel/plugin-proposal-private-property-in-object": ^7.16.5 + "@babel/plugin-proposal-unicode-property-regex": ^7.16.5 "@babel/plugin-syntax-async-generators": ^7.8.4 "@babel/plugin-syntax-class-properties": ^7.12.13 "@babel/plugin-syntax-class-static-block": ^7.14.5 @@ -1291,38 +1303,38 @@ __metadata: "@babel/plugin-syntax-optional-chaining": ^7.8.3 "@babel/plugin-syntax-private-property-in-object": ^7.14.5 "@babel/plugin-syntax-top-level-await": ^7.14.5 - "@babel/plugin-transform-arrow-functions": ^7.16.0 - "@babel/plugin-transform-async-to-generator": ^7.16.0 - "@babel/plugin-transform-block-scoped-functions": ^7.16.0 - "@babel/plugin-transform-block-scoping": ^7.16.0 - "@babel/plugin-transform-classes": ^7.16.0 - "@babel/plugin-transform-computed-properties": ^7.16.0 - "@babel/plugin-transform-destructuring": ^7.16.0 - "@babel/plugin-transform-dotall-regex": ^7.16.0 - "@babel/plugin-transform-duplicate-keys": ^7.16.0 - "@babel/plugin-transform-exponentiation-operator": ^7.16.0 - "@babel/plugin-transform-for-of": ^7.16.0 - "@babel/plugin-transform-function-name": ^7.16.0 - "@babel/plugin-transform-literals": ^7.16.0 - "@babel/plugin-transform-member-expression-literals": ^7.16.0 - "@babel/plugin-transform-modules-amd": ^7.16.0 - "@babel/plugin-transform-modules-commonjs": ^7.16.0 - "@babel/plugin-transform-modules-systemjs": ^7.16.0 - "@babel/plugin-transform-modules-umd": ^7.16.0 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.16.0 - "@babel/plugin-transform-new-target": ^7.16.0 - "@babel/plugin-transform-object-super": ^7.16.0 - "@babel/plugin-transform-parameters": ^7.16.3 - "@babel/plugin-transform-property-literals": ^7.16.0 - "@babel/plugin-transform-regenerator": ^7.16.0 - "@babel/plugin-transform-reserved-words": ^7.16.0 - "@babel/plugin-transform-shorthand-properties": ^7.16.0 - "@babel/plugin-transform-spread": ^7.16.0 - "@babel/plugin-transform-sticky-regex": ^7.16.0 - "@babel/plugin-transform-template-literals": ^7.16.0 - "@babel/plugin-transform-typeof-symbol": ^7.16.0 - "@babel/plugin-transform-unicode-escapes": ^7.16.0 - "@babel/plugin-transform-unicode-regex": ^7.16.0 + "@babel/plugin-transform-arrow-functions": ^7.16.5 + "@babel/plugin-transform-async-to-generator": ^7.16.5 + "@babel/plugin-transform-block-scoped-functions": ^7.16.5 + "@babel/plugin-transform-block-scoping": ^7.16.5 + "@babel/plugin-transform-classes": ^7.16.5 + "@babel/plugin-transform-computed-properties": ^7.16.5 + "@babel/plugin-transform-destructuring": ^7.16.5 + "@babel/plugin-transform-dotall-regex": ^7.16.5 + "@babel/plugin-transform-duplicate-keys": ^7.16.5 + "@babel/plugin-transform-exponentiation-operator": ^7.16.5 + "@babel/plugin-transform-for-of": ^7.16.5 + "@babel/plugin-transform-function-name": ^7.16.5 + "@babel/plugin-transform-literals": ^7.16.5 + "@babel/plugin-transform-member-expression-literals": ^7.16.5 + "@babel/plugin-transform-modules-amd": ^7.16.5 + "@babel/plugin-transform-modules-commonjs": ^7.16.5 + "@babel/plugin-transform-modules-systemjs": ^7.16.5 + "@babel/plugin-transform-modules-umd": ^7.16.5 + "@babel/plugin-transform-named-capturing-groups-regex": ^7.16.5 + "@babel/plugin-transform-new-target": ^7.16.5 + "@babel/plugin-transform-object-super": ^7.16.5 + "@babel/plugin-transform-parameters": ^7.16.5 + "@babel/plugin-transform-property-literals": ^7.16.5 + "@babel/plugin-transform-regenerator": ^7.16.5 + "@babel/plugin-transform-reserved-words": ^7.16.5 + "@babel/plugin-transform-shorthand-properties": ^7.16.5 + "@babel/plugin-transform-spread": ^7.16.5 + "@babel/plugin-transform-sticky-regex": ^7.16.5 + "@babel/plugin-transform-template-literals": ^7.16.5 + "@babel/plugin-transform-typeof-symbol": ^7.16.5 + "@babel/plugin-transform-unicode-escapes": ^7.16.5 + "@babel/plugin-transform-unicode-regex": ^7.16.5 "@babel/preset-modules": ^0.1.5 "@babel/types": ^7.16.0 babel-plugin-polyfill-corejs2: ^0.3.0 @@ -1332,7 +1344,7 @@ __metadata: semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 72a5d7e460fbaa2a90d6e341d8c33dcc2d742421fb983b61695ce46637e479808d09bec58a123a5e11732734a477cea8cb957aeefb101bb5723fca460566f034 + checksum: b3887f816743e09d7d144ee11804123f6a31ef38cd6734d3e6165e99fb85644579b1ba28ef27d8afd6a6288081c9a9b12a6887d98dfd37f8b8add90511648929 languageName: node linkType: hard @@ -1352,37 +1364,37 @@ __metadata: linkType: hard "@babel/preset-react@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/preset-react@npm:7.16.0" + version: 7.16.5 + resolution: "@babel/preset-react@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 "@babel/helper-validator-option": ^7.14.5 - "@babel/plugin-transform-react-display-name": ^7.16.0 - "@babel/plugin-transform-react-jsx": ^7.16.0 - "@babel/plugin-transform-react-jsx-development": ^7.16.0 - "@babel/plugin-transform-react-pure-annotations": ^7.16.0 + "@babel/plugin-transform-react-display-name": ^7.16.5 + "@babel/plugin-transform-react-jsx": ^7.16.5 + "@babel/plugin-transform-react-jsx-development": ^7.16.5 + "@babel/plugin-transform-react-pure-annotations": ^7.16.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 88b0aab22129a57a30edcfec7f308bf09091d6129c4a9a280fe96557ebec442d8dded893a03fecd236a41832fc755a0ca1b2c89776377822050b0cd1d2551355 + checksum: e2295bb31a818eacf4c1e2a532970a5f6f3ba2aac7ea7fefb6593e38e8cb9f42f449f46eeec297dfde210151f23972cf31969c597e744f1251bf27c550089771 languageName: node linkType: hard "@babel/preset-typescript@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/preset-typescript@npm:7.16.0" + version: 7.16.5 + resolution: "@babel/preset-typescript@npm:7.16.5" dependencies: - "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-plugin-utils": ^7.16.5 "@babel/helper-validator-option": ^7.14.5 - "@babel/plugin-transform-typescript": ^7.16.0 + "@babel/plugin-transform-typescript": ^7.16.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9b22316e96a34836c113f60c49d58023c8ba4219bcb0843a7685c04511486cf7c610e0d30551a1417809e2fd039884c847f6ede46abe2b8d520140e15fb36aaf + checksum: 56274462ea7c43245f88e412b60c676f472f70d851bb896bed8f4ef14eb8defc3e7d01097db8461a18c4aa8ce2b7004b61cdf021f7bd0eb23e4e832a893550ca languageName: node linkType: hard "@babel/register@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/register@npm:7.16.0" + version: 7.16.5 + resolution: "@babel/register@npm:7.16.5" dependencies: clone-deep: ^4.0.1 find-cache-dir: ^2.0.0 @@ -1391,16 +1403,16 @@ __metadata: source-map-support: ^0.5.16 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 85f661da2692ec9afd156f880ebb941e17337e33f5eb387d8bf8071e37b77647b2be7e08871887622b139db24f560ba8e9eb8b5fcaa9a8138b27714f05548254 + checksum: 8aa73bc0c6c526f258b72e806d95e36dbdf1c91d4f868bb5b00460dd8ced4273bd90f684dcccd411d998ef09fa910343bfde3b2fd599700672c041ed36d85ddf languageName: node linkType: hard -"@babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.6, @babel/runtime@npm:^7.14.8, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.4.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.0, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.7.7, @babel/runtime@npm:^7.8.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.16.3 - resolution: "@babel/runtime@npm:7.16.3" +"@babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.14.6, @babel/runtime@npm:^7.14.8, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.7.7, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": + version: 7.16.5 + resolution: "@babel/runtime@npm:7.16.5" dependencies: regenerator-runtime: ^0.13.4 - checksum: ab8ac887096d76185ddbf291d28fb976cd32473696dc497ad4905b784acbd5aa462533ad83a5c5104e10ead28c2e0e119840ee28ed8eff90dcdde9d57f916eda + checksum: b96e67280efe581c6147b4fe984dfe08a8fbea048934a092f3cbf4dcf61725f6b221cb0c879b6e6e98671f83a104c9e8cfbd24c683e5ebcc886a731aa8984ad0 languageName: node linkType: hard @@ -1415,20 +1427,21 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.16.0, @babel/traverse@npm:^7.16.3, @babel/traverse@npm:^7.7.2": - version: 7.16.3 - resolution: "@babel/traverse@npm:7.16.3" +"@babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.16.0, @babel/traverse@npm:^7.16.5, @babel/traverse@npm:^7.7.2": + version: 7.16.5 + resolution: "@babel/traverse@npm:7.16.5" dependencies: "@babel/code-frame": ^7.16.0 - "@babel/generator": ^7.16.0 + "@babel/generator": ^7.16.5 + "@babel/helper-environment-visitor": ^7.16.5 "@babel/helper-function-name": ^7.16.0 "@babel/helper-hoist-variables": ^7.16.0 "@babel/helper-split-export-declaration": ^7.16.0 - "@babel/parser": ^7.16.3 + "@babel/parser": ^7.16.5 "@babel/types": ^7.16.0 debug: ^4.1.0 globals: ^11.1.0 - checksum: abb14857b1104c73124612954865e28f95a86eb6741f35851369b4f9eabc17e394c9aa6f21fba6ce23813592353090d409772be828717cbe5154a5e981a753c1 + checksum: 6bc31311b641ac0a1c6c854cad3faa172f54d987f9a28d7d75ed64ecbcc74983f60acd51bdd792f77e451fd5385c10ce9955f9d1d60162bd32748cc42dc7eef9 languageName: node linkType: hard @@ -1650,18 +1663,18 @@ __metadata: linkType: hard "@cypress/webpack-preprocessor@npm:^5.10.0": - version: 5.10.0 - resolution: "@cypress/webpack-preprocessor@npm:5.10.0" + version: 5.11.0 + resolution: "@cypress/webpack-preprocessor@npm:5.11.0" dependencies: - bluebird: ^3.7.1 - debug: 4.3.2 + bluebird: 3.7.1 + debug: ^4.3.2 lodash: ^4.17.20 peerDependencies: "@babel/core": ^7.0.1 "@babel/preset-env": ^7.0.0 babel-loader: ^8.0.2 webpack: ^4 || ^5 - checksum: f6faa1f0134cac746e14b2f6e18a85da36aedc81b76f230e95d45065ff9205d08b0448f543c3a37490890aabc87359655f1ddbcd30e60a252e2490b7f2591e3c + checksum: c040d7b71f51a0009c5c9bdafd84ce223cc901fa521a648deacf32a8882b2ba91cfe88f269ad2aebe3753215f558bbbe7affa2575efe12624dcca7a0cde980d6 languageName: node linkType: hard @@ -1675,21 +1688,66 @@ __metadata: languageName: node linkType: hard -"@date-io/core@npm:1.x, @date-io/core@npm:^1.3.13": - version: 1.3.13 - resolution: "@date-io/core@npm:1.3.13" - checksum: 5a9e9d1de20f0346a3c7d2d5946190caef4bfb0b64d82ba1f4c566657a9192667c94ebe7f438d11d4286d9c190974daad4fb2159294225cd8af4d9a140239879 +"@date-io/core@npm:^2.11.0": + version: 2.11.0 + resolution: "@date-io/core@npm:2.11.0" + checksum: ad26af280b0fb08bf4a272fbd5d41fb9bdb5b5aa3fcc4930ea5ae92a691c6b1adad8d54aa4172cc164b260aa5ee7994d5d1fcee00609f2e12efda8556fa32ba2 languageName: node linkType: hard -"@date-io/date-fns@npm:^1.3.13": - version: 1.3.13 - resolution: "@date-io/date-fns@npm:1.3.13" +"@date-io/date-fns@npm:^2.11.0": + version: 2.11.0 + resolution: "@date-io/date-fns@npm:2.11.0" dependencies: - "@date-io/core": ^1.3.13 + "@date-io/core": ^2.11.0 peerDependencies: date-fns: ^2.0.0 - checksum: 0026c0e538ea4add57a11936ff6bdb07e99f25275f8bb28c4702bbb7e82c3a41b3e8124132aa719180d462c01a26a3b4801e41b7349cdb73813749d4bf5e8fbd + peerDependenciesMeta: + date-fns: + optional: true + checksum: cdab6e3836c69b3d81a43afb6fe082feb29edd55923422f821c4bf7aa8dbdcee890fa5b7e85a133403196f942e0ca5eb14707413e768a0abb05d7a819dbbfd95 + languageName: node + linkType: hard + +"@date-io/dayjs@npm:^2.11.0": + version: 2.11.0 + resolution: "@date-io/dayjs@npm:2.11.0" + dependencies: + "@date-io/core": ^2.11.0 + peerDependencies: + dayjs: ^1.8.17 + peerDependenciesMeta: + dayjs: + optional: true + checksum: 298f5355c3c0e0a60581e8daa1a3208b50741b5af7b59319ecbaaf69369f1faa51bfa711a030297d0b37b4b13444dbe909fc8773d0104bbead789ecce2433b89 + languageName: node + linkType: hard + +"@date-io/luxon@npm:^2.11.1": + version: 2.11.1 + resolution: "@date-io/luxon@npm:2.11.1" + dependencies: + "@date-io/core": ^2.11.0 + peerDependencies: + luxon: ^1.21.3 || ^2.x + peerDependenciesMeta: + luxon: + optional: true + checksum: 64782a8bc95b3b4adb24bdbf05a211b0f7afe36a2c9ce92c6262bd167b43c897ef049b2fa80e03a489b67877cadae7adecd21518193359ac192a7c2d3dc11764 + languageName: node + linkType: hard + +"@date-io/moment@npm:^2.11.0": + version: 2.11.0 + resolution: "@date-io/moment@npm:2.11.0" + dependencies: + "@date-io/core": ^2.11.0 + peerDependencies: + moment: ^2.24.0 + peerDependenciesMeta: + moment: + optional: true + checksum: db0d3e79ba485ca9c6804ded95ab5d6c84900774c75d9f4e37fced67161737fa2bfd460b15ce969ef8336dbea2cc4119cf938e5d1df55a1aea27cb4297d5270c languageName: node linkType: hard @@ -1700,6 +1758,76 @@ __metadata: languageName: node linkType: hard +"@emmetio/abbreviation@npm:^2.2.2": + version: 2.2.2 + resolution: "@emmetio/abbreviation@npm:2.2.2" + dependencies: + "@emmetio/scanner": ^1.0.0 + checksum: 23235f56469ef2832be9ca3600eb7bb2acd301fe606c895126f1cc7e06b9620e10b2908e3f31930c76a76aadbaeef4f93dd3bd7a45f0975bedbc6ddb35c17f8d + languageName: node + linkType: hard + +"@emmetio/css-abbreviation@npm:^2.1.4": + version: 2.1.4 + resolution: "@emmetio/css-abbreviation@npm:2.1.4" + dependencies: + "@emmetio/scanner": ^1.0.0 + checksum: ede72dafc412180ced63046c648bee6e8b7a5511622ed3192f7f11d813e119fd5e71cd60b95ed6a07d2c9809d6567d8c6fb6c36a4e8dbbcca9bd19df92192eba + languageName: node + linkType: hard + +"@emmetio/scanner@npm:^1.0.0": + version: 1.0.0 + resolution: "@emmetio/scanner@npm:1.0.0" + checksum: 4e4366bf0b56de0a53de361a125dd88b9f652ffea2961a4035fe6acc46670ef483ce86a5e5b66124562a27322099170c3cbfed524b2d07ad048a84e304ab70bd + languageName: node + linkType: hard + +"@emotion/babel-plugin@npm:^11.3.0": + version: 11.7.1 + resolution: "@emotion/babel-plugin@npm:11.7.1" + dependencies: + "@babel/helper-module-imports": ^7.12.13 + "@babel/plugin-syntax-jsx": ^7.12.13 + "@babel/runtime": ^7.13.10 + "@emotion/hash": ^0.8.0 + "@emotion/memoize": ^0.7.5 + "@emotion/serialize": ^1.0.2 + babel-plugin-macros: ^2.6.1 + convert-source-map: ^1.5.0 + escape-string-regexp: ^4.0.0 + find-root: ^1.1.0 + source-map: ^0.5.7 + stylis: 4.0.13 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 0c04de6a0a17bc52b76cdd0a2f5c272b56c7e1045316f49116b710840b4f7431852ecefd3ca0878136290c4d05d202567a6e6c0c877a5e714fa68d98fb8ee14d + languageName: node + linkType: hard + +"@emotion/cache@npm:^11.6.0, @emotion/cache@npm:^11.7.1": + version: 11.7.1 + resolution: "@emotion/cache@npm:11.7.1" + dependencies: + "@emotion/memoize": ^0.7.4 + "@emotion/sheet": ^1.1.0 + "@emotion/utils": ^1.0.0 + "@emotion/weak-memoize": ^0.2.5 + stylis: 4.0.13 + checksum: cf7aa8fe3bacfdedcda94b53e76a7635e122043439715fcfbf7f1a81340cfe6099a59134481a03ec3e0437466566d18528577d1e6ea92f5b98c372b8b38a8f35 + languageName: node + linkType: hard + +"@emotion/css-prettifier@npm:^1.0.1": + version: 1.0.1 + resolution: "@emotion/css-prettifier@npm:1.0.1" + dependencies: + "@emotion/memoize": ^0.7.4 + stylis: 4.0.13 + checksum: 3c75e59b072fc4c6d1e555696ac01e41a02d29324c2e95795b6c1b2caae765f1967f561b64cf19522a06ec0d7bf89948ccf9ba8c000335a6693b6a4b43b74b92 + languageName: node + linkType: hard + "@emotion/hash@npm:^0.8.0": version: 0.8.0 resolution: "@emotion/hash@npm:0.8.0" @@ -1707,6 +1835,146 @@ __metadata: languageName: node linkType: hard +"@emotion/is-prop-valid@npm:^1.1.1": + version: 1.1.1 + resolution: "@emotion/is-prop-valid@npm:1.1.1" + dependencies: + "@emotion/memoize": ^0.7.4 + checksum: 5816696dae6ac79537a31fe95256e0c1f55651507204676dd9903542b102f727c16a68924e6634a89b0972f0d15b0803bb9d4e14bd0fb8a49da8a2e3956e6639 + languageName: node + linkType: hard + +"@emotion/jest@npm:^11.7.1": + version: 11.7.1 + resolution: "@emotion/jest@npm:11.7.1" + dependencies: + "@babel/runtime": ^7.13.10 + "@emotion/css-prettifier": ^1.0.1 + chalk: ^4.1.0 + specificity: ^0.4.1 + stylis: 4.0.13 + peerDependencies: + "@types/jest": ^26.0.14 || ^27.0.0 + enzyme-to-json: ^3.2.1 + peerDependenciesMeta: + "@types/jest": + optional: true + enzyme-to-json: + optional: true + checksum: 27137da08156e0157402f86392bb924dcf6a366cfd7e94b9d8a5903bdbfe0e86a9c8832d6d933b8d2bda9933f469121cad7c4110f0a19085eb4b23bc2f407406 + languageName: node + linkType: hard + +"@emotion/memoize@npm:^0.7.4, @emotion/memoize@npm:^0.7.5": + version: 0.7.5 + resolution: "@emotion/memoize@npm:0.7.5" + checksum: 83da8d4a7649a92c72f960817692bc6be13cc13e107b9f7e878d63766525ed4402881bfeb3cda61145c050281e7e260f114a0a2870515527346f2ef896b915b3 + languageName: node + linkType: hard + +"@emotion/react@npm:^11.7.0": + version: 11.7.1 + resolution: "@emotion/react@npm:11.7.1" + dependencies: + "@babel/runtime": ^7.13.10 + "@emotion/cache": ^11.7.1 + "@emotion/serialize": ^1.0.2 + "@emotion/sheet": ^1.1.0 + "@emotion/utils": ^1.0.0 + "@emotion/weak-memoize": ^0.2.5 + hoist-non-react-statics: ^3.3.1 + peerDependencies: + "@babel/core": ^7.0.0 + react: ">=16.8.0" + peerDependenciesMeta: + "@babel/core": + optional: true + "@types/react": + optional: true + checksum: 3392aa71f9c68c16022947959f7f842174e6b075b3baf58e185462411cd9b5a87557109a9225b1abaa2d7200a08b7cb9d7f21aa035f0d36b2c89e19b2a124e02 + languageName: node + linkType: hard + +"@emotion/serialize@npm:^1.0.2": + version: 1.0.2 + resolution: "@emotion/serialize@npm:1.0.2" + dependencies: + "@emotion/hash": ^0.8.0 + "@emotion/memoize": ^0.7.4 + "@emotion/unitless": ^0.7.5 + "@emotion/utils": ^1.0.0 + csstype: ^3.0.2 + checksum: ff84fbe09ec06e7ad3deaef5c5b5ea6af6a522e8efe49c2b398b875d06872626284a83b6b18b7f777750c94264a61e7924157d869d9bca2f675731bbb91a6055 + languageName: node + linkType: hard + +"@emotion/server@npm:^11.4.0": + version: 11.4.0 + resolution: "@emotion/server@npm:11.4.0" + dependencies: + "@emotion/utils": ^1.0.0 + html-tokenize: ^2.0.0 + multipipe: ^1.0.2 + through: ^2.3.8 + peerDependencies: + "@emotion/css": ^11.0.0-rc.0 + peerDependenciesMeta: + "@emotion/css": + optional: true + checksum: 41ed2472c3b16e5f28126fed755098d1cc2f189096fa830b98583558d93d153e5b0ced8bd1a7514803f1c29ad218a5cd75dc6a348efcd44167a4cdd11887b2f2 + languageName: node + linkType: hard + +"@emotion/sheet@npm:^1.1.0": + version: 1.1.0 + resolution: "@emotion/sheet@npm:1.1.0" + checksum: a4b74e16a8fea1157413efe4904f5f679d724323cb605d66d20a0b98744422f5d411fca927ceb52e4de454a0a819c5273ca9496db9f011b4ecd17b9f1b212007 + languageName: node + linkType: hard + +"@emotion/styled@npm:^11.6.0": + version: 11.6.0 + resolution: "@emotion/styled@npm:11.6.0" + dependencies: + "@babel/runtime": ^7.13.10 + "@emotion/babel-plugin": ^11.3.0 + "@emotion/is-prop-valid": ^1.1.1 + "@emotion/serialize": ^1.0.2 + "@emotion/utils": ^1.0.0 + peerDependencies: + "@babel/core": ^7.0.0 + "@emotion/react": ^11.0.0-rc.0 + react: ">=16.8.0" + peerDependenciesMeta: + "@babel/core": + optional: true + "@types/react": + optional: true + checksum: 612bbf114a4ca49e5b3ec4554bea1cd5aad9eeb2371babc3e6b79eab5020bd0300b9904108b621837fe715e221ba09dd131dc29918c1fd966e082d8e74fca833 + languageName: node + linkType: hard + +"@emotion/unitless@npm:^0.7.5": + version: 0.7.5 + resolution: "@emotion/unitless@npm:0.7.5" + checksum: f976e5345b53fae9414a7b2e7a949aa6b52f8bdbcc84458b1ddc0729e77ba1d1dfdff9960e0da60183877873d3a631fa24d9695dd714ed94bcd3ba5196586a6b + languageName: node + linkType: hard + +"@emotion/utils@npm:^1.0.0": + version: 1.0.0 + resolution: "@emotion/utils@npm:1.0.0" + checksum: 3ce8048441a915447d9ef51eb6d1d4cbcce8c8d1647bc7a23333ce2fb2249e74cf9471670d6f49a716e93ff633c9e7a6633517698e17391aebfc40c9d0cabcc0 + languageName: node + linkType: hard + +"@emotion/weak-memoize@npm:^0.2.5": + version: 0.2.5 + resolution: "@emotion/weak-memoize@npm:0.2.5" + checksum: 27d402b0c683b94658220b6d47840346ee582329ca2a15ec9c233492e0f1a27687ccb233b76eedc922f2e185e444cc89f7b97a81a1d3e5ae9f075bab08e965ea + languageName: node + linkType: hard + "@endemolshinegroup/cosmiconfig-typescript-loader@npm:^3.0.2": version: 3.0.2 resolution: "@endemolshinegroup/cosmiconfig-typescript-loader@npm:3.0.2" @@ -1797,14 +2065,14 @@ __metadata: languageName: node linkType: hard -"@jest/core@npm:^27.4.4": - version: 27.4.4 - resolution: "@jest/core@npm:27.4.4" +"@jest/core@npm:^27.4.5": + version: 27.4.5 + resolution: "@jest/core@npm:27.4.5" dependencies: "@jest/console": ^27.4.2 - "@jest/reporters": ^27.4.4 + "@jest/reporters": ^27.4.5 "@jest/test-result": ^27.4.2 - "@jest/transform": ^27.4.4 + "@jest/transform": ^27.4.5 "@jest/types": ^27.4.2 "@types/node": "*" ansi-escapes: ^4.2.1 @@ -1813,15 +2081,15 @@ __metadata: exit: ^0.1.2 graceful-fs: ^4.2.4 jest-changed-files: ^27.4.2 - jest-config: ^27.4.4 - jest-haste-map: ^27.4.4 + jest-config: ^27.4.5 + jest-haste-map: ^27.4.5 jest-message-util: ^27.4.2 jest-regex-util: ^27.4.0 - jest-resolve: ^27.4.4 - jest-resolve-dependencies: ^27.4.4 - jest-runner: ^27.4.4 - jest-runtime: ^27.4.4 - jest-snapshot: ^27.4.4 + jest-resolve: ^27.4.5 + jest-resolve-dependencies: ^27.4.5 + jest-runner: ^27.4.5 + jest-runtime: ^27.4.5 + jest-snapshot: ^27.4.5 jest-util: ^27.4.2 jest-validate: ^27.4.2 jest-watcher: ^27.4.2 @@ -1834,7 +2102,7 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 2eac488307b19ba6751a03a8b07a1464913aacc4b4a5fcb28cea84555d76dcb77c6831574bc7aa477f396915813f303441b6f9392fe0c229d93634a1fb6d41a8 + checksum: d9332952196018abfc0b5cbbc9062f71872859bbe7a55b98788fc7b2f30fec1286d2dd882d8aa75fa14f5aeea8401a3eaacfed88dc86b159934dc35e06a2cadd languageName: node linkType: hard @@ -1875,14 +2143,14 @@ __metadata: languageName: node linkType: hard -"@jest/reporters@npm:^27.4.4": - version: 27.4.4 - resolution: "@jest/reporters@npm:27.4.4" +"@jest/reporters@npm:^27.4.5": + version: 27.4.5 + resolution: "@jest/reporters@npm:27.4.5" dependencies: "@bcoe/v8-coverage": ^0.2.3 "@jest/console": ^27.4.2 "@jest/test-result": ^27.4.2 - "@jest/transform": ^27.4.4 + "@jest/transform": ^27.4.5 "@jest/types": ^27.4.2 "@types/node": "*" chalk: ^4.0.0 @@ -1895,10 +2163,10 @@ __metadata: istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.0.2 - jest-haste-map: ^27.4.4 - jest-resolve: ^27.4.4 + jest-haste-map: ^27.4.5 + jest-resolve: ^27.4.5 jest-util: ^27.4.2 - jest-worker: ^27.4.4 + jest-worker: ^27.4.5 slash: ^3.0.0 source-map: ^0.6.0 string-length: ^4.0.1 @@ -1909,7 +2177,7 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 67a6bf9ec4ac9a8ea68e3a1d0702ec3cb6daf5f51c95f17563e98bab9f49b016a61d5b2e2c483aac690fe63b33038a12944a3551c35cdb1ae81ecadffa64cb36 + checksum: d053edae6906171f29c50c6129a600dd10d00320adf6df57938efc651ddd98aecdf7e3f82c3778e77311e8358e57e337d21c391aa867c9c289366e7bd4d6cf2b languageName: node linkType: hard @@ -1936,21 +2204,21 @@ __metadata: languageName: node linkType: hard -"@jest/test-sequencer@npm:^27.4.4": - version: 27.4.4 - resolution: "@jest/test-sequencer@npm:27.4.4" +"@jest/test-sequencer@npm:^27.4.5": + version: 27.4.5 + resolution: "@jest/test-sequencer@npm:27.4.5" dependencies: "@jest/test-result": ^27.4.2 graceful-fs: ^4.2.4 - jest-haste-map: ^27.4.4 - jest-runtime: ^27.4.4 - checksum: 37e3df089fe15e7f7c2070c915267d89aae1dfe72f97ea210ee974f48a2797637276c46fa5481a09614c8107529578aea9e498f54e2b3ed3aa9f888d0f9e3460 + jest-haste-map: ^27.4.5 + jest-runtime: ^27.4.5 + checksum: b78376fe4b964f2fd7e71083c220e5f0a8f59f079dc88783c60fce969b09ea38eebabc32c50a4637c20679a8bfa8220abb814cd232d241ee385d4df3d93f7d21 languageName: node linkType: hard -"@jest/transform@npm:^27.4.4": - version: 27.4.4 - resolution: "@jest/transform@npm:27.4.4" +"@jest/transform@npm:^27.4.5": + version: 27.4.5 + resolution: "@jest/transform@npm:27.4.5" dependencies: "@babel/core": ^7.1.0 "@jest/types": ^27.4.2 @@ -1959,7 +2227,7 @@ __metadata: convert-source-map: ^1.4.0 fast-json-stable-stringify: ^2.0.0 graceful-fs: ^4.2.4 - jest-haste-map: ^27.4.4 + jest-haste-map: ^27.4.5 jest-regex-util: ^27.4.0 jest-util: ^27.4.2 micromatch: ^4.0.4 @@ -1967,7 +2235,7 @@ __metadata: slash: ^3.0.0 source-map: ^0.6.1 write-file-atomic: ^3.0.0 - checksum: 931e323b7dc390ab6205f97b69d0e35e5efeec44a55a536bc5e4d2dab4a07955e9d2f6f6bce7b54112d83e4659c81b1c680602642fcf32dce405f26f3bb1a1b3 + checksum: f7a479545969d327a253ff1963c20260cffdee50cbc1345205f06e206df09871dd3f62dd4ba5358a087587ef5fa320b2e32efe1166192d8da835065e99d6bce7 languageName: node linkType: hard @@ -2009,224 +2277,267 @@ __metadata: linkType: hard "@loadable/component@npm:^5.15.0": - version: 5.15.0 - resolution: "@loadable/component@npm:5.15.0" + version: 5.15.2 + resolution: "@loadable/component@npm:5.15.2" dependencies: "@babel/runtime": ^7.7.7 hoist-non-react-statics: ^3.3.1 react-is: ^16.12.0 peerDependencies: react: ">=16.3.0" - checksum: 20d2836ea18431843ed25fa243f27d63a1a7bc9b541f12e7fdc95ed6be53311cd0f9467db293c4b7ea801c0950226abdcb4ea45aa7e13d5f2f728e70d1a4576e + checksum: dd027f3f9fb684613506fe48dcb656367a13731c139134fb71c2bc1734df4218fdb64e5ca80fa2575fdf52e1be0e0a2ec770f0ca77275706e66d1074d0835401 languageName: node linkType: hard "@loadable/server@npm:^5.15.1": - version: 5.15.1 - resolution: "@loadable/server@npm:5.15.1" + version: 5.15.2 + resolution: "@loadable/server@npm:5.15.2" dependencies: lodash: ^4.17.15 peerDependencies: "@loadable/component": ^5.0.1 react: ">=16.3.0" - checksum: cd8ba04709bd66bad426619a160fc814a7e14fe2006b5a1a6e44ba7832b455a34354dc75f8101496e6d384f972ea30befcaa2c23e13db553d7fdb1ed191d1a94 + checksum: 9f7188b4d79717dd058ed9064fcf8454f236dc2165280203110d34e8a7f63cbe8ba9ab77a337174108a150b05715b64b0131295a28b2866b320514299f35db29 languageName: node linkType: hard "@loadable/webpack-plugin@npm:^5.15.1": - version: 5.15.1 - resolution: "@loadable/webpack-plugin@npm:5.15.1" + version: 5.15.2 + resolution: "@loadable/webpack-plugin@npm:5.15.2" dependencies: make-dir: ^3.0.2 peerDependencies: webpack: ">=4.6.0" - checksum: e4edc018f8ecb759ffae0b9d3603a90d78947b71768dee930569848fb3f4b268a55fb555c82bb84fe4f8c87b7173c79cb08d71812db7f3f7c6296cc210f9d699 + checksum: fee31c7f8c158c1cf987dee57e1a8e7b822decd004fd3c00895e30c6780584410d0199e44d10e7bf225ea30bed439404755272396d515d51a65f02e8e3ae1db0 languageName: node linkType: hard "@mapbox/node-pre-gyp@npm:^1.0.5": - version: 1.0.7 - resolution: "@mapbox/node-pre-gyp@npm:1.0.7" + version: 1.0.8 + resolution: "@mapbox/node-pre-gyp@npm:1.0.8" dependencies: detect-libc: ^1.0.3 https-proxy-agent: ^5.0.0 make-dir: ^3.1.0 node-fetch: ^2.6.5 nopt: ^5.0.0 - npmlog: ^6.0.0 + npmlog: ^5.0.1 rimraf: ^3.0.2 semver: ^7.3.5 tar: ^6.1.11 bin: node-pre-gyp: bin/node-pre-gyp - checksum: bb6ac315e71649a7991f3a01bc576ef38345c66b58736d756508896fe75f3002bfaaabba76e3a9a9820b2e2e90c751fbdce480dcabe688940722f214eb679617 + checksum: 29a38f39575107fa1665edf14defcfdf62e12bb38e9c27f7457ba42be84060125015171d12b8de3065155a465992f1854a363e2985f071fcbea9ff0701362b05 languageName: node linkType: hard -"@material-ui/core@npm:^4.12.3": - version: 4.12.3 - resolution: "@material-ui/core@npm:4.12.3" +"@mui/base@npm:5.0.0-alpha.60": + version: 5.0.0-alpha.60 + resolution: "@mui/base@npm:5.0.0-alpha.60" dependencies: - "@babel/runtime": ^7.4.4 - "@material-ui/styles": ^4.11.4 - "@material-ui/system": ^4.12.1 - "@material-ui/types": 5.1.0 - "@material-ui/utils": ^4.11.2 - "@types/react-transition-group": ^4.2.0 - clsx: ^1.0.4 - hoist-non-react-statics: ^3.3.2 - popper.js: 1.16.1-lts + "@babel/runtime": ^7.16.3 + "@emotion/is-prop-valid": ^1.1.1 + "@mui/utils": ^5.2.3 + "@popperjs/core": ^2.4.4 + clsx: ^1.1.1 prop-types: ^15.7.2 - react-is: ^16.8.0 || ^17.0.0 - react-transition-group: ^4.4.0 + react-is: ^17.0.2 peerDependencies: "@types/react": ^16.8.6 || ^17.0.0 - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 + react: ^17.0.2 + react-dom: ^17.0.2 peerDependenciesMeta: "@types/react": optional: true - checksum: f0032b8c04883fa4aed66a949cde21f1df35c622fbab30b91cfe8fae9508729a4847db3843cba9b1c491466dd2100fddb9e691ffc6b86052a7986215dbb4f94c + checksum: 3aa0d5f25fda554ee418a54b9fc34d9744e6350ab3baa114d491935bd5bdeaba33472ac8000fd069affb43b71bc54503dbdb5183443ffdc0b952cd750ee2213b languageName: node linkType: hard -"@material-ui/icons@npm:^4.11.2": - version: 4.11.2 - resolution: "@material-ui/icons@npm:4.11.2" +"@mui/icons-material@npm:^5.2.1": + version: 5.2.4 + resolution: "@mui/icons-material@npm:5.2.4" dependencies: - "@babel/runtime": ^7.4.4 + "@babel/runtime": ^7.16.3 peerDependencies: - "@material-ui/core": ^4.0.0 + "@mui/material": ^5.0.0 "@types/react": ^16.8.6 || ^17.0.0 - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 + react: ^17.0.2 peerDependenciesMeta: "@types/react": optional: true - checksum: 0cd1d54b25a4237bd0cefd383d287911f721d4c4ac4fd7980370566b9927f3a9725e7a715042f7c65c87fa554173fbef5328de1d08e60eb996038f375ddf583a + checksum: d2081cf0923183acf9467c060452bcdbef50668be1a0d93b743680be5bae5914ea5aeeb319d214864b4ee5e7c28f775799ba9dcaa01c91ee66aed4543aba1542 languageName: node linkType: hard -"@material-ui/lab@npm:^4.0.0-alpha.60": - version: 4.0.0-alpha.60 - resolution: "@material-ui/lab@npm:4.0.0-alpha.60" +"@mui/lab@npm:^5.0.0-alpha.59": + version: 5.0.0-alpha.60 + resolution: "@mui/lab@npm:5.0.0-alpha.60" dependencies: - "@babel/runtime": ^7.4.4 - "@material-ui/utils": ^4.11.2 - clsx: ^1.0.4 + "@babel/runtime": ^7.16.3 + "@date-io/date-fns": ^2.11.0 + "@date-io/dayjs": ^2.11.0 + "@date-io/luxon": ^2.11.1 + "@date-io/moment": ^2.11.0 + "@mui/base": 5.0.0-alpha.60 + "@mui/system": ^5.2.4 + "@mui/utils": ^5.2.3 + clsx: ^1.1.1 prop-types: ^15.7.2 - react-is: ^16.8.0 || ^17.0.0 + react-is: ^17.0.2 + react-transition-group: ^4.4.2 + rifm: ^0.12.1 peerDependencies: - "@material-ui/core": ^4.12.1 + "@mui/material": ^5.0.0 "@types/react": ^16.8.6 || ^17.0.0 - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 + date-fns: ^2.25.0 + dayjs: ^1.10.7 + luxon: ^1.28.0 || ^2.0.0 + moment: ^2.29.1 + react: ^17.0.2 + react-dom: ^17.0.2 peerDependenciesMeta: "@types/react": optional: true - checksum: 8da8bcd63621f0ee1bc3a2013a1b54c89259cc17833ab4728bb0b95d08535dfee884779a76d6fec8597f2dd1748b3ce008e114bcd18ce26c6f4abd223cfeaebb + date-fns: + optional: true + dayjs: + optional: true + luxon: + optional: true + moment: + optional: true + checksum: 21470b8f0ccba497eb4c4c6316958fe87c497a64483efe90388acde7d0eff74f842401a915a24a017b8c3955f3e58835fe3f25b34dd4506a170cb48014f42622 languageName: node linkType: hard -"@material-ui/pickers@npm:^3.3.10": - version: 3.3.10 - resolution: "@material-ui/pickers@npm:3.3.10" +"@mui/material@npm:^5.2.3": + version: 5.2.4 + resolution: "@mui/material@npm:5.2.4" dependencies: - "@babel/runtime": ^7.6.0 - "@date-io/core": 1.x - "@types/styled-jsx": ^2.2.8 - clsx: ^1.0.2 - react-transition-group: ^4.0.0 - rifm: ^0.7.0 + "@babel/runtime": ^7.16.3 + "@mui/base": 5.0.0-alpha.60 + "@mui/system": ^5.2.4 + "@mui/types": ^7.1.0 + "@mui/utils": ^5.2.3 + "@types/react-transition-group": ^4.4.4 + clsx: ^1.1.1 + csstype: ^3.0.10 + hoist-non-react-statics: ^3.3.2 + prop-types: ^15.7.2 + react-is: ^17.0.2 + react-transition-group: ^4.4.2 peerDependencies: - "@date-io/core": ^1.3.6 - "@material-ui/core": ^4.0.0 - prop-types: ^15.6.0 - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - checksum: b8ec52f2e8a4dfae8f14e29c41428a708c843d2c64b5ece64747d8d9401edaeb4d7de6cce985d13e486f2addec1b7787eeed7a3dfcbba90803c23f1ba2ed2420 + "@emotion/react": ^11.5.0 + "@emotion/styled": ^11.3.0 + "@types/react": ^16.8.6 || ^17.0.0 + react: ^17.0.2 + react-dom: ^17.0.2 + peerDependenciesMeta: + "@emotion/react": + optional: true + "@emotion/styled": + optional: true + "@types/react": + optional: true + checksum: 09f4c731de02c628271d355e8801e53f363566d6ba61f3e226417e575f8704daf783d3494088cb81ba013696ec7d829318989ef999058b5c1e033b075a9036df languageName: node linkType: hard -"@material-ui/styles@npm:^4.11.4": - version: 4.11.4 - resolution: "@material-ui/styles@npm:4.11.4" +"@mui/private-theming@npm:^5.2.3": + version: 5.2.3 + resolution: "@mui/private-theming@npm:5.2.3" dependencies: - "@babel/runtime": ^7.4.4 - "@emotion/hash": ^0.8.0 - "@material-ui/types": 5.1.0 - "@material-ui/utils": ^4.11.2 - clsx: ^1.0.4 - csstype: ^2.5.2 - hoist-non-react-statics: ^3.3.2 - jss: ^10.5.1 - jss-plugin-camel-case: ^10.5.1 - jss-plugin-default-unit: ^10.5.1 - jss-plugin-global: ^10.5.1 - jss-plugin-nested: ^10.5.1 - jss-plugin-props-sort: ^10.5.1 - jss-plugin-rule-value-function: ^10.5.1 - jss-plugin-vendor-prefixer: ^10.5.1 + "@babel/runtime": ^7.16.3 + "@mui/utils": ^5.2.3 prop-types: ^15.7.2 peerDependencies: "@types/react": ^16.8.6 || ^17.0.0 - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 + react: ^17.0.2 peerDependenciesMeta: "@types/react": optional: true - checksum: ef9abc486c74943df28a69d095ee07d752b17e27e70d6adede6cc368f0811529260bc509c664dff995763f02b5324594c98cf71f5d8981ea98dd25c0e2c1dd39 + checksum: 3d753e58c6685097f57e65910034f60acb905f5de2eeee365bb0ee3cc09475921e6ace0751c209451d92aa9039508a02c85c10165529ae95362c193987a9d377 + languageName: node + linkType: hard + +"@mui/styled-engine@npm:^5.2.4": + version: 5.2.4 + resolution: "@mui/styled-engine@npm:5.2.4" + dependencies: + "@babel/runtime": ^7.16.3 + "@emotion/cache": ^11.6.0 + prop-types: ^15.7.2 + peerDependencies: + "@emotion/react": ^11.4.1 + "@emotion/styled": ^11.3.0 + react: ^17.0.2 + peerDependenciesMeta: + "@emotion/react": + optional: true + "@emotion/styled": + optional: true + checksum: c55d2b90f33d56abe215a565831418f8e723c77e0114fe85d9fe52b482566b743728436b0711706848b505e479bff912ce1f979ac98131c232aaa6ee917202a6 languageName: node linkType: hard -"@material-ui/system@npm:^4.12.1": - version: 4.12.1 - resolution: "@material-ui/system@npm:4.12.1" +"@mui/system@npm:^5.2.3, @mui/system@npm:^5.2.4": + version: 5.2.4 + resolution: "@mui/system@npm:5.2.4" dependencies: - "@babel/runtime": ^7.4.4 - "@material-ui/utils": ^4.11.2 - csstype: ^2.5.2 + "@babel/runtime": ^7.16.3 + "@mui/private-theming": ^5.2.3 + "@mui/styled-engine": ^5.2.4 + "@mui/types": ^7.1.0 + "@mui/utils": ^5.2.3 + clsx: ^1.1.1 + csstype: ^3.0.10 prop-types: ^15.7.2 peerDependencies: + "@emotion/react": ^11.5.0 + "@emotion/styled": ^11.3.0 "@types/react": ^16.8.6 || ^17.0.0 - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 + react: ^17.0.2 peerDependenciesMeta: + "@emotion/react": + optional: true + "@emotion/styled": + optional: true "@types/react": optional: true - checksum: 2acf20b43090c381530899e2fa85b0a774fc4dfe08aa97a55c8fd58f833175fd1cb17374ecc403f722c2db3b3caffd1fadd5dffe146a08d036bc6031d676659b + checksum: ba67104caf30b4b9afa9e7c4d1b2e64b9a45e92c1167d6138200ad10afe5c99ba45be06add53118ae9d5102851ad4404c12b26f66ab8f4fe8381aa70292bbd0e languageName: node linkType: hard -"@material-ui/types@npm:5.1.0": - version: 5.1.0 - resolution: "@material-ui/types@npm:5.1.0" +"@mui/types@npm:^7.1.0": + version: 7.1.0 + resolution: "@mui/types@npm:7.1.0" peerDependencies: "@types/react": "*" peerDependenciesMeta: "@types/react": optional: true - checksum: 64ac0938ee6f48011ba596f7422ab0660d9a8d9b4f5f183b39bd63185b1ce724209f65580f0af686d59b524603ffa57418ca2d443b69bec894303f80779c61f8 + checksum: 175825cd118e434eb280d9490a9f2afbe45ff50d51053dae5f4866f45f8cf33ab3b2f46b620b5d98bdd4daf00f7f6f51cf77a6ce0c9060256e6ec5448526eb6f languageName: node linkType: hard -"@material-ui/utils@npm:^4.11.2": - version: 4.11.2 - resolution: "@material-ui/utils@npm:4.11.2" +"@mui/utils@npm:^5.2.3": + version: 5.2.3 + resolution: "@mui/utils@npm:5.2.3" dependencies: - "@babel/runtime": ^7.4.4 + "@babel/runtime": ^7.16.3 + "@types/prop-types": ^15.7.4 + "@types/react-is": ^16.7.1 || ^17.0.0 prop-types: ^15.7.2 - react-is: ^16.8.0 || ^17.0.0 + react-is: ^17.0.2 peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - checksum: 30e15b197c52bb607ba2f00293acbda66388427560e30f5dd82714dee69f565cf0896baa98f869b191a881e14e0df08155fd9d598b356ac2262b8e60e43a5499 + react: ^17.0.2 + checksum: 554a7e19fc0768222023463ccdf51bd2c59fb6f1325aa1df7132cea555c58b5cdffe74f221ecab6861dc7ab8aa0dd359e19e40070bb683a296d2433ca2969315 languageName: node linkType: hard -"@nestjs/common@npm:8.2.3": - version: 8.2.3 - resolution: "@nestjs/common@npm:8.2.3" +"@nestjs/common@npm:8.2.4": + version: 8.2.4 + resolution: "@nestjs/common@npm:8.2.4" dependencies: axios: 0.24.0 iterare: 1.2.1 @@ -2245,13 +2556,13 @@ __metadata: optional: true class-validator: optional: true - checksum: 2a06ffaf58da0622727621db0b6574cad94f4a0d9b895bb8352f736207c7087fce477185b2cacd3b013b0386860e573b0d27b900783df6885e32fc943d5e87b8 + checksum: a2945b7fb7bccb848357d98f90711d6a3cc064aff9ca20e207cc88b8bc8003035a8e4ac0e858245bfe352ef0deae1547420499540ca8688c417e71af3b34ab19 languageName: node linkType: hard -"@nestjs/core@npm:8.2.3": - version: 8.2.3 - resolution: "@nestjs/core@npm:8.2.3" +"@nestjs/core@npm:8.2.4": + version: 8.2.4 + resolution: "@nestjs/core@npm:8.2.4" dependencies: "@nuxtjs/opencollective": 0.3.2 fast-safe-stringify: 2.1.1 @@ -2274,7 +2585,7 @@ __metadata: optional: true "@nestjs/websockets": optional: true - checksum: 35da95f8c17ab5d44b7aecef91cc77bdf0ddc23df93854d4a2ac8f1db633bbe17f96434128d343aee17464e332f2c6431abad4e3ed18f6a8b5b63d5fedb57655 + checksum: 9bf9ddb586ad4c84f3f8c906d4eaef8985a702d082ca4c80b933c97d63863a7a60cd2b543782e1084b0905822b3a89500f2349f47e0e8a4d256016e60f3511f9 languageName: node linkType: hard @@ -2345,35 +2656,19 @@ __metadata: languageName: node linkType: hard -"@oclif/cmd@npm:@oclif/command@1.8.12, @oclif/command@npm:^1.8.0, @oclif/command@npm:^1.8.9": - version: 1.8.12 - resolution: "@oclif/command@npm:1.8.12" - dependencies: - "@oclif/config": ^1.18.2 - "@oclif/errors": ^1.3.5 - "@oclif/parser": ^3.8.6 - "@oclif/plugin-help": 3.2.16 - debug: ^4.1.1 - semver: ^7.3.2 - peerDependencies: - "@oclif/config": ^1 - checksum: 12fdf13f2e380df0976d28abfd610d604c714ad68c25894be3fc5b3521a09da92d28931d0593ecd44777a81dc744ef2badf5c05073889a845d38181ae417cf1f - languageName: node - linkType: hard - -"@oclif/command@npm:1.8.11": - version: 1.8.11 - resolution: "@oclif/command@npm:1.8.11" +"@oclif/command@npm:^1.8.0, @oclif/command@npm:^1.8.15": + version: 1.8.16 + resolution: "@oclif/command@npm:1.8.16" dependencies: "@oclif/config": ^1.18.2 "@oclif/errors": ^1.3.5 + "@oclif/help": ^1.0.1 "@oclif/parser": ^3.8.6 - "@oclif/plugin-help": 3.2.14 debug: ^4.1.1 semver: ^7.3.2 peerDependencies: "@oclif/config": ^1 - checksum: c0bb4938f8f252615ee778693e9cb9c56e9ba8e2d58bd922ebc17b3eb8dc965a8253beda94331a1f7fd3cf06b6ac5666e158a5b360b73df75915556aeb0afa37 + checksum: c7cac8e1f9a7e5d9d88a316becc6f7f3bc72fce1a2d583d39b0b08cd98c13f0fe71e256f90ac586d7bd21054c8e76c0fef0b823bb7d108977d777e10c2678e7d languageName: node linkType: hard @@ -2404,6 +2699,23 @@ __metadata: languageName: node linkType: hard +"@oclif/help@npm:^1.0.1": + version: 1.0.1 + resolution: "@oclif/help@npm:1.0.1" + dependencies: + "@oclif/config": 1.18.2 + "@oclif/errors": 1.3.5 + chalk: ^4.1.2 + indent-string: ^4.0.0 + lodash: ^4.17.21 + string-width: ^4.2.0 + strip-ansi: ^6.0.0 + widest-line: ^3.1.0 + wrap-ansi: ^6.2.0 + checksum: 26cdde82ca98f34bc57f7c7513b151f5fc2a6332f37b2f1186fe6d946011b7a4cc11e91053c569ebd28ad2b2ea90fd4a0851a21167e7780041a0caf369a8b277 + languageName: node + linkType: hard + "@oclif/linewrap@npm:^1.0.0": version: 1.0.0 resolution: "@oclif/linewrap@npm:1.0.0" @@ -2423,49 +2735,14 @@ __metadata: languageName: node linkType: hard -"@oclif/plugin-help@npm:3.2.14": - version: 3.2.14 - resolution: "@oclif/plugin-help@npm:3.2.14" - dependencies: - "@oclif/command": ^1.8.9 - "@oclif/config": ^1.18.2 - "@oclif/errors": ^1.3.5 - chalk: ^4.1.2 - indent-string: ^4.0.0 - lodash: ^4.17.21 - string-width: ^4.2.0 - strip-ansi: ^6.0.0 - widest-line: ^3.1.0 - wrap-ansi: ^6.2.0 - checksum: 5dbb0265b9edb88d35b948e8795b5aeed8370dff0bc6c4053fb5191983f2cdc3b9345ecc7f8a9415821c25fea9668ef9e6894dfae8e160606931364bcc6549b6 - languageName: node - linkType: hard - -"@oclif/plugin-help@npm:3.2.16": - version: 3.2.16 - resolution: "@oclif/plugin-help@npm:3.2.16" - dependencies: - "@oclif/command": 1.8.11 - "@oclif/config": 1.18.2 - "@oclif/errors": 1.3.5 - chalk: ^4.1.2 - indent-string: ^4.0.0 - lodash: ^4.17.21 - string-width: ^4.2.0 - strip-ansi: ^6.0.0 - widest-line: ^3.1.0 - wrap-ansi: ^6.2.0 - checksum: 91e37208947bfda8905dbad7ffd8d9bfcedb474117582e4b5eda863a585ce2ef56b5bfdaa960038877c0aa77164a57252a584bf07c09f47b342efa1996b90d54 - languageName: node - linkType: hard - "@oclif/plugin-help@npm:^3.2.0": - version: 3.2.17 - resolution: "@oclif/plugin-help@npm:3.2.17" + version: 3.3.1 + resolution: "@oclif/plugin-help@npm:3.3.1" dependencies: - "@oclif/cmd": "npm:@oclif/command@1.8.12" + "@oclif/command": ^1.8.15 "@oclif/config": 1.18.2 "@oclif/errors": 1.3.5 + "@oclif/help": ^1.0.1 chalk: ^4.1.2 indent-string: ^4.0.0 lodash: ^4.17.21 @@ -2473,21 +2750,21 @@ __metadata: strip-ansi: ^6.0.0 widest-line: ^3.1.0 wrap-ansi: ^6.2.0 - checksum: cfe447f70b1ecc411b4316db1271d1ed0d66d157f5a539e1abafd04f0d213bdf108e95de75e723cc99ec7b78dbef9bde13e851380107bd202593818593553968 + checksum: 07c67a9ed32ea05a6407823325fac7379fdea2cd0b688ef927d6265f695c1e3707d13de6a706e2af5b1949ea4beb5720d11feb87e1f4323bfe5948846766d9e2 languageName: node linkType: hard "@openapitools/openapi-generator-cli@npm:^2.4.18": - version: 2.4.18 - resolution: "@openapitools/openapi-generator-cli@npm:2.4.18" + version: 2.4.21 + resolution: "@openapitools/openapi-generator-cli@npm:2.4.21" dependencies: - "@nestjs/common": 8.2.3 - "@nestjs/core": 8.2.3 + "@nestjs/common": 8.2.4 + "@nestjs/core": 8.2.4 "@nuxtjs/opencollective": 0.3.2 chalk: 4.1.2 commander: 8.3.0 compare-versions: 3.6.0 - concurrently: 6.4.0 + concurrently: 6.5.1 console.table: 0.10.0 fs-extra: 10.0.0 glob: 7.1.6 @@ -2498,7 +2775,7 @@ __metadata: tslib: 2.0.3 bin: openapi-generator-cli: main.js - checksum: b35fe3d5c5d514e70d7c1dea464606fbe93024b71996cb499d0e285ca0db751e2a26e01aac7f3aac3ec2751d483af9c45bac2685bce76fc111d0d0bde3d18cc0 + checksum: 4d195d48cd383ebfef1a92ac2d3aba980f176f745394ecc32d1c1a7e5a8fa77ab484cdd331fea8e2aca663158f7beddfe46c3a50e8a38df53dd0b909e2ac04a5 languageName: node linkType: hard @@ -2725,6 +3002,13 @@ __metadata: languageName: node linkType: hard +"@popperjs/core@npm:^2.4.4": + version: 2.11.0 + resolution: "@popperjs/core@npm:2.11.0" + checksum: 84d6f197d3ddfd8a5b05c7276c3692d8404c96128a946ab0a800b25567d8fc231928319c1f97a67e0817e76ce2a1b735589ef0f38f8e8835692408660a2395a1 + languageName: node + linkType: hard + "@react-leaflet/core@npm:^1.1.1": version: 1.1.1 resolution: "@react-leaflet/core@npm:1.1.1" @@ -3082,12 +3366,12 @@ __metadata: linkType: hard "@types/eslint-scope@npm:^3.7.0": - version: 3.7.1 - resolution: "@types/eslint-scope@npm:3.7.1" + version: 3.7.2 + resolution: "@types/eslint-scope@npm:3.7.2" dependencies: "@types/eslint": "*" "@types/estree": "*" - checksum: 4271c9adad19ad8a1d23062d9020468a51c7f81594b12b8e68f7d460c09e14d57cae3e82b077c402766369c0c17e2de72da72c405fa465d18a46c0b14ce92530 + checksum: 7ce2b4a07c22e7b265d4ee145196fcf00993b8aaeecaf5cecc8231c820a000c00bfaee6c026a2f363c215822c8fbf5dbedb2d3f56621cdda87a6601db2a05319 languageName: node linkType: hard @@ -3352,16 +3636,16 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 16.11.12 - resolution: "@types/node@npm:16.11.12" - checksum: a3feb346d61a56f5a137c29bb8c63cfa3cc02e184b9dffdc18ef1528dcce55596e570575215a2e39e6ce69343eeb2a5ba71c271938f1dc8db4cc393902855412 + version: 17.0.1 + resolution: "@types/node@npm:17.0.1" + checksum: 16a5aa2778e1e49443d272f0da20af66c143337ddb14d9f36d5e7eb1e11ebbf195769d3d495ec5456ec94fe3d0e703c5df1ac279a05c7dc2a1220474467c1103 languageName: node linkType: hard "@types/node@npm:^14.14.31": - version: 14.18.0 - resolution: "@types/node@npm:14.18.0" - checksum: b120c26fe5f30bc358e861db8d7e401e419d14bd9dd25c022f3c2ea8b0b429d4c9efd77ad5d6d2a8bde61702a6786fb74d409f1b2cbb61c79133e2a65aab4fb1 + version: 14.18.1 + resolution: "@types/node@npm:14.18.1" + checksum: 4ad88c071792081a04069d7380aff855b8982bf3e064c7c9614c8dba69cafa0f50899950326429baa9ee7b2c5b4306ed7dca1411e209281aaea31809a40adbe4 languageName: node linkType: hard @@ -3395,7 +3679,7 @@ __metadata: languageName: node linkType: hard -"@types/prop-types@npm:*": +"@types/prop-types@npm:*, @types/prop-types@npm:^15.7.4": version: 15.7.4 resolution: "@types/prop-types@npm:15.7.4" checksum: ef6e1899e59b876c273811b1bd845022fc66d5a3d11cb38a25b6c566b30514ae38fe20a40f67622f362a4f4f7f9224e22d8da101cff3d6e97e11d7b4c307cfc1 @@ -3425,6 +3709,15 @@ __metadata: languageName: node linkType: hard +"@types/react-is@npm:^16.7.1 || ^17.0.0": + version: 17.0.3 + resolution: "@types/react-is@npm:17.0.3" + dependencies: + "@types/react": "*" + checksum: 6abb7c47d54f012272650df8a962a28bd82f219291e5ef8b4dfa7fe0bb98ae243b060bf9fbe8ceff6213141794855a006db194b490b00ffd15842ae19d0ce1f0 + languageName: node + linkType: hard + "@types/react-router-dom@npm:5.3.2": version: 5.3.2 resolution: "@types/react-router-dom@npm:5.3.2" @@ -3446,7 +3739,7 @@ __metadata: languageName: node linkType: hard -"@types/react-transition-group@npm:^4.2.0": +"@types/react-transition-group@npm:^4.4.4": version: 4.4.4 resolution: "@types/react-transition-group@npm:4.4.4" dependencies: @@ -3537,15 +3830,6 @@ __metadata: languageName: node linkType: hard -"@types/styled-jsx@npm:^2.2.8": - version: 2.2.9 - resolution: "@types/styled-jsx@npm:2.2.9" - dependencies: - "@types/react": "*" - checksum: 0e7e9bce8435116168b2470c7599b3b6ad5775c678d5dc06b64b0bc4fe369c59603c794a7298e2ca4e209aa0135f98df89793a3a0778251c1907b34198c55e9e - languageName: node - linkType: hard - "@types/superagent@npm:*": version: 4.1.13 resolution: "@types/superagent@npm:4.1.13" @@ -3691,11 +3975,11 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^5.1.0": - version: 5.6.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.6.0" + version: 5.7.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.7.0" dependencies: - "@typescript-eslint/experimental-utils": 5.6.0 - "@typescript-eslint/scope-manager": 5.6.0 + "@typescript-eslint/experimental-utils": 5.7.0 + "@typescript-eslint/scope-manager": 5.7.0 debug: ^4.3.2 functional-red-black-tree: ^1.0.1 ignore: ^5.1.8 @@ -3708,66 +3992,66 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: aeae8c2de535cad6032c0b27fbb86baccd07788319efd5a97d828bc03a85eae5e635aff794a1d7a2b3ee2a84d6d6d7e68c42438fee62af42fead89f381df7bca + checksum: e3674ee680e5dffecdb5d243d6c958ea8003021919d1b2068a3bebfde8e5303b3cecbc28cd144e1bacececb638b3d90fd3e16cd9e1f2e397c0eac8f148b9d3ac languageName: node linkType: hard -"@typescript-eslint/experimental-utils@npm:5.6.0, @typescript-eslint/experimental-utils@npm:^5.0.0, @typescript-eslint/experimental-utils@npm:^5.5.0": - version: 5.6.0 - resolution: "@typescript-eslint/experimental-utils@npm:5.6.0" +"@typescript-eslint/experimental-utils@npm:5.7.0, @typescript-eslint/experimental-utils@npm:^5.0.0, @typescript-eslint/experimental-utils@npm:^5.5.0": + version: 5.7.0 + resolution: "@typescript-eslint/experimental-utils@npm:5.7.0" dependencies: "@types/json-schema": ^7.0.9 - "@typescript-eslint/scope-manager": 5.6.0 - "@typescript-eslint/types": 5.6.0 - "@typescript-eslint/typescript-estree": 5.6.0 + "@typescript-eslint/scope-manager": 5.7.0 + "@typescript-eslint/types": 5.7.0 + "@typescript-eslint/typescript-estree": 5.7.0 eslint-scope: ^5.1.1 eslint-utils: ^3.0.0 peerDependencies: eslint: "*" - checksum: f708f38be41a3cb4c8c2c8573a660ce7de88f50becf53bea6679fcc8a56ba73c59f2e1a94f5a7773c8cccaf0c2e4dda679564c67764c989f8137594d6589aa4c + checksum: 5e9ca434d834059632bf6f227c9d7f13f143f5a42d8518df6e54db242e971bae09038d9abcc5ff3debab8ecf17c742544ff66778f6bcbc90e94d92ee358d8315 languageName: node linkType: hard "@typescript-eslint/parser@npm:^5.1.0": - version: 5.6.0 - resolution: "@typescript-eslint/parser@npm:5.6.0" + version: 5.7.0 + resolution: "@typescript-eslint/parser@npm:5.7.0" dependencies: - "@typescript-eslint/scope-manager": 5.6.0 - "@typescript-eslint/types": 5.6.0 - "@typescript-eslint/typescript-estree": 5.6.0 + "@typescript-eslint/scope-manager": 5.7.0 + "@typescript-eslint/types": 5.7.0 + "@typescript-eslint/typescript-estree": 5.7.0 debug: ^4.3.2 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 7d703cfe6b0a33b35139f509bcc16065f234a11603244cee4f55e193112d93ed9cd4a6db4bcf57c6b766e8a4d602b4f2400cb8d52ea02b3fc2cdfb64e5b88a3e + checksum: c57f9ab2001d3fd61776eb8ae7f05d0f5beed9d78fdc1bedaf24bf5f17049b909cbcea79ad58d0059000e29716b04d536ff1522c29441d1865229a3490a95bb2 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.6.0": - version: 5.6.0 - resolution: "@typescript-eslint/scope-manager@npm:5.6.0" +"@typescript-eslint/scope-manager@npm:5.7.0": + version: 5.7.0 + resolution: "@typescript-eslint/scope-manager@npm:5.7.0" dependencies: - "@typescript-eslint/types": 5.6.0 - "@typescript-eslint/visitor-keys": 5.6.0 - checksum: 6fea574f6e911eb25258e75fc738a36099678ba96cd447d18da28209bfa5326ba4e97aa7f254ccd0415aec15ea70d0b6fb860dd985d4f9042df57d4a227ae9d1 + "@typescript-eslint/types": 5.7.0 + "@typescript-eslint/visitor-keys": 5.7.0 + checksum: 8323e9787cb21c2e6c3de6bef2eb56e7e37c04f9c19413ad54964545dacc27a59ce6c19d660f4a20c0c6a368eee264d231436e9e8f221ed551abdcaf78596e12 languageName: node linkType: hard -"@typescript-eslint/types@npm:5.6.0": - version: 5.6.0 - resolution: "@typescript-eslint/types@npm:5.6.0" - checksum: 63abd287a265cb1bed06067117c11bf1c69c5db1a14ea59e13564dcd9d513ae2dac67969541f21381500139d40bbea67b269c32607d3204ab24ea8900c449293 +"@typescript-eslint/types@npm:5.7.0": + version: 5.7.0 + resolution: "@typescript-eslint/types@npm:5.7.0" + checksum: 4573250e59ea9e0b163c3e05e44ffb4b1ba4cdcfd6081c1f0b532e4c4bbbc5eb34ff4286c81c815115a1a1690cc8b1ad7b3ed79f3798773bf494b6ed82d0396b languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.6.0": - version: 5.6.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.6.0" +"@typescript-eslint/typescript-estree@npm:5.7.0": + version: 5.7.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.7.0" dependencies: - "@typescript-eslint/types": 5.6.0 - "@typescript-eslint/visitor-keys": 5.6.0 + "@typescript-eslint/types": 5.7.0 + "@typescript-eslint/visitor-keys": 5.7.0 debug: ^4.3.2 globby: ^11.0.4 is-glob: ^4.0.3 @@ -3776,17 +4060,17 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: eb5cc53ddad6fe7772677798bcb682e859ac82674cf0adcdd7105814ddecdbb9d58a4a27f87caa68eb9f40dcc5ce1b0ce87db3cf50deffa5f7fa6c354c8bee68 + checksum: 0a63186e7b89dc3a1607d2b838ee7b44b4471654f3e77d62687242e5cb9d2a2385312f438dcfdcb70dadcb3638a141e1660483f7bb5d2cf3563cc9a43b0b2d94 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.6.0": - version: 5.6.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.6.0" +"@typescript-eslint/visitor-keys@npm:5.7.0": + version: 5.7.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.7.0" dependencies: - "@typescript-eslint/types": 5.6.0 + "@typescript-eslint/types": 5.7.0 eslint-visitor-keys: ^3.0.0 - checksum: c1d9e2596ff4f03b52857a77ff373ca82e66c1883ea818f28c3a18e5c4877c4ac6367874f4681223e9134bcebd6560f95b9a3d12c411060d567a17d10113e9e5 + checksum: 59f7468c37cfcb92eb0de15b7ece47dd64a56c4d03d13167140c980399a4f12f20c1df52534f486cefc46bab65e717689b81decb327d2677063c47c0a26ae875 languageName: node linkType: hard @@ -4499,11 +4783,11 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^27.4.4": - version: 27.4.4 - resolution: "babel-jest@npm:27.4.4" +"babel-jest@npm:^27.4.4, babel-jest@npm:^27.4.5": + version: 27.4.5 + resolution: "babel-jest@npm:27.4.5" dependencies: - "@jest/transform": ^27.4.4 + "@jest/transform": ^27.4.5 "@jest/types": ^27.4.2 "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.0.0 @@ -4513,7 +4797,7 @@ __metadata: slash: ^3.0.0 peerDependencies: "@babel/core": ^7.8.0 - checksum: 2d9de4f050f5c976a88f2afe5f7c9c53a5a1420320c70e46186d05dfe53eddccbcded80ef4ade80f4a1cacd940f6c934357e229b1f9666b00776c0d358d95fa6 + checksum: 986601fd143e6bdd9b9c176ade5c1f93a63e38beba511527183fec5f1041920f1262fcb3f87e8660c85fc6cc731d5d49570b35d54c31427644c6849caa137d89 languageName: node linkType: hard @@ -4588,6 +4872,17 @@ __metadata: languageName: node linkType: hard +"babel-plugin-macros@npm:^2.6.1": + version: 2.8.0 + resolution: "babel-plugin-macros@npm:2.8.0" + dependencies: + "@babel/runtime": ^7.7.2 + cosmiconfig: ^6.0.0 + resolve: ^1.12.0 + checksum: 59b09a21cf3ae1e14186c1b021917d004b49b953824b24953a54c6502da79e8051d4ac31cfd4a0ae7f6ea5ddf1f7edd93df4895dd3c3982a5b2431859c2889ac + languageName: node + linkType: hard + "babel-plugin-module-resolver@npm:^4.1.0": version: 4.1.0 resolution: "babel-plugin-module-resolver@npm:4.1.0" @@ -4700,6 +4995,8 @@ __metadata: "@commitlint/cli": ^15.0.0 "@commitlint/config-conventional": ^15.0.0 "@cypress/webpack-preprocessor": ^5.10.0 + "@emotion/babel-plugin": ^11.3.0 + "@emotion/jest": ^11.7.1 "@loadable/babel-plugin": ^5.13.2 "@loadable/webpack-plugin": ^5.15.1 "@percy/cli": ^1.0.0-beta.71 @@ -4746,6 +5043,7 @@ __metadata: style-loader: ^3.3.1 terser-webpack-plugin: ^5.2.5 typescript: 4.5.3 + typescript-styled-plugin: ^0.18.2 url-loader: ^4.1.1 wait-for: ^2.1.1 webpack: ^5.65.0 @@ -4820,7 +5118,14 @@ __metadata: languageName: node linkType: hard -"bluebird@npm:3.7.2, bluebird@npm:^3.7.1": +"bluebird@npm:3.7.1": + version: 3.7.1 + resolution: "bluebird@npm:3.7.1" + checksum: 58c295399e109925149977ebcb40e42fd109d3e458899e71441bc7e5e0867bbd796fdd20278b425fa29f13377fe335fbfc2a6e68e5ca1da03b1c3afdc439d097 + languageName: node + linkType: hard + +"bluebird@npm:3.7.2": version: 3.7.2 resolution: "bluebird@npm:3.7.2" checksum: 869417503c722e7dc54ca46715f70e15f4d9c602a423a02c825570862d12935be59ed9c7ba34a9b31f186c017c23cac6b54e35446f8353059c101da73eac22ef @@ -4860,18 +5165,18 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.14.5, browserslist@npm:^4.17.5, browserslist@npm:^4.18.1": - version: 4.18.1 - resolution: "browserslist@npm:4.18.1" +"browserslist@npm:^4.14.5, browserslist@npm:^4.17.5, browserslist@npm:^4.19.1": + version: 4.19.1 + resolution: "browserslist@npm:4.19.1" dependencies: - caniuse-lite: ^1.0.30001280 - electron-to-chromium: ^1.3.896 + caniuse-lite: ^1.0.30001286 + electron-to-chromium: ^1.4.17 escalade: ^3.1.1 node-releases: ^2.0.1 picocolors: ^1.0.0 bin: browserslist: cli.js - checksum: ae58322deef15960fc2e601d71bc081b571cfab6705999a3d24db5325b9cfadf5f676615f4460207a93e600549c33d60d37b4502007fe9e737b3cc19e20575d5 + checksum: c0777fd483691638fd6801e16c9d809e1d65f6d2b06db2e806654be51045cbab1452a89841a2c5caea2cbe19d621b4f1d391cffbb24512aa33280039ab345875 languageName: node linkType: hard @@ -4898,6 +5203,13 @@ __metadata: languageName: node linkType: hard +"buffer-from@npm:~0.1.1": + version: 0.1.2 + resolution: "buffer-from@npm:0.1.2" + checksum: 50a1fa5da97d2081b7d945483c8967d3b89a096fa585eb55000bb2100e827c647c9370280ec9bd057da8f9fa5abc1d3b764228851a31fa8a67f659f70c0052d8 + languageName: node + linkType: hard + "buffer-json@npm:^2.0.0": version: 2.0.0 resolution: "buffer-json@npm:2.0.0" @@ -5082,10 +5394,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001280": - version: 1.0.30001286 - resolution: "caniuse-lite@npm:1.0.30001286" - checksum: 04de4742552d4aeb713677b40693d9ac1fbd259573e0ff739565278bcecb6f398f3227546a4e930f4d5cf95b61458f4a53c9c1f90f5b0c4f6063b32e4c54b89e +"caniuse-lite@npm:^1.0.30001286": + version: 1.0.30001291 + resolution: "caniuse-lite@npm:1.0.30001291" + checksum: ae24be79227036564ccd2ab8a0be8793a2e650941607a9f3e68a967db08d90cf17ded0382c2ce87063051b7200e618ec83bdb12f423ed60665922dc4d8eb8f78 languageName: node linkType: hard @@ -5309,13 +5621,13 @@ __metadata: dependencies: "@babel/cli": ^7.16.0 "@babel/core": ^7.16.0 - "@date-io/core": ^1.3.13 - "@date-io/date-fns": ^1.3.13 + "@emotion/react": ^11.7.0 + "@emotion/styled": ^11.6.0 "@loadable/component": ^5.15.0 - "@material-ui/core": ^4.12.3 - "@material-ui/icons": ^4.11.2 - "@material-ui/lab": ^4.0.0-alpha.60 - "@material-ui/pickers": ^3.3.10 + "@mui/icons-material": ^5.2.1 + "@mui/lab": ^5.0.0-alpha.59 + "@mui/material": ^5.2.3 + "@mui/system": ^5.2.3 "@testing-library/jest-dom": ^5.16.1 "@testing-library/react": ^12.1.2 "@types/babel__core": 7.1.17 @@ -5330,11 +5642,9 @@ __metadata: "@types/rimraf": ^3.0.2 "@types/testing-library__jest-dom": 5.14.2 axios: ^0.24.0 - clsx: ^1.1.1 constate: ^3.3.0 date-fns: ^2.27.0 debounce-promise: ^3.1.2 - deepmerge: ^4.2.2 downshift: ^6.1.7 eslint: ^8.4.1 leaflet: ^1.7.1 @@ -5400,7 +5710,7 @@ __metadata: languageName: node linkType: hard -"clsx@npm:^1.0.2, clsx@npm:^1.0.4, clsx@npm:^1.1.1": +"clsx@npm:^1.1.1": version: 1.1.1 resolution: "clsx@npm:1.1.1" checksum: ff052650329773b9b245177305fc4c4dc3129f7b2be84af4f58dc5defa99538c61d4207be7419405a5f8f3d92007c954f4daba5a7b74e563d5de71c28c830063 @@ -5585,14 +5895,14 @@ __metadata: linkType: hard "compression-webpack-plugin@npm:^9.1.1": - version: 9.1.1 - resolution: "compression-webpack-plugin@npm:9.1.1" + version: 9.2.0 + resolution: "compression-webpack-plugin@npm:9.2.0" dependencies: schema-utils: ^4.0.0 serialize-javascript: ^6.0.0 peerDependencies: webpack: ^5.1.0 - checksum: 6c7dd65379effcc36376113909a1c3856072c15d948ea20969da07949467f03588b99d4b82fd91b210fac947718d870f61fdb9e11dc99b0d7d8a88cc4f9d6b45 + checksum: 50ef78d0973f87ed8d7c30fdb31b009d409c288a77ee842d9b3b5b2348048f55148f510d3a0bd30b5c954e6701ed9fc08c3616ce46ad1eec8e0954b336a5f4b9 languageName: node linkType: hard @@ -5610,9 +5920,9 @@ __metadata: languageName: node linkType: hard -"concurrently@npm:6.4.0": - version: 6.4.0 - resolution: "concurrently@npm:6.4.0" +"concurrently@npm:6.5.1": + version: 6.5.1 + resolution: "concurrently@npm:6.5.1" dependencies: chalk: ^4.1.0 date-fns: ^2.16.1 @@ -5624,7 +5934,7 @@ __metadata: yargs: ^16.2.0 bin: concurrently: bin/concurrently.js - checksum: 902864cc853176cac406246fa367a1b24ebfcbea9ba43c164f9cb4e2c9c1a5f9d8be05ce98fe7ef13329ffd5cc340a052007a9c870863e2068425d95b3bf89d7 + checksum: 3f4d89b464fa5c9fb6f9489b46594c30ba54eff6ff10ab3cb5f30f64b74c83be664623a0f0cc731a3cb3f057a1f4a3292f7d3470c012a292c44aca31f214a3fa languageName: node linkType: hard @@ -5668,11 +5978,11 @@ __metadata: linkType: hard "content-disposition@npm:~0.5.2": - version: 0.5.3 - resolution: "content-disposition@npm:0.5.3" + version: 0.5.4 + resolution: "content-disposition@npm:0.5.4" dependencies: - safe-buffer: 5.1.2 - checksum: 95bf164c0b0b8199d3f44b7631e51b37f683c6a90b9baa4315bd3d405a6d1bc81b7346f0981046aa004331fb3d7a28b629514d01fc209a5251573fc7e4d33380 + safe-buffer: 5.2.1 + checksum: afb9d545e296a5171d7574fcad634b2fdf698875f4006a9dd04a3e1333880c5c0c98d47b560d01216fb6505a54a2ba6a843ee3a02ec86d7e911e8315255f56c3 languageName: node linkType: hard @@ -5720,7 +6030,7 @@ __metadata: languageName: node linkType: hard -"convert-source-map@npm:^1.1.0, convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": +"convert-source-map@npm:^1.1.0, convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.5.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": version: 1.8.0 resolution: "convert-source-map@npm:1.8.0" dependencies: @@ -5761,26 +6071,26 @@ __metadata: linkType: hard "core-js-compat@npm:^3.18.0, core-js-compat@npm:^3.19.1": - version: 3.19.3 - resolution: "core-js-compat@npm:3.19.3" + version: 3.20.0 + resolution: "core-js-compat@npm:3.20.0" dependencies: - browserslist: ^4.18.1 + browserslist: ^4.19.1 semver: 7.0.0 - checksum: 4f00f734d8745bcd111e41c79d6195939f6b29951c83cc83f4d50a7d352329367d164b0985b947f83313d7dd31d6ee7b1e20a1d3d8ae7566df744ad914fc4e16 + checksum: d2887ab75f8d65b8b8f0ba218c191bd69a1a58db2583671e9656da5915920fe47a92f933d4552225a4c8979d81ea294758fe71b23580fa6c7e5c89da542cfe2d languageName: node linkType: hard "core-js-pure@npm:^3.8.1": - version: 3.19.3 - resolution: "core-js-pure@npm:3.19.3" - checksum: 1c9db965010751e9242f8c3697f55c63a8a1a152e6128aff85ea29dd040f78417e63a9d493293eba46351e7ef22e89d1fc077ead5b8121f8d88244952c73585a + version: 3.20.0 + resolution: "core-js-pure@npm:3.20.0" + checksum: b5ae6601536104cad63bb91100477d9718442d348ac47dad22a60e22bd9c86ffe10ef5ea23ddaabb97a1492727e4f2bd4bb8848031271d5d1b2f31c860b4b362 languageName: node linkType: hard "core-js@npm:^3.19.3": - version: 3.19.3 - resolution: "core-js@npm:3.19.3" - checksum: eaa7afd87411393a7b1637fd0813957f689e91007219b6a951a1fe1aa08edccfddbbfbb1acb281a76dbe90b42fe7768377289258d81ba46e13c9919527aee95a + version: 3.20.0 + resolution: "core-js@npm:3.20.0" + checksum: 4dca42f27553e1068b5329fbe133bca9256be819b64b4d0e244b8dc0db69181430d79aed3c33eeb7388f8ec019ea125e76fbd0c28523d112779f9bb5147a0939 languageName: node linkType: hard @@ -5791,6 +6101,26 @@ __metadata: languageName: node linkType: hard +"core-util-is@npm:~1.0.0": + version: 1.0.3 + resolution: "core-util-is@npm:1.0.3" + checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 + languageName: node + linkType: hard + +"cosmiconfig@npm:^6.0.0": + version: 6.0.0 + resolution: "cosmiconfig@npm:6.0.0" + dependencies: + "@types/parse-json": ^4.0.0 + import-fresh: ^3.1.0 + parse-json: ^5.0.0 + path-type: ^4.0.0 + yaml: ^1.7.2 + checksum: 8eed7c854b91643ecb820767d0deb038b50780ecc3d53b0b19e03ed8aabed4ae77271198d1ae3d49c3b110867edf679f5faad924820a8d1774144a87cb6f98fc + languageName: node + linkType: hard + "cosmiconfig@npm:^7.0.0": version: 7.0.1 resolution: "cosmiconfig@npm:7.0.1" @@ -5861,29 +6191,19 @@ __metadata: linkType: hard "css-select@npm:^4.1.3": - version: 4.1.3 - resolution: "css-select@npm:4.1.3" + version: 4.2.0 + resolution: "css-select@npm:4.2.0" dependencies: boolbase: ^1.0.0 - css-what: ^5.0.0 - domhandler: ^4.2.0 - domutils: ^2.6.0 - nth-check: ^2.0.0 - checksum: 40928f1aa6c71faf36430e7f26bcbb8ab51d07b98b754caacb71906400a195df5e6c7020a94f2982f02e52027b9bd57c99419220cf7020968c3415f14e4be5f8 - languageName: node - linkType: hard - -"css-vendor@npm:^2.0.8": - version: 2.0.8 - resolution: "css-vendor@npm:2.0.8" - dependencies: - "@babel/runtime": ^7.8.3 - is-in-browser: ^1.0.2 - checksum: 647cd4ea5e401c65c59376255aa2b708e92bf84fba9ce2b3ff5ecb94bf51d74ac374052b1cf9956ef7419b8ebf07fcea9a7683d2d2459127b2ca747ab5b98745 + css-what: ^5.1.0 + domhandler: ^4.3.0 + domutils: ^2.8.0 + nth-check: ^2.0.1 + checksum: 3847b251ca9f2722dd90c0b464b899a5a3b78b0324936a493d7b837a42120764871ad7c01e5bde6280f97710283b0b01e573e43e3076e61cc3e3a2437e0db415 languageName: node linkType: hard -"css-what@npm:^5.0.0, css-what@npm:^5.0.1": +"css-what@npm:^5.0.1, css-what@npm:^5.1.0": version: 5.1.0 resolution: "css-what@npm:5.1.0" checksum: 0b75d1bac95c885c168573c85744a6c6843d8c33345f54f717218b37ea6296b0e99bb12105930ea170fd4a921990392a7c790c16c585c1d8960c49e2b7ec39f7 @@ -5940,14 +6260,7 @@ __metadata: languageName: node linkType: hard -"csstype@npm:^2.5.2": - version: 2.6.19 - resolution: "csstype@npm:2.6.19" - checksum: 72b51ddd30ba308d08373cd890e79526efdc19a9762941845040055f75353992f2d8d4cf4db282a8e1d3d9d2a39c989c65fe32b7b2655f08d313660c4048d2d6 - languageName: node - linkType: hard - -"csstype@npm:^3.0.2": +"csstype@npm:^3.0.10, csstype@npm:^3.0.2": version: 3.0.10 resolution: "csstype@npm:3.0.10" checksum: 20a8fa324f2b33ddf94aa7507d1b6ab3daa6f3cc308888dc50126585d7952f2471de69b2dbe0635d1fdc31223fef8e070842691877e725caf456e2378685a631 @@ -6033,11 +6346,11 @@ __metadata: linkType: hard "date-fns-tz@npm:^1.1.6": - version: 1.1.6 - resolution: "date-fns-tz@npm:1.1.6" + version: 1.1.7 + resolution: "date-fns-tz@npm:1.1.7" peerDependencies: date-fns: ">=2.0.0-alpha.13" - checksum: cfe4c799372fcb586b7f22d9c31e10df33dabc74452fbd92269ae02bbaed4024636c477b9aac06c521ec78a7391826d5526fedbcefbad2e5de25bcc00c61ad8f + checksum: 46f01111b549feabdd3c703ef1d699ff6fd0700de15bada581022cfda7a99fe9162ed19a8ad77e3cfd39459a9c76cb7d6a8d5392a13df7aba0f175e8bef5b142 languageName: node linkType: hard @@ -6079,7 +6392,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3": version: 4.3.3 resolution: "debug@npm:4.3.3" dependencies: @@ -6091,18 +6404,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:4.3.2": - version: 4.3.2 - resolution: "debug@npm:4.3.2" - dependencies: - ms: 2.1.2 - peerDependenciesMeta: - supports-color: - optional: true - checksum: 820ea160e267e23c953c9ed87e7ad93494d8cda2f7349af5e7e3bb236d23707ee3022f477d5a7d2ee86ef2bf7d60aa9ab22d1f58080d7deb9dccd073585e1e43 - languageName: node - linkType: hard - "debug@npm:^2.6.9": version: 2.6.9 resolution: "debug@npm:2.6.9" @@ -6355,7 +6656,7 @@ __metadata: languageName: node linkType: hard -"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0": +"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0, domhandler@npm:^4.3.0": version: 4.3.0 resolution: "domhandler@npm:4.3.0" dependencies: @@ -6364,7 +6665,7 @@ __metadata: languageName: node linkType: hard -"domutils@npm:^2.5.2, domutils@npm:^2.6.0, domutils@npm:^2.7.0": +"domutils@npm:^2.5.2, domutils@npm:^2.7.0, domutils@npm:^2.8.0": version: 2.8.0 resolution: "domutils@npm:2.8.0" dependencies: @@ -6399,6 +6700,15 @@ __metadata: languageName: node linkType: hard +"duplexer2@npm:^0.1.2": + version: 0.1.4 + resolution: "duplexer2@npm:0.1.4" + dependencies: + readable-stream: ^2.0.2 + checksum: 744961f03c7f54313f90555ac20284a3fb7bf22fdff6538f041a86c22499560eb6eac9d30ab5768054137cb40e6b18b40f621094e0261d7d8c35a37b7a5ad241 + languageName: node + linkType: hard + "duplexer@npm:^0.1.2": version: 0.1.2 resolution: "duplexer@npm:0.1.2" @@ -6458,10 +6768,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.3.896": - version: 1.4.15 - resolution: "electron-to-chromium@npm:1.4.15" - checksum: 06b91eeee42f1744b544483ebe3e0812957c736948f09d805fe1fbf78cba0c15577127cca1d7ed96db233f4bc46a31a66b2ce3e10343ef95b40570ac45f8d656 +"electron-to-chromium@npm:^1.4.17": + version: 1.4.24 + resolution: "electron-to-chromium@npm:1.4.24" + checksum: 71c065ae9cb74bc7e44abeea20c1639a2057bee4927f09ccc2a6d492fa5c7a31da63ad5d5d8659f7d04db680225543aae54579793f269c9d2ecc1c1541018688 languageName: node linkType: hard @@ -6472,6 +6782,16 @@ __metadata: languageName: node linkType: hard +"emmet@npm:^2.3.0": + version: 2.3.5 + resolution: "emmet@npm:2.3.5" + dependencies: + "@emmetio/abbreviation": ^2.2.2 + "@emmetio/css-abbreviation": ^2.1.4 + checksum: e432c3f19633a3c76f92c292e48c38b44bf68de26cbc06beb2602569ebfccff8c5902796381f37170360ae606211a0b7a011f76ebb6445267ae4937efe02f790 + languageName: node + linkType: hard + "emoji-regex@npm:^7.0.1": version: 7.0.3 resolution: "emoji-regex@npm:7.0.3" @@ -7012,8 +7332,8 @@ __metadata: linkType: hard "eslint@npm:^8.4.1": - version: 8.4.1 - resolution: "eslint@npm:8.4.1" + version: 8.5.0 + resolution: "eslint@npm:8.5.0" dependencies: "@eslint/eslintrc": ^1.0.5 "@humanwhocodes/config-array": ^0.9.2 @@ -7055,7 +7375,7 @@ __metadata: v8-compile-cache: ^2.0.3 bin: eslint: bin/eslint.js - checksum: d962cd7cd0f68ddc2412f47154b8992ad3af987cf47fa6e60e51a2b7d32a91f934388f7d29e2c45b16b7ac69f0d220d0a483189ec6ba43a8a480110c34f158f9 + checksum: c1a9e26070520a308cc30b62ba0d37d5b115ed23987a93219819537bdea9398e6ebe57c27d97be36ecc83b5162c72e82ecb0a9e5b44b7992980f9be90eb5c4b3 languageName: node linkType: hard @@ -7664,6 +7984,23 @@ __metadata: languageName: node linkType: hard +"gauge@npm:^3.0.0": + version: 3.0.2 + resolution: "gauge@npm:3.0.2" + dependencies: + aproba: ^1.0.3 || ^2.0.0 + color-support: ^1.1.2 + console-control-strings: ^1.0.0 + has-unicode: ^2.0.1 + object-assign: ^4.1.1 + signal-exit: ^3.0.0 + string-width: ^4.2.3 + strip-ansi: ^6.0.1 + wide-align: ^1.1.2 + checksum: 81296c00c7410cdd48f997800155fbead4f32e4f82109be0719c63edc8560e6579946cc8abd04205297640691ec26d21b578837fd13a4e96288ab4b40b1dc3e9 + languageName: node + linkType: hard + "gauge@npm:^4.0.0": version: 4.0.0 resolution: "gauge@npm:4.0.0" @@ -8000,12 +8337,12 @@ __metadata: languageName: node linkType: hard -"history@npm:^5.1.0": - version: 5.1.0 - resolution: "history@npm:5.1.0" +"history@npm:^5.2.0": + version: 5.2.0 + resolution: "history@npm:5.2.0" dependencies: "@babel/runtime": ^7.7.6 - checksum: c978710a188ee5ad5d2acf55721c77e27469578c891a66311e71e8920d1390d14476e39a6db07e0ab0f5f8d594f1f62eb55a1059c7549cde7795a36367df5869 + checksum: 2c6a05aa86793e0a0857013457f34474c17f81a012c6bdb00bf30862389ac6a8c2df113d82176f67af2fd534ea9dc4e1218470c5526355b6fc1aefcc971f2eb2 languageName: node linkType: hard @@ -8057,6 +8394,21 @@ __metadata: languageName: node linkType: hard +"html-tokenize@npm:^2.0.0": + version: 2.0.1 + resolution: "html-tokenize@npm:2.0.1" + dependencies: + buffer-from: ~0.1.1 + inherits: ~2.0.1 + minimist: ~1.2.5 + readable-stream: ~1.0.27-1 + through2: ~0.4.1 + bin: + html-tokenize: bin/cmd.js + checksum: 4e04078fd22cf274fc1fa430490af3feda1c3bc4dd2fc88880caf6c2e816992d508bc44a7b16721b713a6b98d880f43e10ea4b169529056134cd488403adc8fc + languageName: node + linkType: hard + "htmlparser2@npm:^6.1.0": version: 6.1.0 resolution: "htmlparser2@npm:6.1.0" @@ -8175,13 +8527,6 @@ __metadata: languageName: node linkType: hard -"hyphenate-style-name@npm:^1.0.3": - version: 1.0.4 - resolution: "hyphenate-style-name@npm:1.0.4" - checksum: 4f5bf4b055089754924babebaa23c17845937bcca6aee95d5d015f8fa1e6814279002bd6a9e541e3fac2cd02519fc76305396727066c57c8e21a7e73e7a12137 - languageName: node - linkType: hard - "iconv-lite@npm:^0.5.1": version: 0.5.2 resolution: "iconv-lite@npm:0.5.2" @@ -8222,9 +8567,9 @@ __metadata: linkType: hard "ignore@npm:^5.1.4, ignore@npm:^5.1.8": - version: 5.1.9 - resolution: "ignore@npm:5.1.9" - checksum: 6f6b2235f4e63648116c5814f76b2d3d63fae9c21b8a466862e865732f59e787c9938a9042f9457091db6f0d811508ea3c8c6a60f35bafc4ceea08bbe8f96fd5 + version: 5.2.0 + resolution: "ignore@npm:5.2.0" + checksum: 6b1f926792d614f64c6c83da3a1f9c83f6196c2839aa41e1e32dd7b8d174cef2e329d75caabb62cb61ce9dc432f75e67d07d122a037312db7caa73166a1bdb77 languageName: node linkType: hard @@ -8239,7 +8584,7 @@ __metadata: languageName: node linkType: hard -"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1": +"import-fresh@npm:^3.0.0, import-fresh@npm:^3.1.0, import-fresh@npm:^3.2.1": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -8299,7 +8644,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 @@ -8552,13 +8897,6 @@ __metadata: languageName: node linkType: hard -"is-in-browser@npm:^1.0.2, is-in-browser@npm:^1.1.3": - version: 1.1.3 - resolution: "is-in-browser@npm:1.1.3" - checksum: 178491f97f6663c0574565701b76f41633dbe065e4bd8d518ce017a8fa25e5109ecb6a3bd8bd55c0aba11b208f86b9f0f9c91f3664e148ebf618b74a74fcaf09 - languageName: node - linkType: hard - "is-installed-globally@npm:~0.4.0": version: 0.4.0 resolution: "is-installed-globally@npm:0.4.0" @@ -8598,9 +8936,9 @@ __metadata: linkType: hard "is-negative-zero@npm:^2.0.1": - version: 2.0.1 - resolution: "is-negative-zero@npm:2.0.1" - checksum: a46f2e0cb5e16fdb8f2011ed488979386d7e68d381966682e3f4c98fc126efe47f26827912baca2d06a02a644aee458b9cba307fb389f6b161e759125db7a3b8 + version: 2.0.2 + resolution: "is-negative-zero@npm:2.0.2" + checksum: f3232194c47a549da60c3d509c9a09be442507616b69454716692e37ae9f37c4dea264fb208ad0c9f3efd15a796a46b79df07c7e53c6227c32170608b809149a languageName: node linkType: hard @@ -8744,11 +9082,11 @@ __metadata: linkType: hard "is-weakref@npm:^1.0.1": - version: 1.0.1 - resolution: "is-weakref@npm:1.0.1" + version: 1.0.2 + resolution: "is-weakref@npm:1.0.2" dependencies: - call-bind: ^1.0.0 - checksum: fdafb7b955671dd2f9658ff47c86e4025c0650fc68a3542a40e5a75898a763b1abd6b1e1f9f13207eed49541cdd76af67d73c44989ea358b201b70274cf8f6c1 + call-bind: ^1.0.2 + checksum: 95bd9a57cdcb58c63b1c401c60a474b0f45b94719c30f548c891860f051bc2231575c290a6b420c6bc6e7ed99459d424c652bd5bf9a1d5259505dc35b4bf83de languageName: node linkType: hard @@ -8761,6 +9099,13 @@ __metadata: languageName: node linkType: hard +"isarray@npm:0.0.1": + version: 0.0.1 + resolution: "isarray@npm:0.0.1" + checksum: 49191f1425681df4a18c2f0f93db3adb85573bcdd6a4482539d98eac9e705d8961317b01175627e860516a2fc45f8f9302db26e5a380a97a520e272e2a40a8d4 + languageName: node + linkType: hard + "isarray@npm:^2.0.5": version: 2.0.5 resolution: "isarray@npm:2.0.5" @@ -8768,6 +9113,13 @@ __metadata: languageName: node linkType: hard +"isarray@npm:~1.0.0": + version: 1.0.0 + resolution: "isarray@npm:1.0.0" + checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab + languageName: node + linkType: hard + "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" @@ -8902,9 +9254,9 @@ __metadata: languageName: node linkType: hard -"jest-circus@npm:^27.4.4": - version: 27.4.4 - resolution: "jest-circus@npm:27.4.4" +"jest-circus@npm:^27.4.5": + version: 27.4.5 + resolution: "jest-circus@npm:27.4.5" dependencies: "@jest/environment": ^27.4.4 "@jest/test-result": ^27.4.2 @@ -8918,29 +9270,29 @@ __metadata: jest-each: ^27.4.2 jest-matcher-utils: ^27.4.2 jest-message-util: ^27.4.2 - jest-runtime: ^27.4.4 - jest-snapshot: ^27.4.4 + jest-runtime: ^27.4.5 + jest-snapshot: ^27.4.5 jest-util: ^27.4.2 pretty-format: ^27.4.2 slash: ^3.0.0 stack-utils: ^2.0.3 throat: ^6.0.1 - checksum: e85698bedc0650deacd6f3a03022f25e786b6dafd0285311303afb933b48ac9c54039138ddcd540513035e335c136695b71cfff9fb4a95116e173e0221edaaf9 + checksum: 0d9ba909fb73ab17d127208a44e0cd1064ed3fcce3208b7c181b684b00e3504f1edc84119cd14d9c4c8df8957904875bf68e3151303bd06e42345a8635112eb0 languageName: node linkType: hard -"jest-cli@npm:^27.4.4": - version: 27.4.4 - resolution: "jest-cli@npm:27.4.4" +"jest-cli@npm:^27.4.5": + version: 27.4.5 + resolution: "jest-cli@npm:27.4.5" dependencies: - "@jest/core": ^27.4.4 + "@jest/core": ^27.4.5 "@jest/test-result": ^27.4.2 "@jest/types": ^27.4.2 chalk: ^4.0.0 exit: ^0.1.2 graceful-fs: ^4.2.4 import-local: ^3.0.2 - jest-config: ^27.4.4 + jest-config: ^27.4.5 jest-util: ^27.4.2 jest-validate: ^27.4.2 prompts: ^2.0.1 @@ -8952,31 +9304,31 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: bb19871a076fa23d1a3e198b7537f7a817b57ed8664202ec02a5f6cfab7c2d9cb7a84ba000406e931c29ffea2374d91d88b96f8b1bbf4fefdd51f31ee688f6f3 + checksum: 8c430614ab058fd612eae402620c784e583477520598aa4f68e9115d5f475a50d6897cdad4c832777ec8964446c5a9f02047cf74bed7e0f090220758eac1cc41 languageName: node linkType: hard -"jest-config@npm:^27.4.4": - version: 27.4.4 - resolution: "jest-config@npm:27.4.4" +"jest-config@npm:^27.4.5": + version: 27.4.5 + resolution: "jest-config@npm:27.4.5" dependencies: "@babel/core": ^7.1.0 - "@jest/test-sequencer": ^27.4.4 + "@jest/test-sequencer": ^27.4.5 "@jest/types": ^27.4.2 - babel-jest: ^27.4.4 + babel-jest: ^27.4.5 chalk: ^4.0.0 ci-info: ^3.2.0 deepmerge: ^4.2.2 glob: ^7.1.1 graceful-fs: ^4.2.4 - jest-circus: ^27.4.4 + jest-circus: ^27.4.5 jest-environment-jsdom: ^27.4.4 jest-environment-node: ^27.4.4 jest-get-type: ^27.4.0 - jest-jasmine2: ^27.4.4 + jest-jasmine2: ^27.4.5 jest-regex-util: ^27.4.0 - jest-resolve: ^27.4.4 - jest-runner: ^27.4.4 + jest-resolve: ^27.4.5 + jest-runner: ^27.4.5 jest-util: ^27.4.2 jest-validate: ^27.4.2 micromatch: ^4.0.4 @@ -8987,7 +9339,7 @@ __metadata: peerDependenciesMeta: ts-node: optional: true - checksum: 4460edc2e42530722030edd883db5955a6899c1e9e6df9de74bd684b2a945c97a978d82dc406acc8fc026103c870c884f1d0e460cffceab00df444c54ae134c8 + checksum: 8b166404959d368c49573b8d3e9ff5537557413a96aa41e05824f01147db1525168489ae3f1f028525a587bd724f718f9c77f1256351c48cf0e3c766a86292cb languageName: node linkType: hard @@ -9061,9 +9413,9 @@ __metadata: languageName: node linkType: hard -"jest-haste-map@npm:^27.4.4": - version: 27.4.4 - resolution: "jest-haste-map@npm:27.4.4" +"jest-haste-map@npm:^27.4.5": + version: 27.4.5 + resolution: "jest-haste-map@npm:27.4.5" dependencies: "@jest/types": ^27.4.2 "@types/graceful-fs": ^4.1.2 @@ -9075,19 +9427,19 @@ __metadata: jest-regex-util: ^27.4.0 jest-serializer: ^27.4.0 jest-util: ^27.4.2 - jest-worker: ^27.4.4 + jest-worker: ^27.4.5 micromatch: ^4.0.4 walker: ^1.0.7 dependenciesMeta: fsevents: optional: true - checksum: ebd8e00672aadeb7a42ca5c2070f0240f7892b87c769ba203fe09528b7ca0892e04a60252131ccbdb8746476e07fed67f95c144961ff8ad2cc2dd708cf07e39c + checksum: acd593ec33b028169c7bf753a5c92eabdb05f87ba9f14e33fe24a4adc1e0a1ff4be0c4757a57a82413263ebbb6b567708b4f3019cb4df899d2d07fcec64bd75a languageName: node linkType: hard -"jest-jasmine2@npm:^27.4.4": - version: 27.4.4 - resolution: "jest-jasmine2@npm:27.4.4" +"jest-jasmine2@npm:^27.4.5": + version: 27.4.5 + resolution: "jest-jasmine2@npm:27.4.5" dependencies: "@babel/traverse": ^7.1.0 "@jest/environment": ^27.4.4 @@ -9102,12 +9454,12 @@ __metadata: jest-each: ^27.4.2 jest-matcher-utils: ^27.4.2 jest-message-util: ^27.4.2 - jest-runtime: ^27.4.4 - jest-snapshot: ^27.4.4 + jest-runtime: ^27.4.5 + jest-snapshot: ^27.4.5 jest-util: ^27.4.2 pretty-format: ^27.4.2 throat: ^6.0.1 - checksum: ddd9edf6ac0b0fcc40b2dbcc29f58fed47310fea2a31094592567e1c06eaee6d2680049775b6eb26152e514149d898b5a3c19e0a30d671cf0ae3d8f1fb3f0088 + checksum: 9759e865f39390f71c83a3cabb3196c2655df2bf3771b71d9c2f2db400cec96ab7eff1b44e8b582280c07db985538bacb408dd6a42aff83984b0a27b2968fa36 languageName: node linkType: hard @@ -9179,43 +9531,43 @@ __metadata: languageName: node linkType: hard -"jest-resolve-dependencies@npm:^27.4.4": - version: 27.4.4 - resolution: "jest-resolve-dependencies@npm:27.4.4" +"jest-resolve-dependencies@npm:^27.4.5": + version: 27.4.5 + resolution: "jest-resolve-dependencies@npm:27.4.5" dependencies: "@jest/types": ^27.4.2 jest-regex-util: ^27.4.0 - jest-snapshot: ^27.4.4 - checksum: be76bb7d85e8a5f8c44e13798a916240b9d5b5ff3ace56acbac45c2f90d3314ea5171c0b9a6ed1b71e593578930a6bdcfe5035de18d392b095b46d31e971c8fd + jest-snapshot: ^27.4.5 + checksum: 1fc16cb7c8df130420732184cd87a2c8ae6bf6cbb37d61dd69fddf69ab5ab2be50774962ce4b477b915fa1cc3dc69cb1830b6a18bd1b33c3c1a9c40e43cb11ce languageName: node linkType: hard -"jest-resolve@npm:^27.4.4": - version: 27.4.4 - resolution: "jest-resolve@npm:27.4.4" +"jest-resolve@npm:^27.4.5": + version: 27.4.5 + resolution: "jest-resolve@npm:27.4.5" dependencies: "@jest/types": ^27.4.2 chalk: ^4.0.0 graceful-fs: ^4.2.4 - jest-haste-map: ^27.4.4 + jest-haste-map: ^27.4.5 jest-pnp-resolver: ^1.2.2 jest-util: ^27.4.2 jest-validate: ^27.4.2 resolve: ^1.20.0 resolve.exports: ^1.1.0 slash: ^3.0.0 - checksum: 2dd3b27cc018adb754ac059c0f90eae5d8a92b3b2e0a24f16a22c448456c2f025cebd324f2408a7db229f251da76526592bde81c5cf4a408f1403571a592b7b0 + checksum: 57d619ed1ab4ba5d1b079f9ca3e93c7d9bcc9faa195b617fda6155cbce6eb48c234a957f41f7feee43740b4a5b50ebec8aea61023f766ac4b2eb6ff946c76025 languageName: node linkType: hard -"jest-runner@npm:^27.4.4": - version: 27.4.4 - resolution: "jest-runner@npm:27.4.4" +"jest-runner@npm:^27.4.5": + version: 27.4.5 + resolution: "jest-runner@npm:27.4.5" dependencies: "@jest/console": ^27.4.2 "@jest/environment": ^27.4.4 "@jest/test-result": ^27.4.2 - "@jest/transform": ^27.4.4 + "@jest/transform": ^27.4.5 "@jest/types": ^27.4.2 "@types/node": "*" chalk: ^4.0.0 @@ -9225,29 +9577,29 @@ __metadata: jest-docblock: ^27.4.0 jest-environment-jsdom: ^27.4.4 jest-environment-node: ^27.4.4 - jest-haste-map: ^27.4.4 + jest-haste-map: ^27.4.5 jest-leak-detector: ^27.4.2 jest-message-util: ^27.4.2 - jest-resolve: ^27.4.4 - jest-runtime: ^27.4.4 + jest-resolve: ^27.4.5 + jest-runtime: ^27.4.5 jest-util: ^27.4.2 - jest-worker: ^27.4.4 + jest-worker: ^27.4.5 source-map-support: ^0.5.6 throat: ^6.0.1 - checksum: fe9764e43e02e79d600446cca01664cc4c9957993c7c4ee8795af251f765b378f0da8748fae190cce0916eedd408b9601c452df666c18aece1ac70c5d6fd4019 + checksum: 456f5e3c55dfd0fdad21703a26aa2ff729bbcea173a4ac6a6a99f65d77c564ace13a0e53c33b074020d3594dbff831b7f6424f27d99485120c691ee129a6b6f4 languageName: node linkType: hard -"jest-runtime@npm:^27.4.4": - version: 27.4.4 - resolution: "jest-runtime@npm:27.4.4" +"jest-runtime@npm:^27.4.5": + version: 27.4.5 + resolution: "jest-runtime@npm:27.4.5" dependencies: "@jest/console": ^27.4.2 "@jest/environment": ^27.4.4 "@jest/globals": ^27.4.4 "@jest/source-map": ^27.4.0 "@jest/test-result": ^27.4.2 - "@jest/transform": ^27.4.4 + "@jest/transform": ^27.4.5 "@jest/types": ^27.4.2 "@types/yargs": ^16.0.0 chalk: ^4.0.0 @@ -9257,18 +9609,18 @@ __metadata: exit: ^0.1.2 glob: ^7.1.3 graceful-fs: ^4.2.4 - jest-haste-map: ^27.4.4 + jest-haste-map: ^27.4.5 jest-message-util: ^27.4.2 jest-mock: ^27.4.2 jest-regex-util: ^27.4.0 - jest-resolve: ^27.4.4 - jest-snapshot: ^27.4.4 + jest-resolve: ^27.4.5 + jest-snapshot: ^27.4.5 jest-util: ^27.4.2 jest-validate: ^27.4.2 slash: ^3.0.0 strip-bom: ^4.0.0 yargs: ^16.2.0 - checksum: f12cfcd7db91d1f36613a884493e68f255fff529504c25e77af0c60fea71fa526ebe401f27aaf05b8e563e365339829f6c39b2196159be4da6ea3445408d5d7b + checksum: 3fddd950504e2eee83f13237d8e2321c91237881a04e71cfd5457064eb970a91de3b8560b15ed6dbfc8843aa06151907510842f5f2f8e93b5a172a1d282ae26e languageName: node linkType: hard @@ -9282,9 +9634,9 @@ __metadata: languageName: node linkType: hard -"jest-snapshot@npm:^27.4.4": - version: 27.4.4 - resolution: "jest-snapshot@npm:27.4.4" +"jest-snapshot@npm:^27.4.5": + version: 27.4.5 + resolution: "jest-snapshot@npm:27.4.5" dependencies: "@babel/core": ^7.7.2 "@babel/generator": ^7.7.2 @@ -9292,7 +9644,7 @@ __metadata: "@babel/plugin-syntax-typescript": ^7.7.2 "@babel/traverse": ^7.7.2 "@babel/types": ^7.0.0 - "@jest/transform": ^27.4.4 + "@jest/transform": ^27.4.5 "@jest/types": ^27.4.2 "@types/babel__traverse": ^7.0.4 "@types/prettier": ^2.1.5 @@ -9302,15 +9654,15 @@ __metadata: graceful-fs: ^4.2.4 jest-diff: ^27.4.2 jest-get-type: ^27.4.0 - jest-haste-map: ^27.4.4 + jest-haste-map: ^27.4.5 jest-matcher-utils: ^27.4.2 jest-message-util: ^27.4.2 - jest-resolve: ^27.4.4 + jest-resolve: ^27.4.5 jest-util: ^27.4.2 natural-compare: ^1.4.0 pretty-format: ^27.4.2 semver: ^7.3.2 - checksum: 4339cfa7725a0eb0b368af7e348dba07a03fc418c931d127843f8a933287c01cc880c5e32272a736c4c5ad1ba53fd96b789c30f9809258f515c77f3c140f91de + checksum: c5dcb1ccb95feb8773fc64b6d21d28fc8e8d2cf53bfde74247b3d34a83936a9b92492416d447d4e559e7b2ce39e442e4ee4a266d2f54c9ab8ab686eb16d1c8f4 languageName: node linkType: hard @@ -9385,24 +9737,24 @@ __metadata: languageName: node linkType: hard -"jest-worker@npm:^27.0.6, jest-worker@npm:^27.4.4": - version: 27.4.4 - resolution: "jest-worker@npm:27.4.4" +"jest-worker@npm:^27.4.1, jest-worker@npm:^27.4.5": + version: 27.4.5 + resolution: "jest-worker@npm:27.4.5" dependencies: "@types/node": "*" merge-stream: ^2.0.0 supports-color: ^8.0.0 - checksum: e4a383d587f9e0fbe247a6c2e3a0dbe7b5cc0f9fe8583d6ffdc9257591563e62ecd6ef4c987dc44ca43a97d430395e36221427325bc839312a7ea62a4b1baedd + checksum: eb0b6be412103299c3d8643ad26daf862826ca841bd2a3ff47d2d931804ab7d7f0db2fcdea7dbf47ce8eacb7742b3f2586c2d6ebdaa8d0ac77c65f7b698e7683 languageName: node linkType: hard "jest@npm:^27.4.4": - version: 27.4.4 - resolution: "jest@npm:27.4.4" + version: 27.4.5 + resolution: "jest@npm:27.4.5" dependencies: - "@jest/core": ^27.4.4 + "@jest/core": ^27.4.5 import-local: ^3.0.2 - jest-cli: ^27.4.4 + jest-cli: ^27.4.5 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -9410,11 +9762,11 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 0af09bd42c1ecef555dbc4a8cdd2b77b4bfff9ab3d7d2ee01e343067f443eb5743c7acdf2f28e8d2d268c8e058b129c79b1eda99d7c8b06a6a0e9e1fd04cb741 + checksum: 57ee4be68650dd1f89e077cca48813d824779a07626e84178c672727ace1ef3cd489f124a27dc02b88601774413330e6d35080b11919efa6460ee61d378c6610 languageName: node linkType: hard -"joycon@npm:^3.0.0": +"joycon@npm:^3.1.1": version: 3.1.1 resolution: "joycon@npm:3.1.1" checksum: 8003c9c3fc79c5c7602b1c7e9f7a2df2e9916f046b0dbad862aa589be78c15734d11beb9fe846f5e06138df22cb2ad29961b6a986ba81c4920ce2b15a7f11067 @@ -9596,6 +9948,13 @@ __metadata: languageName: node linkType: hard +"jsonc-parser@npm:^2.3.0": + version: 2.3.1 + resolution: "jsonc-parser@npm:2.3.1" + checksum: de37640bd1d0dcc5b2e19f2514b3c2e05832ec6fdb86da65102509524d3eef0f2cc49bd471a0b28b8af2f8069bbca8396a9bd5cad4ae04001e1893e47df265eb + languageName: node + linkType: hard + "jsonfile@npm:^4.0.0": version: 4.0.0 resolution: "jsonfile@npm:4.0.0" @@ -9647,92 +10006,6 @@ __metadata: languageName: node linkType: hard -"jss-plugin-camel-case@npm:^10.5.1": - version: 10.9.0 - resolution: "jss-plugin-camel-case@npm:10.9.0" - dependencies: - "@babel/runtime": ^7.3.1 - hyphenate-style-name: ^1.0.3 - jss: 10.9.0 - checksum: 435c7e3111f1e23b369f7a78bdadb09e91f100215b3156a0e46edad5801c2c002f8029d2afa71c9eafc1cb340988b5d9b81fed633bd63983371d21e3d5be2a4c - languageName: node - linkType: hard - -"jss-plugin-default-unit@npm:^10.5.1": - version: 10.9.0 - resolution: "jss-plugin-default-unit@npm:10.9.0" - dependencies: - "@babel/runtime": ^7.3.1 - jss: 10.9.0 - checksum: 5ff18061b1bf3afb0ae2d435dd2253159fc1927ce9ffd3457692df5b949f2ca39e01f752b728c584dd17dac5457963179ac3e71303bab8344fa8eee0352e8e5c - languageName: node - linkType: hard - -"jss-plugin-global@npm:^10.5.1": - version: 10.9.0 - resolution: "jss-plugin-global@npm:10.9.0" - dependencies: - "@babel/runtime": ^7.3.1 - jss: 10.9.0 - checksum: 1ff11b47131fec7b156cac057d3b749abff778b7ebd219649ef7a8988187e2a9b2c6cbd27f4b3c294df66378d688dc9e14a67e2ef9396a9c76ee2e720d6e224c - languageName: node - linkType: hard - -"jss-plugin-nested@npm:^10.5.1": - version: 10.9.0 - resolution: "jss-plugin-nested@npm:10.9.0" - dependencies: - "@babel/runtime": ^7.3.1 - jss: 10.9.0 - tiny-warning: ^1.0.2 - checksum: 46dc4977d014bc67e9348642cd642a09864707ea70b7eac06a20f8505b0c995402199a6895d02faa9bb5282a3429b0e6814a41fe852da2a3b85543e75e60f271 - languageName: node - linkType: hard - -"jss-plugin-props-sort@npm:^10.5.1": - version: 10.9.0 - resolution: "jss-plugin-props-sort@npm:10.9.0" - dependencies: - "@babel/runtime": ^7.3.1 - jss: 10.9.0 - checksum: 87eb054d4afa0d8db86ea5d7ace40d9883a11c7cbeada54c4a515da73a92178d777d3cef48b2b2bb52e0eab11212c8a15b9c29ec3d327ab256aaff943fd77c9d - languageName: node - linkType: hard - -"jss-plugin-rule-value-function@npm:^10.5.1": - version: 10.9.0 - resolution: "jss-plugin-rule-value-function@npm:10.9.0" - dependencies: - "@babel/runtime": ^7.3.1 - jss: 10.9.0 - tiny-warning: ^1.0.2 - checksum: b8d0f4f8b2620f084e5e9e6f2cf54c9ce5857d1a15c4eb9d0f1d7fc4ee79452dba877c8c4039eeb163b132cbaff04ea958df54150fb41d9a9f9e86b93a54813f - languageName: node - linkType: hard - -"jss-plugin-vendor-prefixer@npm:^10.5.1": - version: 10.9.0 - resolution: "jss-plugin-vendor-prefixer@npm:10.9.0" - dependencies: - "@babel/runtime": ^7.3.1 - css-vendor: ^2.0.8 - jss: 10.9.0 - checksum: 8248908d9788fea2e2060ec82a61c07549935e57de3682a319927b3ee2256867a26c7af95e2169ceffe3712520ebd4b518c84485606b9838340f50d561a6cd22 - languageName: node - linkType: hard - -"jss@npm:10.9.0, jss@npm:^10.5.1, jss@npm:^10.9.0": - version: 10.9.0 - resolution: "jss@npm:10.9.0" - dependencies: - "@babel/runtime": ^7.3.1 - csstype: ^3.0.2 - is-in-browser: ^1.1.3 - tiny-warning: ^1.0.2 - checksum: 29d3f133afc45ac8b392c1cda697ca0dc62b8a8b1f6a445054b9801f93c6beb95af81ef9c2f7c1583f99517234229adfc16067d163a29334a1d072cbd25df1b7 - languageName: node - linkType: hard - "jsx-ast-utils@npm:^2.4.1 || ^3.0.0": version: 3.2.1 resolution: "jsx-ast-utils@npm:3.2.1" @@ -9919,30 +10192,29 @@ __metadata: linkType: hard "lint-staged@npm:^12.1.2": - version: 12.1.2 - resolution: "lint-staged@npm:12.1.2" + version: 12.1.3 + resolution: "lint-staged@npm:12.1.3" dependencies: cli-truncate: ^3.1.0 colorette: ^2.0.16 commander: ^8.3.0 - debug: ^4.3.2 - enquirer: ^2.3.6 + debug: ^4.3.3 execa: ^5.1.1 lilconfig: 2.0.4 - listr2: ^3.13.3 + listr2: ^3.13.5 micromatch: ^4.0.4 normalize-path: ^3.0.0 - object-inspect: ^1.11.0 + object-inspect: ^1.11.1 string-argv: ^0.3.1 - supports-color: ^9.0.2 + supports-color: ^9.2.1 yaml: ^1.10.2 bin: lint-staged: bin/lint-staged.js - checksum: ec84ce4f74d0d8fe314bd0b62fb5e0be64af692d1876f68c457116faef61b4b3b79d72df7819c248bfbb20c46e88fbe994128e7351e84bec7048263e00199925 + checksum: f42fea248f690478ddd3d15ed9dd2302c0744da6af3032d1afe6e9f3c5ff99a7f4af85bf73425d027ff3c53b8c2a4a8f2227ab3e2e1367af786d301debea4bce languageName: node linkType: hard -"listr2@npm:^3.13.3, listr2@npm:^3.8.3": +"listr2@npm:^3.13.5, listr2@npm:^3.8.3": version: 3.13.5 resolution: "listr2@npm:3.13.5" dependencies: @@ -10407,7 +10679,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.0, minimist@npm:^1.2.5": +"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:~1.2.5": version: 1.2.5 resolution: "minimist@npm:1.2.5" checksum: 86706ce5b36c16bfc35c5fe3dbb01d5acdc9a22f2b6cc810b6680656a1d2c0e44a0159c9a3ba51fb072bb5c203e49e10b51dcd0eec39c481f4c42086719bae52 @@ -10539,6 +10811,16 @@ __metadata: languageName: node linkType: hard +"multipipe@npm:^1.0.2": + version: 1.0.2 + resolution: "multipipe@npm:1.0.2" + dependencies: + duplexer2: ^0.1.2 + object-assign: ^4.1.0 + checksum: 99cf8934714da7f9ce03e1f0a99621a41443217d80849c62e22b31b6ac356b9acd22f41e555fd7a759f1c7c9d3273e7abff2fb82dff8285f00a6a1022727e4ab + languageName: node + linkType: hard + "mute-stream@npm:0.0.8": version: 0.0.8 resolution: "mute-stream@npm:0.0.8" @@ -10750,6 +11032,18 @@ __metadata: languageName: node linkType: hard +"npmlog@npm:^5.0.1": + version: 5.0.1 + resolution: "npmlog@npm:5.0.1" + dependencies: + are-we-there-yet: ^2.0.0 + console-control-strings: ^1.1.0 + gauge: ^3.0.0 + set-blocking: ^2.0.0 + checksum: 516b2663028761f062d13e8beb3f00069c5664925871a9b57989642ebe09f23ab02145bf3ab88da7866c4e112cafff72401f61a672c7c8a20edc585a7016ef5f + languageName: node + linkType: hard + "npmlog@npm:^6.0.0": version: 6.0.0 resolution: "npmlog@npm:6.0.0" @@ -10762,7 +11056,7 @@ __metadata: languageName: node linkType: hard -"nth-check@npm:^2.0.0": +"nth-check@npm:^2.0.1": version: 2.0.1 resolution: "nth-check@npm:2.0.1" dependencies: @@ -10792,10 +11086,10 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.11.0, object-inspect@npm:^1.9.0": - version: 1.11.1 - resolution: "object-inspect@npm:1.11.1" - checksum: 98bc8e1e108b193cfb5d9bfb71b79f0e19d187aca4f9a3f28ea0e946c0011a74f9fc2ada83ecf2216b3e69fe6bf697fda8230ed84a6ca5680887e7bb73cf34ad +"object-inspect@npm:^1.11.0, object-inspect@npm:^1.11.1, object-inspect@npm:^1.9.0": + version: 1.12.0 + resolution: "object-inspect@npm:1.12.0" + checksum: 2b36d4001a9c921c6b342e2965734519c9c58c355822243c3207fbf0aac271f8d44d30d2d570d450b2cc6f0f00b72bcdba515c37827d2560e5f22b1899a31cf4 languageName: node linkType: hard @@ -10806,6 +11100,13 @@ __metadata: languageName: node linkType: hard +"object-keys@npm:~0.4.0": + version: 0.4.0 + resolution: "object-keys@npm:0.4.0" + checksum: 1be3ebe9b48c0d5eda8e4a30657d887a748cb42435e0e2eaf49faf557bdd602cd2b7558b8ce90a4eb2b8592d16b875a1900bce859cbb0f35b21c67e11a45313c + languageName: node + linkType: hard + "object.assign@npm:^4.1.0, object.assign@npm:^4.1.2": version: 4.1.2 resolution: "object.assign@npm:4.1.2" @@ -11289,14 +11590,14 @@ __metadata: linkType: hard "pino-pretty@npm:^7.2.0": - version: 7.2.0 - resolution: "pino-pretty@npm:7.2.0" + version: 7.3.0 + resolution: "pino-pretty@npm:7.3.0" dependencies: args: ^5.0.1 colorette: ^2.0.7 dateformat: ^4.6.3 fast-safe-stringify: ^2.0.7 - joycon: ^3.0.0 + joycon: ^3.1.1 pino-abstract-transport: ^0.5.0 pump: ^3.0.0 readable-stream: ^3.6.0 @@ -11306,7 +11607,7 @@ __metadata: strip-json-comments: ^3.1.1 bin: pino-pretty: bin.js - checksum: dafe8a33681316c97eda6a1240ea8b8a0efad6e62183c793c6bbe594aae836bd5894f2fb5657b6a8e26576ccb364213186cf3dc060e89f68ddcee87c98e5a803 + checksum: 28320e4f7d037934ca6d6f8457d724fa5635dfb0cbf2fcc12e8ad01bca35da1e7afa6fcc8fd071b667d9bca963cf317e9d6bf1b940f1abe2be9119a573f023cd languageName: node linkType: hard @@ -11388,13 +11689,6 @@ __metadata: languageName: node linkType: hard -"popper.js@npm:1.16.1-lts": - version: 1.16.1-lts - resolution: "popper.js@npm:1.16.1-lts" - checksum: 27c00b5b07afa91a5e9f9db78a9a61b50f44ca156d09c851cd29d79cd359e54cfde4288ae555b88801438227e452e56cb4b56bd79fd45ab17dac780a70a7e9ac - languageName: node - linkType: hard - "postcss-modules-extract-imports@npm:^3.0.0": version: 3.0.0 resolution: "postcss-modules-extract-imports@npm:3.0.0" @@ -11457,13 +11751,13 @@ __metadata: linkType: hard "postcss@npm:^8.2.15": - version: 8.4.4 - resolution: "postcss@npm:8.4.4" + version: 8.4.5 + resolution: "postcss@npm:8.4.5" dependencies: nanoid: ^3.1.30 picocolors: ^1.0.0 source-map-js: ^1.0.1 - checksum: 6cf3fe0ecdf5a0d2aeb5e8404938c7eab968704e2e29dc5421e90b4014eb1975c1c0ad828425f2428807ef6e3fcfadd71f988ab55cb06c28ac2866f22403255b + checksum: b78abdd89c10f7b48f4bdcd376104a19d6e9c7495ab521729bdb3df315af6c211360e9f06887ad3bc0ab0f61a04b91d68ea11462997c79cced58b9ccd66fac07 languageName: node linkType: hard @@ -11518,6 +11812,13 @@ __metadata: languageName: node linkType: hard +"process-nextick-args@npm:~2.0.0": + version: 2.0.1 + resolution: "process-nextick-args@npm:2.0.1" + checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf + languageName: node + linkType: hard + "progress@npm:^2.0.0": version: 2.0.3 resolution: "progress@npm:2.0.3" @@ -11775,7 +12076,7 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^16.8.0 || ^17.0.0, react-is@npm:^17.0.1, react-is@npm:^17.0.2": +"react-is@npm:^17.0.1, react-is@npm:^17.0.2": version: 17.0.2 resolution: "react-is@npm:17.0.2" checksum: 9d6d111d8990dc98bc5402c1266a808b0459b5d54830bbea24c12d908b536df7883f268a7868cfaedde3dd9d4e0d574db456f84d2e6df9c4526f99bb4b5344d8 @@ -11803,30 +12104,30 @@ __metadata: linkType: hard "react-router-dom@npm:^6.0.2": - version: 6.0.2 - resolution: "react-router-dom@npm:6.0.2" + version: 6.2.1 + resolution: "react-router-dom@npm:6.2.1" dependencies: - history: ^5.1.0 - react-router: 6.0.2 + history: ^5.2.0 + react-router: 6.2.1 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: d3680939a4fac286f8df028c1fabe5626567ba065b2029b1cc4ad64fe9444aeba186d0e5e765563fc36ea868e7d17e02fb098f2ebc0b1c70212a8470a4b58ad6 + checksum: fa0edc69fddf0cb1313bcb3dbd5eb2b2ff24a75ee03ba928995e16a6a251585750f91d966612e868eb68a5aebc4a5240be40fd96c4acf1d8d48d33f54ad3f4e2 languageName: node linkType: hard -"react-router@npm:6.0.2, react-router@npm:^6.0.2": - version: 6.0.2 - resolution: "react-router@npm:6.0.2" +"react-router@npm:6.2.1, react-router@npm:^6.0.2": + version: 6.2.1 + resolution: "react-router@npm:6.2.1" dependencies: - history: ^5.1.0 + history: ^5.2.0 peerDependencies: react: ">=16.8" - checksum: 9d4f3a8002a90f38be022c6740e11e9bb481e60ad04c5a0ce2d6dbe685059c09b3037c45414d6e7e40eb97308842380413cfb93c5cdcb992e7ee0c50b4f7fcaa + checksum: 081a89237ab4f32195d1f2173bc4b3d95637cd6942a4d1a9e90d4ac8c80faa95528255ca2ec44c1e88c1b369e712c4ca74cba5ae3acef6fc30a51a62805b95a4 languageName: node linkType: hard -"react-transition-group@npm:^4.0.0, react-transition-group@npm:^4.4.0": +"react-transition-group@npm:^4.4.2": version: 4.4.2 resolution: "react-transition-group@npm:4.4.2" dependencies: @@ -11896,6 +12197,33 @@ __metadata: languageName: node linkType: hard +"readable-stream@npm:^2.0.2": + version: 2.3.7 + resolution: "readable-stream@npm:2.3.7" + dependencies: + core-util-is: ~1.0.0 + inherits: ~2.0.3 + isarray: ~1.0.0 + process-nextick-args: ~2.0.0 + safe-buffer: ~5.1.1 + string_decoder: ~1.1.1 + util-deprecate: ~1.0.1 + checksum: e4920cf7549a60f8aaf694d483a0e61b2a878b969d224f89b3bc788b8d920075132c4b55a7494ee944c7b6a9a0eada28a7f6220d80b0312ece70bbf08eeca755 + languageName: node + linkType: hard + +"readable-stream@npm:~1.0.17, readable-stream@npm:~1.0.27-1": + version: 1.0.34 + resolution: "readable-stream@npm:1.0.34" + dependencies: + core-util-is: ~1.0.0 + inherits: ~2.0.1 + isarray: 0.0.1 + string_decoder: ~0.10.x + checksum: 85042c537e4f067daa1448a7e257a201070bfec3dd2706abdbd8ebc7f3418eb4d3ed4b8e5af63e2544d69f88ab09c28d5da3c0b77dc76185fddd189a59863b60 + languageName: node + linkType: hard + "readdirp@npm:~3.6.0": version: 3.6.0 resolution: "readdirp@npm:3.6.0" @@ -12128,7 +12456,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.10.0, resolve@npm:^1.13.1, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.9.0": +"resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.13.1, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.9.0": version: 1.20.0 resolution: "resolve@npm:1.20.0" dependencies: @@ -12148,7 +12476,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.13.1#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.9.0#~builtin": +"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.12.0#~builtin, resolve@patch:resolve@^1.13.1#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.9.0#~builtin": version: 1.20.0 resolution: "resolve@patch:resolve@npm%3A1.20.0#~builtin::version=1.20.0&hash=07638b" dependencies: @@ -12199,14 +12527,12 @@ __metadata: languageName: node linkType: hard -"rifm@npm:^0.7.0": - version: 0.7.0 - resolution: "rifm@npm:0.7.0" - dependencies: - "@babel/runtime": ^7.3.1 +"rifm@npm:^0.12.1": + version: 0.12.1 + resolution: "rifm@npm:0.12.1" peerDependencies: react: ">=16.8" - checksum: 7b89d9c5c92cb1b6848964ab5c5042d652ba803fe7ecea2282191e0e820b07fb3345306b2baf69af1cef2f0755c50e97efc51d0cfdd645b8956d05d5d19d381e + checksum: 7f11621b6a14885bdee0b49c21174627272a5f683f74aaf8444570dae319f86de38d2af55c17e08af1ebb837bf956894971cceadeaca890e4c9cd1d46f02a385 languageName: node linkType: hard @@ -12236,8 +12562,8 @@ __metadata: linkType: hard "rollup@npm:^2.43.1": - version: 2.61.0 - resolution: "rollup@npm:2.61.0" + version: 2.61.1 + resolution: "rollup@npm:2.61.1" dependencies: fsevents: ~2.3.2 dependenciesMeta: @@ -12245,7 +12571,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 9a30043759c990503f870fa2591b428d8dc979a2c407c3f23a177fa8bef5e423f9a6adf707e0a92bdd67a3a1af28ff1e5fdf6176e1d03c513867608208165d87 + checksum: a41bd821c1d9f296e71e867828150080fb05d08cbdff9b6b5c0e3642da4d0723f7a847189f197c2a695a8a353d968ad89ebd54a4228dc3e92765c00e6bbadf87 languageName: node linkType: hard @@ -12283,20 +12609,20 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c - languageName: node - linkType: hard - -"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 languageName: node linkType: hard +"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c + languageName: node + linkType: hard + "safe-stable-stringify@npm:^2.1.0": version: 2.3.1 resolution: "safe-stable-stringify@npm:2.3.1" @@ -12466,6 +12792,7 @@ __metadata: dependencies: "@babel/cli": ^7.16.0 "@babel/core": ^7.16.0 + "@emotion/server": ^11.4.0 "@koa/router": ^10.1.1 "@loadable/component": ^5.15.0 "@loadable/server": ^5.15.1 @@ -12509,7 +12836,6 @@ __metadata: eslint: ^8.4.1 google-polyline: ^1.0.3 iconv-lite: ^0.6.3 - jss: ^10.9.0 koa: ^2.13.4 koa-bodyparser: ^4.3.0 koa-static: ^5.0.0 @@ -12779,7 +13105,7 @@ __metadata: languageName: node linkType: hard -"source-map@npm:^0.5.0": +"source-map@npm:^0.5.0, source-map@npm:^0.5.7": version: 0.5.7 resolution: "source-map@npm:0.5.7" checksum: 5dc2043b93d2f194142c7f38f74a24670cd7a0063acdaf4bf01d2964b402257ae843c2a8fa822ad5b71013b5fcafa55af7421383da919752f22ff488bc553f4d @@ -12857,6 +13183,15 @@ __metadata: languageName: node linkType: hard +"specificity@npm:^0.4.1": + version: 0.4.1 + resolution: "specificity@npm:0.4.1" + bin: + specificity: ./bin/specificity + checksum: e558f1098f85aa54a8e90277309ac0d1913c84812c0bd349aa449076aa700964f71ab69f04f5fda9b7898bef9b7da3faa1cad9caedfd3f1a1ebfebedc18604ab + languageName: node + linkType: hard + "split2@npm:^3.0.0": version: 3.2.2 resolution: "split2@npm:3.2.2" @@ -13063,6 +13398,22 @@ __metadata: languageName: node linkType: hard +"string_decoder@npm:~0.10.x": + version: 0.10.31 + resolution: "string_decoder@npm:0.10.31" + checksum: fe00f8e303647e5db919948ccb5ce0da7dea209ab54702894dd0c664edd98e5d4df4b80d6fabf7b9e92b237359d21136c95bf068b2f7760b772ca974ba970202 + languageName: node + linkType: hard + +"string_decoder@npm:~1.1.1": + version: 1.1.1 + resolution: "string_decoder@npm:1.1.1" + dependencies: + safe-buffer: ~5.1.0 + checksum: 9ab7e56f9d60a28f2be697419917c50cac19f3e8e6c28ef26ed5f4852289fe0de5d6997d29becf59028556f2c62983790c1d9ba1e2a3cc401768ca12d5183a5b + languageName: node + linkType: hard + "stringify-object@npm:^3.3.0": version: 3.3.0 resolution: "stringify-object@npm:3.3.0" @@ -13154,6 +13505,13 @@ __metadata: languageName: node linkType: hard +"stylis@npm:4.0.13": + version: 4.0.13 + resolution: "stylis@npm:4.0.13" + checksum: 8ea7a87028b6383c6a982231c4b5b6150031ce028e0fdaf7b2ace82253d28a8af50cc5a9da8a421d3c7c4441592f393086e332795add672aa4a825f0fe3713a3 + languageName: node + linkType: hard + "superagent@npm:^6.1.0": version: 6.1.0 resolution: "superagent@npm:6.1.0" @@ -13210,7 +13568,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^9.0.2": +"supports-color@npm:^9.2.1": version: 9.2.1 resolution: "supports-color@npm:9.2.1" checksum: 8a2bfeb64c1512d21a1a998c1f64acdaa85cf1f6a101627286548f19785524b329d7b28d567a28fc2d708fc7aba32f4c82a9b224f76b30a337a39d3e53418ff7 @@ -13292,10 +13650,10 @@ __metadata: linkType: hard "terser-webpack-plugin@npm:^5.1.3, terser-webpack-plugin@npm:^5.2.5": - version: 5.2.5 - resolution: "terser-webpack-plugin@npm:5.2.5" + version: 5.3.0 + resolution: "terser-webpack-plugin@npm:5.3.0" dependencies: - jest-worker: ^27.0.6 + jest-worker: ^27.4.1 schema-utils: ^3.1.1 serialize-javascript: ^6.0.0 source-map: ^0.6.1 @@ -13309,7 +13667,7 @@ __metadata: optional: true uglify-js: optional: true - checksum: 2a9616466becf2e968bfc0f585678581b5c83a9dd96723c49329b11a8ccc1aaa41701877fbad2b0ce570364fde58c558fb6e7e053171512624e644b99b2f83af + checksum: f6735b8bb2604e8ca8b78d21f610fb2488866db72bb38e8d7c32aab97ea81fa0a19cabed074a431ff3dd9510d6efd505fc6930cdd8c1d3faa71c1bf7da4c7469 languageName: node linkType: hard @@ -13388,6 +13746,16 @@ __metadata: languageName: node linkType: hard +"through2@npm:~0.4.1": + version: 0.4.2 + resolution: "through2@npm:0.4.2" + dependencies: + readable-stream: ~1.0.17 + xtend: ~2.1.1 + checksum: 50e41d272db4a74b10a62b7e92eeeb8d30e426a7a8a772cd85fac0f8e21d92c6e5cb5012d7db5f7a20f6e147e1f14f87062058c77b05bc9d463ae4d8b3eb1e42 + languageName: node + linkType: hard + "through@npm:>=2.2.7 <3, through@npm:^2.3.6, through@npm:^2.3.8": version: 2.3.8 resolution: "through@npm:2.3.8" @@ -13395,13 +13763,6 @@ __metadata: languageName: node linkType: hard -"tiny-warning@npm:^1.0.2": - version: 1.0.3 - resolution: "tiny-warning@npm:1.0.3" - checksum: da62c4acac565902f0624b123eed6dd3509bc9a8d30c06e017104bedcf5d35810da8ff72864400ad19c5c7806fc0a8323c68baf3e326af7cb7d969f846100d71 - languageName: node - linkType: hard - "tmp@npm:^0.0.33": version: 0.0.33 resolution: "tmp@npm:0.0.33" @@ -13736,32 +14097,52 @@ __metadata: languageName: unknown linkType: soft +"typescript-styled-plugin@npm:^0.18.2": + version: 0.18.2 + resolution: "typescript-styled-plugin@npm:0.18.2" + dependencies: + typescript-template-language-service-decorator: ^2.2.0 + vscode-css-languageservice: ^5.1.4 + vscode-emmet-helper: ^2.6.4 + vscode-languageserver-textdocument: ^1.0.1 + vscode-languageserver-types: ^3.16.0 + checksum: a410974ba8c604ae1826962b602f9ed0e7e2f134227e7418a9495c798886859664ed20cd1774978ab017645936d896143091a30980c7b09f06650ca97b344ffe + languageName: node + linkType: hard + +"typescript-template-language-service-decorator@npm:^2.2.0": + version: 2.2.0 + resolution: "typescript-template-language-service-decorator@npm:2.2.0" + checksum: a9781d893b3123050fd3c1efe24ffc5b62c298f07e4b9c17884ebf33cb3f4821f3e12d9f17fe382fc31ccd6599255b1ea36ae602d2b519550241f221a37815d4 + languageName: node + linkType: hard + "typescript@npm:^4": - version: 4.5.3 - resolution: "typescript@npm:4.5.3" + version: 4.5.4 + resolution: "typescript@npm:4.5.4" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 2ac278c20418882816789ad94a5d9e7f11969db7a2a23fa09e61f2fedf3814265cbd4f89d7f5b6e1f0e7be2b5f169becf5dab913d0da255b073ea3c8c324e6d4 + checksum: 59f3243f9cd6fe3161e6150ff6bf795fc843b4234a655dbd938a310515e0d61afd1ac942799e7415e4334255e41c2c49b7dd5d9fd38a17acd25a6779ca7e0961 languageName: node linkType: hard "typescript@patch:typescript@npm%3A^4#~builtin": - version: 4.5.3 - resolution: "typescript@patch:typescript@npm%3A4.5.3#~builtin::version=4.5.3&hash=493e53" + version: 4.5.4 + resolution: "typescript@patch:typescript@npm%3A4.5.4#~builtin::version=4.5.4&hash=493e53" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 3c3a664dfb66e7c45d3823cc1a4038dc506415041f39249ed3af1799a64b3065448549d9e9ba509c94335d1e2dfbe311a4b9e36574e87d248f9381d541cb8626 + checksum: 2e488dde7d2c4a2fa2e79cf2470600f8ce81bc0563c276b72df8ff412d74456ae532ba824650ae936ce207440c79720ddcfaa25e3cb4477572b8534fa4e34d49 languageName: node linkType: hard "uglify-js@npm:^3.1.4": - version: 3.14.4 - resolution: "uglify-js@npm:3.14.4" + version: 3.14.5 + resolution: "uglify-js@npm:3.14.5" bin: uglifyjs: bin/uglifyjs - checksum: 13217db5212a201de2ad89873a4e31b26a140c21c0239cefea4ee1c2861c71a5c133538312ce08c92bf97e5b00c8e170d0ef90213026c17ffa689d2e2cdbce73 + checksum: 0330eb11a36f4181b6d9a00336355989bfad9dd2203049fc63a59454b0d12337612272ad011bc571b9a382bf74d829ca20409ebfe089e38edb26cfc06bfa2cc9 languageName: node linkType: hard @@ -13916,7 +14297,7 @@ __metadata: languageName: node linkType: hard -"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2": +"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 @@ -13985,6 +14366,67 @@ __metadata: languageName: node linkType: hard +"vscode-css-languageservice@npm:^5.1.4": + version: 5.1.9 + resolution: "vscode-css-languageservice@npm:5.1.9" + dependencies: + vscode-languageserver-textdocument: ^1.0.1 + vscode-languageserver-types: ^3.16.0 + vscode-nls: ^5.0.0 + vscode-uri: ^3.0.2 + checksum: dc6465ebb2cdc1f19ddd7eac3e9579d5d12187fa01b662d37157461b4ce81944e2553445b1c52e92a7a83dc398fe437d9eed94c7ec60cf3077f6cffc445dac91 + languageName: node + linkType: hard + +"vscode-emmet-helper@npm:^2.6.4": + version: 2.6.4 + resolution: "vscode-emmet-helper@npm:2.6.4" + dependencies: + emmet: ^2.3.0 + jsonc-parser: ^2.3.0 + vscode-languageserver-textdocument: ^1.0.1 + vscode-languageserver-types: ^3.15.1 + vscode-nls: ^5.0.0 + vscode-uri: ^2.1.2 + checksum: ccee14eadae599fa619f714865ef47b6fbabfe684eabeee00311ac078bbf340cd07c0481af4028e2565412be2fb272dbabd268174a8c835243f699cdd6b5c09e + languageName: node + linkType: hard + +"vscode-languageserver-textdocument@npm:^1.0.1": + version: 1.0.3 + resolution: "vscode-languageserver-textdocument@npm:1.0.3" + checksum: ed8f1372cd902bcfd18c84654581551594d8f388ff3a0419febfe70d0bc88e5460f6998c6e45f200e90871d6b0528a3b976a632eade7b3e31675400416a2d33d + languageName: node + linkType: hard + +"vscode-languageserver-types@npm:^3.15.1, vscode-languageserver-types@npm:^3.16.0": + version: 3.16.0 + resolution: "vscode-languageserver-types@npm:3.16.0" + checksum: 7a44fb10b9fbeb9529f832337b7f0430fc6275d62945b86851d425a950e22da3917ef5f6c552688191769dd1eae047c6ee9ec3d9f2280498353007c2dfe0725c + languageName: node + linkType: hard + +"vscode-nls@npm:^5.0.0": + version: 5.0.0 + resolution: "vscode-nls@npm:5.0.0" + checksum: 8b12d1a3b0f783b91a98747fce76d2c26299db0c288089703bc3de53cc503f3ededa9833c21c3cb3b4857bd1c4e5d93663da38d4ddbf7b970dc63b6892d4639a + languageName: node + linkType: hard + +"vscode-uri@npm:^2.1.2": + version: 2.1.2 + resolution: "vscode-uri@npm:2.1.2" + checksum: 58c2d21018b86825b5a7f65f8879f837828a367bbf31d07ed59268fb2b56c9621a6996547d5e8f966d6ac05f0f921a7005f4541927007f788c2e4c6e5d6735e0 + languageName: node + linkType: hard + +"vscode-uri@npm:^3.0.2": + version: 3.0.2 + resolution: "vscode-uri@npm:3.0.2" + checksum: 5ed2c95a483a43398df40c31d23e44f138e9c8bed384fa4edf0fd97396ce18ae8dae173c5d55e69b47205e2108e165cb165b12843a74e8b35c066d9f3810fb6c + languageName: node + linkType: hard + "w3c-hr-time@npm:^1.0.2": version: 1.0.2 resolution: "w3c-hr-time@npm:1.0.2" @@ -14121,8 +14563,8 @@ __metadata: linkType: hard "webpack-dev-middleware@npm:^5.2.2": - version: 5.2.2 - resolution: "webpack-dev-middleware@npm:5.2.2" + version: 5.3.0 + resolution: "webpack-dev-middleware@npm:5.3.0" dependencies: colorette: ^2.0.10 memfs: ^3.2.2 @@ -14131,7 +14573,7 @@ __metadata: schema-utils: ^4.0.0 peerDependencies: webpack: ^4.0.0 || ^5.0.0 - checksum: 8dfcb1244ba564e525f9d6644174a558cebd4857317bbdbcd394848641f7f0c0aeb0e7b2803dd56286b4820a7f66d27b8e58e8f1dec5515417ffa40da1f6197d + checksum: 01f9e11583bb682cd5ab5a1b9d6dc99545f777513c4c15aa67d10f5d057fc3d0c6f9365e02c07792d3c9b17bd47a16c8185e66eb66e9de74d8ccf561e75085e7 languageName: node linkType: hard @@ -14628,6 +15070,15 @@ __metadata: languageName: node linkType: hard +"xtend@npm:~2.1.1": + version: 2.1.2 + resolution: "xtend@npm:2.1.2" + dependencies: + object-keys: ~0.4.0 + checksum: a8b79f31502c163205984eaa2b196051cd2fab0882b49758e30f2f9018255bc6c462e32a090bf3385d1bda04755ad8cc0052a09e049b0038f49eb9b950d9c447 + languageName: node + linkType: hard + "y18n@npm:^4.0.0": version: 4.0.3 resolution: "y18n@npm:4.0.3" @@ -14649,7 +15100,7 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^1.10.0, yaml@npm:^1.10.2": +"yaml@npm:^1.10.0, yaml@npm:^1.10.2, yaml@npm:^1.7.2": version: 1.10.2 resolution: "yaml@npm:1.10.2" checksum: ce4ada136e8a78a0b08dc10b4b900936912d15de59905b2bf415b4d33c63df1d555d23acb2a41b23cf9fb5da41c256441afca3d6509de7247daa062fd2c5ea5f