From b0c972db0aab182614ca98b1df1d776ee6979c3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Richard=20Trembeck=C3=BD?= Date: Tue, 26 Nov 2024 19:36:36 +0100 Subject: [PATCH] Upgrade react admin to v5 (#507) * upgrade React Admin to v5 * fix post-upgrade type errors, prepare client-side search and filter, create Accept constant * post-upgrade: account for new rowClick defaults * refactor My(Show/Edit)Actions * fix crash on PostCreate --- package.json | 2 +- src/components/Admin/AdminLayout.tsx | 7 +- src/components/Admin/custom/MyEditActions.tsx | 15 +- src/components/Admin/custom/MyFileField.tsx | 2 +- src/components/Admin/custom/MyShowActions.tsx | 10 +- src/components/Admin/dataProvider.ts | 54 +- .../resources/base/flat-page/FlatpageList.tsx | 2 +- .../Admin/resources/cms/post/PostCreate.tsx | 2 +- .../Admin/resources/cms/post/PostList.tsx | 2 +- .../Admin/resources/cms/post/PostShow.tsx | 2 +- .../competition/CompetitionList.tsx | 2 +- .../competition/UpcomingOrCurrentEvent.tsx | 2 + .../EventRegistrationList.tsx | 2 +- .../resources/competition/event/EventList.tsx | 2 +- .../resources/competition/event/EventShow.tsx | 2 +- .../competition/problems/ProblemCreate.tsx | 5 +- .../competition/problems/ProblemEdit.tsx | 5 +- .../competition/problems/ProblemList.tsx | 2 +- .../competition/semester/SemesterList.tsx | 2 +- .../competition/semester/SemesterShow.tsx | 8 +- .../competition/series/SeriesList.tsx | 2 +- .../competition/solution/SolutionCreate.tsx | 3 +- .../competition/solution/SolutionEdit.tsx | 3 +- .../competition/solution/SolutionList.tsx | 2 +- .../personal/profiles/ProfileList.tsx | 2 +- .../resources/personal/schools/SchoolList.tsx | 2 +- .../ProblemAdministration.tsx | 5 +- src/components/Problems/UploadProblemForm.tsx | 5 +- .../PublicationUploader.tsx | 3 +- src/utils/dropzone-accept.ts | 5 + yarn.lock | 662 +++--------------- 31 files changed, 200 insertions(+), 624 deletions(-) create mode 100644 src/utils/dropzone-accept.ts diff --git a/package.json b/package.json index a2de4d81..c87c7a5f 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "mathjax-react": "^2.0.1", "next": "15.0.3", "react": "19.0.0-rc-66855b96-20241106", - "react-admin": "^4.16.20", + "react-admin": "^5.4.0", "react-cookie": "^4.1.1", "react-dom": "19.0.0-rc-66855b96-20241106", "react-dropzone": "^14.3.5", diff --git a/src/components/Admin/AdminLayout.tsx b/src/components/Admin/AdminLayout.tsx index afe3c003..e1189d53 100644 --- a/src/components/Admin/AdminLayout.tsx +++ b/src/components/Admin/AdminLayout.tsx @@ -1,7 +1,8 @@ import {Home, Logout} from '@mui/icons-material/' import {Button, Stack, Typography} from '@mui/material' import {useRouter} from 'next/router' -import {AppBar, Layout, LayoutProps, useLogout} from 'react-admin' +import {FC, PropsWithChildren} from 'react' +import {AppBar, Layout, useLogout} from 'react-admin' const AppMenuBar = () => { const router = useRouter() @@ -32,10 +33,10 @@ const AppMenuBar = () => { ) } -export const AdminLayout = (props: LayoutProps) => { +export const AdminLayout: FC = ({children}) => { return ( <> - + {children} { const resource = useResourceContext() const record = useRecordContext() + const createPath = useCreatePath() + // needed, undefined on first load if (!record) return null - const currentPathWithoutTab = `/${resource}/${record.id}` // '/cms/post/123' - let to = `${currentPathWithoutTab}/show` // '/cms/post/123/show' + const currentPathWithoutTab = createPath({type: 'edit', resource, id: record.id}) // '/cms/post/123' const tabPart = pathname.slice(currentPathWithoutTab.length) // bud '' alebo '/1' - if (tabPart) to = `${to}${tabPart}` // '/cms/post/123/show' alebo '/cms/post/123/show/1' + const path = createPath({type: 'show', resource, id: record.id}) // '/cms/post/123/show' + const to = `${path}${tabPart}` // '/cms/post/123/show' alebo '/cms/post/123/show/1' return ( - {/* the `to` prop was omitted from ShowButton in recent RA version, but it's still working - and RA doesn't provide better way to do this - TODO: try again after RA upgrade */} + {/* the `to` prop is omitted from ShowButtonProps, but it's still being spread to underlying button. + we want to link to the specific show tab, not just resource show */} {/* @ts-ignore */} diff --git a/src/components/Admin/custom/MyFileField.tsx b/src/components/Admin/custom/MyFileField.tsx index 845ee1fa..f69248e5 100644 --- a/src/components/Admin/custom/MyFileField.tsx +++ b/src/components/Admin/custom/MyFileField.tsx @@ -8,7 +8,7 @@ export const MyFileField: FC = () => { return ( - + ) } diff --git a/src/components/Admin/custom/MyShowActions.tsx b/src/components/Admin/custom/MyShowActions.tsx index e4abfd61..bd801d7b 100644 --- a/src/components/Admin/custom/MyShowActions.tsx +++ b/src/components/Admin/custom/MyShowActions.tsx @@ -1,5 +1,5 @@ import {FC} from 'react' -import {EditButton, ListButton, TopToolbar, useRecordContext, useResourceContext} from 'react-admin' +import {EditButton, ListButton, TopToolbar, useCreatePath, useRecordContext, useResourceContext} from 'react-admin' // eslint-disable-next-line node/no-extraneous-import import {useLocation} from 'react-router-dom' @@ -8,13 +8,15 @@ export const MyShowActions: FC = () => { const resource = useResourceContext() const record = useRecordContext() + const createPath = useCreatePath() + // needed, undefined on first load if (!record) return null - const currentPathWithoutTab = `/${resource}/${record.id}/show` // '/cms/post/123/show' - let to = `/${resource}/${record.id}` // '/cms/post/123' + const currentPathWithoutTab = createPath({type: 'show', resource, id: record.id}) // '/cms/post/123/show' const tabPart = pathname.slice(currentPathWithoutTab.length) // bud '' alebo '/1' - if (tabPart) to = `${to}${tabPart}` // '/cms/post/123' alebo '/cms/post/123/1' + const path = createPath({type: 'edit', resource, id: record.id}) // '/cms/post/123' + const to = `${path}${tabPart}` // '/cms/post/123' alebo '/cms/post/123/1' return ( diff --git a/src/components/Admin/dataProvider.ts b/src/components/Admin/dataProvider.ts index c5efdcbb..c5a71589 100644 --- a/src/components/Admin/dataProvider.ts +++ b/src/components/Admin/dataProvider.ts @@ -1,15 +1,13 @@ import axios from 'axios' import {stringify} from 'querystring' import {DataProvider, RaRecord} from 'react-admin' - -// potencialne TODO: ak BE bude mat pagination, filter alebo sort, upravime a pouzijeme tento kod. -// zatial je pagination aj sort rieseny client-side a len pre getList, filter/search nemame. - +// TODO: BE chysta search, filter, pagination a sort. ked to bude ready, +// postupne odkomentujeme tento kod a zmazeme client-side handling nizsie // import {FilterPayload, PaginationPayload, SortPayload} from 'react-admin' // const getPaginationQuery = ({page, perPage}: PaginationPayload) => ({ -// page, -// page_size: perPage, +// offset: page, +// limit: perPage, // }) // const getFilterQuery = ({q, ...otherSearchParams}: FilterPayload) => ({ // ...otherSearchParams, @@ -40,30 +38,46 @@ export const dataProvider: DataProvider = { // ...getOrderingQuery(params.sort), } const stringifiedQuery = stringify(query) - const {data} = await axios.get(`${apiUrl}/${resource}${stringifiedQuery ? `/?${stringifiedQuery}` : ''}`) + const {data} = await axios.get(`${apiUrl}/${resource}${stringifiedQuery ? `/?${stringifiedQuery}` : ''}`) // client-side filter - const filter = params.filter.q let filteredData = data - if (filter) { - // v podstate vygenerovane Copilotom :D - // vyhladava to filter string vo vsetkych fieldoch kazdeho recordu - filteredData = data.filter((record: RaRecord) => { - return Object.keys(record).some((key) => { - const value = record[key] - return value && value.toString().toLowerCase().includes(filter.toLowerCase()) + if (params.filter) { + const {q: search, ...rest} = params.filter + if (search) { + // vyhladava to filter string vo vsetkych fieldoch kazdeho recordu + // - bohuzial tie fieldy su casto len IDcka inych modelov, tak nic moc :D + filteredData = data.filter((record: RaRecord) => { + const matches = Object.values(record).some((value) => { + return value && JSON.stringify(value).toLowerCase().includes(search.toLowerCase()) + }) + return matches + }) + } + + if (rest) { + filteredData = filteredData.filter((record: RaRecord) => { + return Object.entries(rest).every(([key, value]) => { + if (!value) return true + return record[key] === value + }) }) - }) + } } // client-side sort - const {field, order} = params.sort + if (params.sort) { + const {field, order} = params.sort - filteredData.sort(dynamicSort(field, order)) + filteredData.sort(dynamicSort(field, order)) + } // client-side pagination - const {page, perPage} = params.pagination - const pagedData = filteredData.slice((page - 1) * perPage, page * perPage) + let pagedData = filteredData + if (params.pagination) { + const {page, perPage} = params.pagination + pagedData = filteredData.slice((page - 1) * perPage, page * perPage) + } return { data: pagedData, diff --git a/src/components/Admin/resources/base/flat-page/FlatpageList.tsx b/src/components/Admin/resources/base/flat-page/FlatpageList.tsx index c0245ddc..04903310 100644 --- a/src/components/Admin/resources/base/flat-page/FlatpageList.tsx +++ b/src/components/Admin/resources/base/flat-page/FlatpageList.tsx @@ -6,7 +6,7 @@ import {TruncatedTextField} from '@/components/Admin/custom/TruncatedTextField' export const FlatpageList: FC = () => ( - + diff --git a/src/components/Admin/resources/cms/post/PostCreate.tsx b/src/components/Admin/resources/cms/post/PostCreate.tsx index 5f426bc5..3d4dba39 100644 --- a/src/components/Admin/resources/cms/post/PostCreate.tsx +++ b/src/components/Admin/resources/cms/post/PostCreate.tsx @@ -14,7 +14,7 @@ export const PostCreate: FC = () => { - + {/* */} diff --git a/src/components/Admin/resources/cms/post/PostList.tsx b/src/components/Admin/resources/cms/post/PostList.tsx index 5ab07a1d..11956552 100644 --- a/src/components/Admin/resources/cms/post/PostList.tsx +++ b/src/components/Admin/resources/cms/post/PostList.tsx @@ -7,7 +7,7 @@ import {TruncatedTextField} from '@/components/Admin/custom/TruncatedTextField' export const PostList: FC = () => ( - + diff --git a/src/components/Admin/resources/cms/post/PostShow.tsx b/src/components/Admin/resources/cms/post/PostShow.tsx index 0a4397e7..7ccbe2eb 100644 --- a/src/components/Admin/resources/cms/post/PostShow.tsx +++ b/src/components/Admin/resources/cms/post/PostShow.tsx @@ -22,7 +22,7 @@ export const PostShow: FC = () => ( - + diff --git a/src/components/Admin/resources/competition/competition/CompetitionList.tsx b/src/components/Admin/resources/competition/competition/CompetitionList.tsx index 7f05301e..b7963725 100644 --- a/src/components/Admin/resources/competition/competition/CompetitionList.tsx +++ b/src/components/Admin/resources/competition/competition/CompetitionList.tsx @@ -6,7 +6,7 @@ import {TruncatedTextField} from '@/components/Admin/custom/TruncatedTextField' export const CompetitionList: FC = () => ( - + diff --git a/src/components/Admin/resources/competition/competition/UpcomingOrCurrentEvent.tsx b/src/components/Admin/resources/competition/competition/UpcomingOrCurrentEvent.tsx index 35141f6e..408036fd 100644 --- a/src/components/Admin/resources/competition/competition/UpcomingOrCurrentEvent.tsx +++ b/src/components/Admin/resources/competition/competition/UpcomingOrCurrentEvent.tsx @@ -16,6 +16,8 @@ export const UpcomingOrCurrentEvent: FC = () => { const record = useRecordContext() const redirect = useRedirect() + if (!record) return null + return ( ( - + ( - + diff --git a/src/components/Admin/resources/competition/event/EventShow.tsx b/src/components/Admin/resources/competition/event/EventShow.tsx index de9f982d..e7d98c67 100644 --- a/src/components/Admin/resources/competition/event/EventShow.tsx +++ b/src/components/Admin/resources/competition/event/EventShow.tsx @@ -37,7 +37,7 @@ export const EventShow: FC = () => ( - + diff --git a/src/components/Admin/resources/competition/problems/ProblemCreate.tsx b/src/components/Admin/resources/competition/problems/ProblemCreate.tsx index a690df4c..358b4d9a 100644 --- a/src/components/Admin/resources/competition/problems/ProblemCreate.tsx +++ b/src/components/Admin/resources/competition/problems/ProblemCreate.tsx @@ -5,6 +5,7 @@ import {LatexPreview} from '@/components/Admin/custom/LatexPreview' import {MyCreate} from '@/components/Admin/custom/MyCreate' import {MyFileField} from '@/components/Admin/custom/MyFileField' import {MyImageField} from '@/components/Admin/custom/MyImageField' +import {Accept} from '@/utils/dropzone-accept' import {createProblemFormData} from './createProblemFormData' @@ -23,10 +24,10 @@ export const ProblemCreate: FC = () => ( - + - + diff --git a/src/components/Admin/resources/competition/problems/ProblemEdit.tsx b/src/components/Admin/resources/competition/problems/ProblemEdit.tsx index bc703e90..54c84ce7 100644 --- a/src/components/Admin/resources/competition/problems/ProblemEdit.tsx +++ b/src/components/Admin/resources/competition/problems/ProblemEdit.tsx @@ -5,6 +5,7 @@ import {LatexPreview} from '@/components/Admin/custom/LatexPreview' import {MyEdit} from '@/components/Admin/custom/MyEdit' import {MyFileField} from '@/components/Admin/custom/MyFileField' import {MyImageField} from '@/components/Admin/custom/MyImageField' +import {Accept} from '@/utils/dropzone-accept' import {createProblemFormData} from './createProblemFormData' @@ -23,10 +24,10 @@ export const ProblemEdit: FC = () => ( - + - + diff --git a/src/components/Admin/resources/competition/problems/ProblemList.tsx b/src/components/Admin/resources/competition/problems/ProblemList.tsx index 03254833..325594d5 100644 --- a/src/components/Admin/resources/competition/problems/ProblemList.tsx +++ b/src/components/Admin/resources/competition/problems/ProblemList.tsx @@ -14,7 +14,7 @@ import {TruncatedTextField} from '@/components/Admin/custom/TruncatedTextField' export const ProblemList: FC = () => ( - + diff --git a/src/components/Admin/resources/competition/semester/SemesterList.tsx b/src/components/Admin/resources/competition/semester/SemesterList.tsx index b01b6593..0a61357a 100644 --- a/src/components/Admin/resources/competition/semester/SemesterList.tsx +++ b/src/components/Admin/resources/competition/semester/SemesterList.tsx @@ -15,7 +15,7 @@ import {SeasonCodeField} from '@/components/Admin/custom/SeasonCodeField' export const SemesterList: FC = () => ( - + diff --git a/src/components/Admin/resources/competition/semester/SemesterShow.tsx b/src/components/Admin/resources/competition/semester/SemesterShow.tsx index df27da02..34e56d22 100644 --- a/src/components/Admin/resources/competition/semester/SemesterShow.tsx +++ b/src/components/Admin/resources/competition/semester/SemesterShow.tsx @@ -40,7 +40,7 @@ export const SemesterShow: FC = () => ( - + @@ -51,10 +51,10 @@ export const SemesterShow: FC = () => ( - + - + @@ -66,7 +66,7 @@ export const SemesterShow: FC = () => ( - + diff --git a/src/components/Admin/resources/competition/series/SeriesList.tsx b/src/components/Admin/resources/competition/series/SeriesList.tsx index ed11ebef..db0fc971 100644 --- a/src/components/Admin/resources/competition/series/SeriesList.tsx +++ b/src/components/Admin/resources/competition/series/SeriesList.tsx @@ -5,7 +5,7 @@ import {DateTimeField} from '@/components/Admin/custom/DateTimeField' export const SeriesList: FC = () => ( - + diff --git a/src/components/Admin/resources/competition/solution/SolutionCreate.tsx b/src/components/Admin/resources/competition/solution/SolutionCreate.tsx index a8235fcb..ffb4d46e 100644 --- a/src/components/Admin/resources/competition/solution/SolutionCreate.tsx +++ b/src/components/Admin/resources/competition/solution/SolutionCreate.tsx @@ -3,6 +3,7 @@ import {AutocompleteInput, BooleanInput, FileInput, ReferenceInput, required, Si import {MyCreate} from '@/components/Admin/custom/MyCreate' import {MyFileField} from '@/components/Admin/custom/MyFileField' +import {Accept} from '@/utils/dropzone-accept' import {createSolutionFormData} from './createSolutionFormData' @@ -20,7 +21,7 @@ export const SolutionCreate: FC = () => ( - + diff --git a/src/components/Admin/resources/competition/solution/SolutionEdit.tsx b/src/components/Admin/resources/competition/solution/SolutionEdit.tsx index 72f7540a..b5eb9789 100644 --- a/src/components/Admin/resources/competition/solution/SolutionEdit.tsx +++ b/src/components/Admin/resources/competition/solution/SolutionEdit.tsx @@ -3,6 +3,7 @@ import {AutocompleteInput, BooleanInput, FileInput, ReferenceInput, required, Si import {MyEdit} from '@/components/Admin/custom/MyEdit' import {MyFileField} from '@/components/Admin/custom/MyFileField' +import {Accept} from '@/utils/dropzone-accept' import {createSolutionFormData} from './createSolutionFormData' @@ -20,7 +21,7 @@ export const SolutionEdit: FC = () => ( - + diff --git a/src/components/Admin/resources/competition/solution/SolutionList.tsx b/src/components/Admin/resources/competition/solution/SolutionList.tsx index f39ce30e..66977286 100644 --- a/src/components/Admin/resources/competition/solution/SolutionList.tsx +++ b/src/components/Admin/resources/competition/solution/SolutionList.tsx @@ -3,7 +3,7 @@ import {BooleanField, Datagrid, FunctionField, List, RaRecord, ReferenceField} f export const SolutionList: FC = () => ( - + diff --git a/src/components/Admin/resources/personal/profiles/ProfileList.tsx b/src/components/Admin/resources/personal/profiles/ProfileList.tsx index 8bdf98d9..24e61972 100644 --- a/src/components/Admin/resources/personal/profiles/ProfileList.tsx +++ b/src/components/Admin/resources/personal/profiles/ProfileList.tsx @@ -3,7 +3,7 @@ import {Datagrid, List, ReferenceField, TextField} from 'react-admin' export const ProfileList: FC = () => ( - + diff --git a/src/components/Admin/resources/personal/schools/SchoolList.tsx b/src/components/Admin/resources/personal/schools/SchoolList.tsx index 30c3119a..f599a50c 100644 --- a/src/components/Admin/resources/personal/schools/SchoolList.tsx +++ b/src/components/Admin/resources/personal/schools/SchoolList.tsx @@ -5,7 +5,7 @@ import {TruncatedTextField} from '@/components/Admin/custom/TruncatedTextField' export const SchoolList: FC = () => ( - + diff --git a/src/components/ProblemAdministration/ProblemAdministration.tsx b/src/components/ProblemAdministration/ProblemAdministration.tsx index 520e7ab5..e126c265 100644 --- a/src/components/ProblemAdministration/ProblemAdministration.tsx +++ b/src/components/ProblemAdministration/ProblemAdministration.tsx @@ -7,6 +7,7 @@ import React, {FC, useCallback, useEffect, useState} from 'react' import {DropzoneOptions, useDropzone} from 'react-dropzone' import {ProblemWithSolutions, SemesterWithProblems, SolutionAdministration} from '@/types/api/competition' +import {Accept} from '@/utils/dropzone-accept' import {PageTitleContainer} from '@/utils/PageTitleContainer' import {useHasPermissions} from '@/utils/useHasPermissions' import {useNavigationTrap} from '@/utils/useNavigationTrap' @@ -143,9 +144,7 @@ export const ProblemAdministration: FC = () => { const {getRootProps, getInputProps} = useDropzone({ onDrop, multiple: false, - accept: { - 'application/zip': ['.zip'], - }, + accept: Accept.Zip, }) if (permissionsIsLoading || problemIsLoading || semesterIsLoading) return diff --git a/src/components/Problems/UploadProblemForm.tsx b/src/components/Problems/UploadProblemForm.tsx index ea9fc343..ae904202 100644 --- a/src/components/Problems/UploadProblemForm.tsx +++ b/src/components/Problems/UploadProblemForm.tsx @@ -5,6 +5,7 @@ import {Dispatch, FC, SetStateAction, useState} from 'react' import {useDropzone} from 'react-dropzone' import {CloseButton} from '@/components/CloseButton/CloseButton' +import {Accept} from '@/utils/dropzone-accept' import {niceBytes} from '@/utils/niceBytes' import {useAlert} from '@/utils/useAlert' @@ -50,9 +51,7 @@ export const UploadProblemForm: FC<{ const [files, setFiles] = useState(undefined) const {fileRejections, getRootProps, getInputProps} = useDropzone({ multiple: false, - accept: { - 'application/pdf': ['.pdf'], - }, + accept: Accept.Pdf, onDrop: (acceptedFiles) => !!acceptedFiles[0] && setFiles(acceptedFiles[0]), }) diff --git a/src/components/PublicationUploader/PublicationUploader.tsx b/src/components/PublicationUploader/PublicationUploader.tsx index 8a63d729..8c970a69 100644 --- a/src/components/PublicationUploader/PublicationUploader.tsx +++ b/src/components/PublicationUploader/PublicationUploader.tsx @@ -4,6 +4,7 @@ import {FC} from 'react' import {PublicationTypes} from '@/types/api/competition' import {SemesterWithProblems} from '@/types/api/generated/competition' +import {Accept} from '@/utils/dropzone-accept' import {Link} from '../Clickable/Link' import {FileUploader} from '../FileUploader/FileUploader' @@ -37,7 +38,7 @@ export const PublicationUploader: FC = ({semesterId, o )} diff --git a/src/utils/dropzone-accept.ts b/src/utils/dropzone-accept.ts new file mode 100644 index 00000000..3551c01c --- /dev/null +++ b/src/utils/dropzone-accept.ts @@ -0,0 +1,5 @@ +export const Accept = { + Image: {'image/*': ['.jpeg', '.jpg', '.png']}, + Pdf: {'application/pdf': ['.pdf']}, + Zip: {'application/zip': ['.zip']}, +} as const diff --git a/yarn.lock b/yarn.lock index c5c9493f..24d2c82e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1493,7 +1493,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.6.2, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.9.2": +"@babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.9.2": version: 7.21.5 resolution: "@babel/runtime@npm:7.21.5" dependencies: @@ -1618,19 +1618,6 @@ __metadata: languageName: node linkType: hard -"@emotion/cache@npm:^11.10.8": - version: 11.10.8 - resolution: "@emotion/cache@npm:11.10.8" - dependencies: - "@emotion/memoize": ^0.8.0 - "@emotion/sheet": ^1.2.1 - "@emotion/utils": ^1.2.0 - "@emotion/weak-memoize": ^0.3.0 - stylis: 4.1.4 - checksum: a67751db54077813ee3a011f255ee5c79eb375284cec8404866d44da904d69b037566047ca52549772b8038f8cd00ebd092c628ddc764fe89d6932c16afd71e3 - languageName: node - linkType: hard - "@emotion/cache@npm:^11.11.0": version: 11.11.0 resolution: "@emotion/cache@npm:11.11.0" @@ -1671,7 +1658,7 @@ __metadata: languageName: node linkType: hard -"@emotion/is-prop-valid@npm:^1.2.0, @emotion/is-prop-valid@npm:^1.2.1": +"@emotion/is-prop-valid@npm:^1.2.1": version: 1.2.1 resolution: "@emotion/is-prop-valid@npm:1.2.1" dependencies: @@ -1689,13 +1676,6 @@ __metadata: languageName: node linkType: hard -"@emotion/memoize@npm:^0.8.0": - version: 0.8.0 - resolution: "@emotion/memoize@npm:0.8.0" - checksum: c87bb110b829edd8e1c13b90a6bc37cebc39af29c7599a1e66a48e06f9bec43e8e53495ba86278cc52e7589549492c8dfdc81d19f4fdec0cee6ba13d2ad2c928 - languageName: node - linkType: hard - "@emotion/memoize@npm:^0.8.1": version: 0.8.1 resolution: "@emotion/memoize@npm:0.8.1" @@ -1778,13 +1758,6 @@ __metadata: languageName: node linkType: hard -"@emotion/sheet@npm:^1.2.1": - version: 1.2.1 - resolution: "@emotion/sheet@npm:1.2.1" - checksum: ce78763588ea522438156344d9f592203e2da582d8d67b32e1b0b98eaba26994c6c270f8c7ad46442fc9c0a9f048685d819cd73ca87e544520fd06f0e24a1562 - languageName: node - linkType: hard - "@emotion/sheet@npm:^1.2.2": version: 1.2.2 resolution: "@emotion/sheet@npm:1.2.2" @@ -1871,13 +1844,6 @@ __metadata: languageName: node linkType: hard -"@emotion/utils@npm:^1.2.0": - version: 1.2.0 - resolution: "@emotion/utils@npm:1.2.0" - checksum: 55457a49ddd4db6a014ea0454dc09eaa23eedfb837095c8ff90470cb26a303f7ceb5fcc1e2190ef64683e64cfd33d3ba3ca3109cd87d12bc9e379e4195c9a4dd - languageName: node - linkType: hard - "@emotion/utils@npm:^1.2.1": version: 1.2.1 resolution: "@emotion/utils@npm:1.2.1" @@ -1892,13 +1858,6 @@ __metadata: languageName: node linkType: hard -"@emotion/weak-memoize@npm:^0.3.0": - version: 0.3.0 - resolution: "@emotion/weak-memoize@npm:0.3.0" - checksum: f43ef4c8b7de70d9fa5eb3105921724651e4188e895beb71f0c5919dc899a7b8743e1fdd99d38b9092dd5722c7be2312ebb47fbdad0c4e38bea58f6df5885cc0 - languageName: node - linkType: hard - "@emotion/weak-memoize@npm:^0.3.1": version: 0.3.1 resolution: "@emotion/weak-memoize@npm:0.3.1" @@ -2243,36 +2202,6 @@ __metadata: languageName: node linkType: hard -"@mui/base@npm:5.0.0-alpha.128": - version: 5.0.0-alpha.128 - resolution: "@mui/base@npm:5.0.0-alpha.128" - dependencies: - "@babel/runtime": ^7.21.0 - "@emotion/is-prop-valid": ^1.2.0 - "@mui/types": ^7.2.4 - "@mui/utils": ^5.12.3 - "@popperjs/core": ^2.11.7 - clsx: ^1.2.1 - prop-types: ^15.8.1 - react-is: ^18.2.0 - peerDependencies: - "@types/react": ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 882a68a1e305a4e42ce904f307436ff07786f2213241b7c972912c9737a9ca23e1a0e62d374debed40050c4dd698baa26c849b814d3b1649e8d6d825de1e26ef - languageName: node - linkType: hard - -"@mui/core-downloads-tracker@npm:^5.12.3": - version: 5.12.3 - resolution: "@mui/core-downloads-tracker@npm:5.12.3" - checksum: ad9c9e4f03a3c09e3a2d68d48c1a2c336b844878ee0ed3ca0062668ed065ad9616251802cf3329e748ba059d82861dc5631a231073397d6c659fe9dcca952b5c - languageName: node - linkType: hard - "@mui/core-downloads-tracker@npm:^5.16.7": version: 5.16.7 resolution: "@mui/core-downloads-tracker@npm:5.16.7" @@ -2280,23 +2209,7 @@ __metadata: languageName: node linkType: hard -"@mui/icons-material@npm:^5.0.1": - version: 5.11.16 - resolution: "@mui/icons-material@npm:5.11.16" - dependencies: - "@babel/runtime": ^7.21.0 - peerDependencies: - "@mui/material": ^5.0.0 - "@types/react": ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: db70426b6ede049307b951fc622c6ab3b156a24589242bebbc7effd4b0df2d3c7aca93796ed8dfdf20776248778a798724c7a112f8f687c3b4a1ae813f98fb17 - languageName: node - linkType: hard - -"@mui/icons-material@npm:^5.16.7": +"@mui/icons-material@npm:^5.15.20, @mui/icons-material@npm:^5.16.7": version: 5.16.7 resolution: "@mui/icons-material@npm:5.16.7" dependencies: @@ -2312,40 +2225,7 @@ __metadata: languageName: node linkType: hard -"@mui/material@npm:^5.0.2": - version: 5.12.3 - resolution: "@mui/material@npm:5.12.3" - dependencies: - "@babel/runtime": ^7.21.0 - "@mui/base": 5.0.0-alpha.128 - "@mui/core-downloads-tracker": ^5.12.3 - "@mui/system": ^5.12.3 - "@mui/types": ^7.2.4 - "@mui/utils": ^5.12.3 - "@types/react-transition-group": ^4.4.5 - clsx: ^1.2.1 - csstype: ^3.1.2 - prop-types: ^15.8.1 - react-is: ^18.2.0 - react-transition-group: ^4.4.5 - peerDependencies: - "@emotion/react": ^11.5.0 - "@emotion/styled": ^11.3.0 - "@types/react": ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@emotion/react": - optional: true - "@emotion/styled": - optional: true - "@types/react": - optional: true - checksum: ccd42e4f8cf04ce00d0078b85bb0a4c96822a1ed327138c591efc00bfe07d7b6299a88b4c86d0a185e28d4816458b6651e46d58ae6966e8af2d45d39b919be52 - languageName: node - linkType: hard - -"@mui/material@npm:^5.16.7": +"@mui/material@npm:^5.15.20, @mui/material@npm:^5.16.7": version: 5.16.7 resolution: "@mui/material@npm:5.16.7" dependencies: @@ -2378,23 +2258,6 @@ __metadata: languageName: node linkType: hard -"@mui/private-theming@npm:^5.12.3": - version: 5.12.3 - resolution: "@mui/private-theming@npm:5.12.3" - dependencies: - "@babel/runtime": ^7.21.0 - "@mui/utils": ^5.12.3 - prop-types: ^15.8.1 - peerDependencies: - "@types/react": ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 4607951eff066085a42172254755433788aafcfdcc58f93589a821939b56f9f943f16d30edc99610f439b8e265c5182608de711ec15ca6268a4c7000ad37a1dc - languageName: node - linkType: hard - "@mui/private-theming@npm:^5.16.6": version: 5.16.6 resolution: "@mui/private-theming@npm:5.16.6" @@ -2412,27 +2275,6 @@ __metadata: languageName: node linkType: hard -"@mui/styled-engine@npm:^5.12.3": - version: 5.12.3 - resolution: "@mui/styled-engine@npm:5.12.3" - dependencies: - "@babel/runtime": ^7.21.0 - "@emotion/cache": ^11.10.8 - csstype: ^3.1.2 - prop-types: ^15.8.1 - peerDependencies: - "@emotion/react": ^11.4.1 - "@emotion/styled": ^11.3.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@emotion/react": - optional: true - "@emotion/styled": - optional: true - checksum: bd96f276013fa1578b54426d70896203928927fdaf158ad7645e6cb43c42c8a535307451666cea7e04d69ad44d33ab3ab8a0d24eff32c0c364f8b5e82281fe69 - languageName: node - linkType: hard - "@mui/styled-engine@npm:^5.16.6": version: 5.16.6 resolution: "@mui/styled-engine@npm:5.16.6" @@ -2454,34 +2296,6 @@ __metadata: languageName: node linkType: hard -"@mui/system@npm:^5.12.3": - version: 5.12.3 - resolution: "@mui/system@npm:5.12.3" - dependencies: - "@babel/runtime": ^7.21.0 - "@mui/private-theming": ^5.12.3 - "@mui/styled-engine": ^5.12.3 - "@mui/types": ^7.2.4 - "@mui/utils": ^5.12.3 - clsx: ^1.2.1 - csstype: ^3.1.2 - prop-types: ^15.8.1 - peerDependencies: - "@emotion/react": ^11.5.0 - "@emotion/styled": ^11.3.0 - "@types/react": ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@emotion/react": - optional: true - "@emotion/styled": - optional: true - "@types/react": - optional: true - checksum: c2f0e55e8ff5a55f75ecc829a4c5877c9cafa834c106856318053459f1bf8f794b9e84d258b932507d4c35c76a32d3622e3fa49005e6754503d173b491e6a594 - languageName: node - linkType: hard - "@mui/system@npm:^5.16.7": version: 5.16.7 resolution: "@mui/system@npm:5.16.7" @@ -2522,33 +2336,6 @@ __metadata: languageName: node linkType: hard -"@mui/types@npm:^7.2.4": - version: 7.2.4 - resolution: "@mui/types@npm:7.2.4" - peerDependencies: - "@types/react": "*" - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 16bea0547492193a22fd1794382f314698a114f6c673825314c66b56766c3a9d305992cc495684722b7be16a1ecf7e6e48a79caa64f90c439b530e8c02611a61 - languageName: node - linkType: hard - -"@mui/utils@npm:^5.12.3": - version: 5.12.3 - resolution: "@mui/utils@npm:5.12.3" - dependencies: - "@babel/runtime": ^7.21.0 - "@types/prop-types": ^15.7.5 - "@types/react-is": ^16.7.1 || ^17.0.0 - prop-types: ^15.8.1 - react-is: ^18.2.0 - peerDependencies: - react: ^17.0.0 || ^18.0.0 - checksum: bec2d8e173805e2a7446aa4fa7a3119d96a62787b685dbf59908f337daec922fa74a54bc60038cf1269621aebb7b61e7a52caa4ac4daa0140c5e290adce20160 - languageName: node - linkType: hard - "@mui/utils@npm:^5.16.6": version: 5.16.6 resolution: "@mui/utils@npm:5.16.6" @@ -2880,13 +2667,6 @@ __metadata: languageName: node linkType: hard -"@popperjs/core@npm:^2.11.7": - version: 2.11.7 - resolution: "@popperjs/core@npm:2.11.7" - checksum: 5b6553747899683452a1d28898c1b39173a4efd780e74360bfcda8eb42f1c5e819602769c81a10920fc68c881d07fb40429604517d499567eac079cfa6470f19 - languageName: node - linkType: hard - "@popperjs/core@npm:^2.11.8": version: 2.11.8 resolution: "@popperjs/core@npm:2.11.8" @@ -2894,10 +2674,10 @@ __metadata: languageName: node linkType: hard -"@remix-run/router@npm:1.6.1": - version: 1.6.1 - resolution: "@remix-run/router@npm:1.6.1" - checksum: 4ca65d9c7d6fa277227ad8fd4ef53bebab99460b714d835b609c998f9a7e7c33a964ce2b8af853b50025a60d9113968f256abc5f71f451939ff14a5187d327fe +"@remix-run/router@npm:1.21.0": + version: 1.21.0 + resolution: "@remix-run/router@npm:1.21.0" + checksum: d9477a7772053ad0ffcf03385cfb1a54e56f8a56d1f9f5062de3b1dfcbd019dd73282a00a5a72aa55c120771110982448c165c1405d64540aaef13051a8e45cc languageName: node linkType: hard @@ -3120,7 +2900,7 @@ __metadata: languageName: node linkType: hard -"@tanstack/react-query@npm:5.61.0": +"@tanstack/react-query@npm:5.61.0, @tanstack/react-query@npm:^5.21.7": version: 5.61.0 resolution: "@tanstack/react-query@npm:5.61.0" dependencies: @@ -3415,13 +3195,6 @@ __metadata: languageName: node linkType: hard -"@types/prop-types@npm:^15.7.5": - version: 15.7.5 - resolution: "@types/prop-types@npm:15.7.5" - checksum: 5b43b8b15415e1f298243165f1d44390403bb2bd42e662bca3b5b5633fdd39c938e91b7fce3a9483699db0f7a715d08cef220c121f723a634972fdf596aec980 - languageName: node - linkType: hard - "@types/react-dom@npm:types-react-dom@19.0.0-rc.1": version: 19.0.0-rc.1 resolution: "types-react-dom@npm:19.0.0-rc.1" @@ -3431,15 +3204,6 @@ __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.3": version: 5.3.3 resolution: "@types/react-router-dom@npm:5.3.3" @@ -3470,15 +3234,6 @@ __metadata: languageName: node linkType: hard -"@types/react-transition-group@npm:^4.4.5": - version: 4.4.6 - resolution: "@types/react-transition-group@npm:4.4.6" - dependencies: - "@types/react": "*" - checksum: 0872143821d7ee20a1d81e965f8b1e837837f11cd2206973f1f98655751992d9390304d58bac192c9cd923eca95bff107d8c9e3364a180240d5c2a6fd70fd7c3 - languageName: node - linkType: hard - "@types/react@npm:types-react@19.0.0-rc.1": version: 19.0.0-rc.1 resolution: "types-react@npm:19.0.0-rc.1" @@ -3983,13 +3738,6 @@ __metadata: languageName: node linkType: hard -"attr-accept@npm:^2.2.2": - version: 2.2.2 - resolution: "attr-accept@npm:2.2.2" - checksum: 496f7249354ab53e522510c1dc8f67a1887382187adde4dc205507d2f014836a247073b05e9d9ea51e2e9c7f71b0d2aa21730af80efa9af2d68303e5f0565c4d - languageName: node - linkType: hard - "attr-accept@npm:^2.2.4": version: 2.2.5 resolution: "attr-accept@npm:2.2.5" @@ -4108,13 +3856,6 @@ __metadata: languageName: node linkType: hard -"big-integer@npm:^1.6.16": - version: 1.6.51 - resolution: "big-integer@npm:1.6.51" - checksum: 3d444173d1b2e20747e2c175568bedeebd8315b0637ea95d75fd27830d3b8e8ba36c6af40374f36bdaea7b5de376dcada1b07587cb2a79a928fccdb6e6e3c518 - languageName: node - linkType: hard - "binary-extensions@npm:^2.0.0": version: 2.1.0 resolution: "binary-extensions@npm:2.1.0" @@ -4166,22 +3907,6 @@ __metadata: languageName: node linkType: hard -"broadcast-channel@npm:^3.4.1": - version: 3.7.0 - resolution: "broadcast-channel@npm:3.7.0" - dependencies: - "@babel/runtime": ^7.7.2 - detect-node: ^2.1.0 - js-sha3: 0.8.0 - microseconds: 0.2.0 - nano-time: 1.0.0 - oblivious-set: 1.0.0 - rimraf: 3.0.2 - unload: 2.2.0 - checksum: 803794c48dcce7f03aca69797430bd8b1c4cfd70b7de22079cd89567eeffaa126a1db98c7c2d86af8131d9bb41ed367c0fef96dfb446151c927b831572c621fc - languageName: node - linkType: hard - "browserslist@npm:^4.21.9": version: 4.21.10 resolution: "browserslist@npm:4.21.10" @@ -4524,13 +4249,6 @@ __metadata: languageName: node linkType: hard -"clsx@npm:^1.1.1, clsx@npm:^1.2.1": - version: 1.2.1 - resolution: "clsx@npm:1.2.1" - checksum: 30befca8019b2eb7dbad38cff6266cf543091dae2825c856a62a8ccf2c3ab9c2907c4d12b288b73101196767f66812365400a227581484a05f968b0307cfaf12 - languageName: node - linkType: hard - "clsx@npm:^2.1.0, clsx@npm:^2.1.1": version: 2.1.1 resolution: "clsx@npm:2.1.1" @@ -4842,13 +4560,6 @@ __metadata: languageName: node linkType: hard -"csstype@npm:^3.1.2": - version: 3.1.2 - resolution: "csstype@npm:3.1.2" - checksum: e1a52e6c25c1314d6beef5168da704ab29c5186b877c07d822bd0806717d9a265e8493a2e35ca7e68d0f5d472d43fac1cdce70fd79fd0853dff81f3028d857b5 - languageName: node - linkType: hard - "csstype@npm:^3.1.3": version: 3.1.3 resolution: "csstype@npm:3.1.3" @@ -4896,12 +4607,10 @@ __metadata: languageName: node linkType: hard -"date-fns@npm:^2.19.0": - version: 2.30.0 - resolution: "date-fns@npm:2.30.0" - dependencies: - "@babel/runtime": ^7.21.0 - checksum: f7be01523282e9bb06c0cd2693d34f245247a29098527d4420628966a2d9aad154bd0e90a6b1cf66d37adcb769cd108cf8a7bd49d76db0fb119af5cdd13644f4 +"date-fns@npm:^3.6.0": + version: 3.6.0 + resolution: "date-fns@npm:3.6.0" + checksum: 0daa1e9a436cf99f9f2ae9232b55e11f3dd46132bee10987164f3eebd29f245b2e066d7d7db40782627411ecf18551d8f4c9fcdf2226e48bb66545407d448ab7 languageName: node linkType: hard @@ -5120,13 +4829,6 @@ __metadata: languageName: node linkType: hard -"detect-node@npm:^2.0.4, detect-node@npm:^2.1.0": - version: 2.1.0 - resolution: "detect-node@npm:2.1.0" - checksum: 832184ec458353e41533ac9c622f16c19f7c02d8b10c303dfd3a756f56be93e903616c0bb2d4226183c9351c15fc0b3dba41a17a2308262afabcfa3776e6ae6e - languageName: node - linkType: hard - "devlop@npm:^1.0.0, devlop@npm:^1.1.0": version: 1.1.0 resolution: "devlop@npm:1.1.0" @@ -6300,10 +6002,10 @@ __metadata: languageName: node linkType: hard -"eventemitter3@npm:^4.0.7": - version: 4.0.7 - resolution: "eventemitter3@npm:4.0.7" - checksum: 1875311c42fcfe9c707b2712c32664a245629b42bb0a5a84439762dd0fd637fc54d078155ea83c2af9e0323c9ac13687e03cfba79b03af9f40c89b4960099374 +"eventemitter3@npm:^5.0.1": + version: 5.0.1 + resolution: "eventemitter3@npm:5.0.1" + checksum: 543d6c858ab699303c3c32e0f0f47fc64d360bf73c3daf0ac0b5079710e340d6fe9f15487f94e66c629f5f82cd1a8678d692f3dbb6f6fcd1190e1b97fcad36f8 languageName: node linkType: hard @@ -6412,15 +6114,6 @@ __metadata: languageName: node linkType: hard -"file-selector@npm:^0.5.0": - version: 0.5.0 - resolution: "file-selector@npm:0.5.0" - dependencies: - tslib: ^2.0.3 - checksum: f95a06938123a2b765d136a4430cc8b19165f06a53e7ae1dcca4947716d61e9181453fcfeb2358c2660cbcecf96d7334f0528ba60071fed81f8bd358ea08454a - languageName: node - linkType: hard - "file-selector@npm:^2.1.0": version: 2.1.0 resolution: "file-selector@npm:2.1.0" @@ -7145,15 +6838,6 @@ __metadata: languageName: node linkType: hard -"history@npm:^5.1.0": - version: 5.3.0 - resolution: "history@npm:5.3.0" - dependencies: - "@babel/runtime": ^7.7.6 - checksum: d73c35df49d19ac172f9547d30a21a26793e83f16a78386d99583b5bf1429cc980799fcf1827eb215d31816a6600684fba9686ce78104e23bd89ec239e7c726f - languageName: node - linkType: hard - "hoist-non-react-statics@npm:^3.0.0, hoist-non-react-statics@npm:^3.3.0, hoist-non-react-statics@npm:^3.3.1": version: 3.3.2 resolution: "hoist-non-react-statics@npm:3.3.2" @@ -7170,13 +6854,6 @@ __metadata: languageName: node linkType: hard -"hotscript@npm:^1.0.12": - version: 1.0.13 - resolution: "hotscript@npm:1.0.13" - checksum: 09141bde1dfea1fd28e21b3c8c6e849593998dc42fc93980404bd1ad8e66ae96c0bacf03b53ee645fa736e56bcc135176ba08c1f20e93566c26856f7f3024d9c - languageName: node - linkType: hard - "html-url-attributes@npm:^3.0.0": version: 3.0.1 resolution: "html-url-attributes@npm:3.0.1" @@ -7298,10 +6975,10 @@ __metadata: languageName: node linkType: hard -"inflection@npm:~1.12.0": - version: 1.12.0 - resolution: "inflection@npm:1.12.0" - checksum: c640917b7c1ef2151df8eed5e7bc1ea6f6dd7b924e86f1add0bf801db55be8b581eb2d3d767a29e439153e4c06b00679a45853ac58c498ea519c4b4bdcd2a775 +"inflection@npm:^3.0.0": + version: 3.0.0 + resolution: "inflection@npm:3.0.0" + checksum: 6a3b21cb011a9bca1c045ef92d199c927cfd8c4b97809152fabc9c325d36789a7499397b50d46157d080efd19843807ac73e38a2fe79d8f2cf291323998fb5b5 languageName: node linkType: hard @@ -7947,13 +7624,6 @@ __metadata: languageName: node linkType: hard -"js-sha3@npm:0.8.0": - version: 0.8.0 - resolution: "js-sha3@npm:0.8.0" - checksum: 75df77c1fc266973f06cce8309ce010e9e9f07ec35ab12022ed29b7f0d9c8757f5a73e1b35aa24840dced0dea7059085aa143d817aea9e188e2a80d569d9adce - languageName: node - linkType: hard - "js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" @@ -8329,16 +7999,6 @@ __metadata: languageName: node linkType: hard -"match-sorter@npm:^6.0.2": - version: 6.3.1 - resolution: "match-sorter@npm:6.3.1" - dependencies: - "@babel/runtime": ^7.12.5 - remove-accents: 0.4.2 - checksum: a4b02b676ac4ce64a89a091539ee4a70a802684713bcf06f2b70787927f510fe8a2adc849f9288857a90906083ad303467e530e8723b4a9756df9994fc164550 - languageName: node - linkType: hard - "mathjax-full@npm:^3.0.4": version: 3.1.2 resolution: "mathjax-full@npm:3.1.2" @@ -8993,13 +8653,6 @@ __metadata: languageName: node linkType: hard -"microseconds@npm:0.2.0": - version: 0.2.0 - resolution: "microseconds@npm:0.2.0" - checksum: 22bfa8553f92c7d95afff6de0aeb2aecf750680d41b8c72b02098ccc5bbbb0a384380ff539292dbd3788f5dfc298682f9d38a2b4c101f5ee2c9471d53934c5fa - languageName: node - linkType: hard - "mime-db@npm:1.52.0": version: 1.52.0 resolution: "mime-db@npm:1.52.0" @@ -9180,15 +8833,6 @@ __metadata: languageName: node linkType: hard -"nano-time@npm:1.0.0": - version: 1.0.0 - resolution: "nano-time@npm:1.0.0" - dependencies: - big-integer: ^1.6.16 - checksum: eef8548546cc1020625f8e44751a7263e9eddf0412a6a1a6c80a8d2be2ea7973622804a977cdfe796807b85b20ff6c8ba340e8dd20effcc7078193ed5edbb5d4 - languageName: node - linkType: hard - "nanoid@npm:^3.3.6, nanoid@npm:^3.3.7": version: 3.3.7 resolution: "nanoid@npm:3.3.7" @@ -9533,13 +9177,6 @@ __metadata: languageName: node linkType: hard -"oblivious-set@npm:1.0.0": - version: 1.0.0 - resolution: "oblivious-set@npm:1.0.0" - checksum: f31740ea9c3a8242ad2324e4ebb9a35359fbc2e6e7131731a0fc1c8b7b1238eb07e4c8c631a38535243a7b8e3042b7e89f7dc2a95d2989afd6f80bd5793b0aab - languageName: node - linkType: hard - "once@npm:^1.3.0": version: 1.4.0 resolution: "once@npm:1.4.0" @@ -9951,7 +9588,7 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:^15.6.1, prop-types@npm:^15.6.2, prop-types@npm:^15.7.0": +"prop-types@npm:^15.6.2": version: 15.7.2 resolution: "prop-types@npm:15.7.2" dependencies: @@ -9994,7 +9631,7 @@ __metadata: languageName: node linkType: hard -"query-string@npm:^7.1.1": +"query-string@npm:^7.1.3": version: 7.1.3 resolution: "query-string@npm:7.1.3" dependencies: @@ -10006,102 +9643,99 @@ __metadata: languageName: node linkType: hard -"ra-core@npm:^4.16.20": - version: 4.16.20 - resolution: "ra-core@npm:4.16.20" +"ra-core@npm:^5.4.0": + version: 5.4.0 + resolution: "ra-core@npm:5.4.0" dependencies: - clsx: ^1.1.1 - date-fns: ^2.19.0 - eventemitter3: ^4.0.7 - inflection: ~1.12.0 + "@tanstack/react-query": ^5.21.7 + clsx: ^2.1.1 + date-fns: ^3.6.0 + eventemitter3: ^5.0.1 + inflection: ^3.0.0 jsonexport: ^3.2.0 lodash: ~4.17.5 - prop-types: ^15.6.1 - query-string: ^7.1.1 - react-is: ^17.0.2 - react-query: ^3.32.1 + query-string: ^7.1.3 + react-error-boundary: ^4.0.13 + react-is: ^18.2.0 peerDependencies: - history: ^5.1.0 - react: ^16.9.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 - react-hook-form: ^7.43.9 - react-router: ^6.1.0 - react-router-dom: ^6.1.0 - checksum: 4b6f42d0c9cddc1f91c28c40df5198f254c4819210bf634058aee2070a28402debacf37eced6396b1e12bd5fd3d95c5d9451c2c7d22c24e2c29ebe11f54646c6 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + react-hook-form: ^7.53.0 + react-router: ^6.22.0 + react-router-dom: ^6.22.0 + checksum: 44554074e5fc180908bd1f444a7d073329042e4c55203ef89f8d3c6c83f13695553b6dd7c89dd6b52016d3adb355887b9d2cd1e12e32fd252341b0e1cb37b9d9 languageName: node linkType: hard -"ra-i18n-polyglot@npm:^4.16.20": - version: 4.16.20 - resolution: "ra-i18n-polyglot@npm:4.16.20" +"ra-i18n-polyglot@npm:^5.4.0": + version: 5.4.0 + resolution: "ra-i18n-polyglot@npm:5.4.0" dependencies: node-polyglot: ^2.2.2 - ra-core: ^4.16.20 - checksum: 4036d8ebd7e3e89d9a9816f8d7c548b4aa0ea291a2b37ec82d9b3fddb241b9fa460483b3575d8db3023e12feeba91b95c461cb615fb2f3bd4396758d75c4fe5b + ra-core: ^5.4.0 + checksum: 3b277728dce714a80552a459befb37c57df12dccce881e5b198d903e4cbd026decf0e5ed69e21a678ab526b0bcfe970ed410abf53dba30a549b6192455e976ba languageName: node linkType: hard -"ra-language-english@npm:^4.16.20": - version: 4.16.20 - resolution: "ra-language-english@npm:4.16.20" +"ra-language-english@npm:^5.4.0": + version: 5.4.0 + resolution: "ra-language-english@npm:5.4.0" dependencies: - ra-core: ^4.16.20 - checksum: 334500c3b601ba4bee4f94baaf7270db3ba4638cf57f5f8ca53b1163f084d80ae19c58e7e58b6f84ea8c99b4da06520bd19e59c5c813021f36e90721e7ef61e7 + ra-core: ^5.4.0 + checksum: 57730d277a92d42f0699689da2b2aaaa00655410f2e12457cf8936e1f07cac6bd6aeac5fe871067e294b1230c7a792637611e9ade892c4945f5e5329520fcd92 languageName: node linkType: hard -"ra-ui-materialui@npm:^4.16.20": - version: 4.16.20 - resolution: "ra-ui-materialui@npm:4.16.20" +"ra-ui-materialui@npm:^5.4.0": + version: 5.4.0 + resolution: "ra-ui-materialui@npm:5.4.0" dependencies: + "@tanstack/react-query": ^5.21.7 autosuggest-highlight: ^3.1.1 - clsx: ^1.1.1 + clsx: ^2.1.1 css-mediaquery: ^0.1.2 dompurify: ^2.4.3 - hotscript: ^1.0.12 - inflection: ~1.12.0 + inflection: ^3.0.0 jsonexport: ^3.2.0 lodash: ~4.17.5 - prop-types: ^15.7.0 - query-string: ^7.1.1 - react-dropzone: ^12.0.4 - react-error-boundary: ^3.1.4 - react-query: ^3.32.1 - react-transition-group: ^4.4.1 - peerDependencies: - "@mui/icons-material": ^5.0.1 - "@mui/material": ^5.0.2 - ra-core: ^4.0.0 - react: ^16.9.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 + query-string: ^7.1.3 + react-dropzone: ^14.2.3 + react-error-boundary: ^4.0.13 + react-transition-group: ^4.4.5 + peerDependencies: + "@mui/icons-material": ^5.15.20 + "@mui/material": ^5.15.20 + "@mui/utils": ^5.15.20 + ra-core: ^5.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 react-hook-form: "*" - react-is: ^16.9.0 || ^17.0.0 || ^18.0.0 - react-router: ^6.1.0 - react-router-dom: ^6.1.0 - checksum: 5209c4396cb3a2410c038b29e7e8c9526c0cc26b0af1617ed132b81cb84b0e3c78277c87bee918b3a2d716782ec949f42e316f7fc01f2bf37a66379f18643eec + react-is: ^18.0.0 + react-router: ^6.22.0 + react-router-dom: ^6.22.0 + checksum: 9f0354ab2877490b6893e99d2371a3d837dc61499304c9cb277aaf4952e14bdf392c4920344d2d3cebfcc64b0978194f17ea3a549ce355d21a897089db993a82 languageName: node linkType: hard -"react-admin@npm:^4.16.20": - version: 4.16.20 - resolution: "react-admin@npm:4.16.20" +"react-admin@npm:^5.4.0": + version: 5.4.0 + resolution: "react-admin@npm:5.4.0" dependencies: "@emotion/react": ^11.4.1 "@emotion/styled": ^11.3.0 - "@mui/icons-material": ^5.0.1 - "@mui/material": ^5.0.2 - history: ^5.1.0 - ra-core: ^4.16.20 - ra-i18n-polyglot: ^4.16.20 - ra-language-english: ^4.16.20 - ra-ui-materialui: ^4.16.20 - react-hook-form: ^7.43.9 - react-router: ^6.1.0 - react-router-dom: ^6.1.0 + "@mui/icons-material": ^5.15.20 + "@mui/material": ^5.15.20 + ra-core: ^5.4.0 + ra-i18n-polyglot: ^5.4.0 + ra-language-english: ^5.4.0 + ra-ui-materialui: ^5.4.0 + react-hook-form: ^7.53.0 + react-router: ^6.22.0 + react-router-dom: ^6.22.0 peerDependencies: - react: ^16.9.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 - checksum: b62289934eda2529e5ae2801576fe5b59d4f6ff29126cbfeb9f301473fcac8193902ac775a0345270191f6746479f4f3486b20d4adfa98001bb091e315dc538d + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + checksum: 857b5c451d0f84c9c54722ac1a6e7efb588d8669d71dc2a8c5a9cc2f179afc288b24ebb52e196aa397e246ab39d58ba22dbca7d594ab117e6974f630faf354b0 languageName: node linkType: hard @@ -10129,20 +9763,7 @@ __metadata: languageName: node linkType: hard -"react-dropzone@npm:^12.0.4": - version: 12.1.0 - resolution: "react-dropzone@npm:12.1.0" - dependencies: - attr-accept: ^2.2.2 - file-selector: ^0.5.0 - prop-types: ^15.8.1 - peerDependencies: - react: ">= 16.8" - checksum: 1be37433cf42b8a9f98c8f59678e30fffc1e9b8e3fdb20f3a376557948f727156123ca0a7e45cd3882606184d945ea1139f17da0e1e5ba0b646a23be0ed65fb3 - languageName: node - linkType: hard - -"react-dropzone@npm:^14.3.5": +"react-dropzone@npm:^14.2.3, react-dropzone@npm:^14.3.5": version: 14.3.5 resolution: "react-dropzone@npm:14.3.5" dependencies: @@ -10155,27 +9776,18 @@ __metadata: languageName: node linkType: hard -"react-error-boundary@npm:^3.1.4": - version: 3.1.4 - resolution: "react-error-boundary@npm:3.1.4" +"react-error-boundary@npm:^4.0.13": + version: 4.1.2 + resolution: "react-error-boundary@npm:4.1.2" dependencies: "@babel/runtime": ^7.12.5 peerDependencies: react: ">=16.13.1" - checksum: f36270a5d775a25c8920f854c0d91649ceea417b15b5bc51e270a959b0476647bb79abb4da3be7dd9a4597b029214e8fe43ea914a7f16fa7543c91f784977f1b + checksum: afe692f1bbbfb5998b49e1001d7682a3cbfdc623dca1318b408e738606f3450d925c28fbbfa5dc84d2cf285d17c2e7f079d59386a27da354dea9c902a935149b languageName: node linkType: hard -"react-hook-form@npm:^7.43.9": - version: 7.43.9 - resolution: "react-hook-form@npm:7.43.9" - peerDependencies: - react: ^16.8.0 || ^17 || ^18 - checksum: 65b94de625f2b7921c4e856bf0abbe142bfe06c052217bd1bcc3a842e2cc37fa3a3e03758119dc038bbcf5edb49e02c29206528b80b201f9a4d601471ef78153 - languageName: node - linkType: hard - -"react-hook-form@npm:^7.53.2": +"react-hook-form@npm:^7.53.0, react-hook-form@npm:^7.53.2": version: 7.53.2 resolution: "react-hook-form@npm:7.53.2" peerDependencies: @@ -10198,13 +9810,6 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^17.0.2": - version: 17.0.2 - resolution: "react-is@npm:17.0.2" - checksum: 9d6d111d8990dc98bc5402c1266a808b0459b5d54830bbea24c12d908b536df7883f268a7868cfaedde3dd9d4e0d574db456f84d2e6df9c4526f99bb4b5344d8 - languageName: node - linkType: hard - "react-is@npm:^18.0.0, react-is@npm:^18.2.0": version: 18.2.0 resolution: "react-is@npm:18.2.0" @@ -10240,60 +9845,27 @@ __metadata: languageName: node linkType: hard -"react-query@npm:^3.32.1": - version: 3.39.3 - resolution: "react-query@npm:3.39.3" - dependencies: - "@babel/runtime": ^7.5.5 - broadcast-channel: ^3.4.1 - match-sorter: ^6.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - checksum: d2de6a0992dbf039ff2de564de1ae6361f8ac7310159dae42ec16f833b79c05caedced187235c42373ac331cc5f2fe9e2b31b14ae75a815e86d86e30ca9887ad - languageName: node - linkType: hard - -"react-router-dom@npm:^6.1.0": - version: 6.11.1 - resolution: "react-router-dom@npm:6.11.1" +"react-router-dom@npm:^6.22.0": + version: 6.28.0 + resolution: "react-router-dom@npm:6.28.0" dependencies: - "@remix-run/router": 1.6.1 - react-router: 6.11.1 + "@remix-run/router": 1.21.0 + react-router: 6.28.0 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 44566e10cb1ff475c73be47425dba66e8e834e695e80c572c63ca82543ad03d41f4a1d8e974bf998143150f497792f74ba99714b1219df1c923c62a3b67f187b + checksum: 0cf4658a92bc66f50ec9d8518c36aa5a402bcadce71fb624ed6f900d73a29ea87ff904a4f2c42279107e75e80cc08c6192563fadcc5d4e642e6d476e38e83b21 languageName: node linkType: hard -"react-router@npm:6.11.1, react-router@npm:^6.1.0": - version: 6.11.1 - resolution: "react-router@npm:6.11.1" +"react-router@npm:6.28.0, react-router@npm:^6.22.0": + version: 6.28.0 + resolution: "react-router@npm:6.28.0" dependencies: - "@remix-run/router": 1.6.1 + "@remix-run/router": 1.21.0 peerDependencies: react: ">=16.8" - checksum: c5cafbaac13564d0e325f84ce6e4cbc42de5c381b0f619209f3b101d2b6eae4a8f9ee87b492875e869909dd9bb549d05d2f677085708f79622b872bd45d14bbb - languageName: node - linkType: hard - -"react-transition-group@npm:^4.4.1": - version: 4.4.1 - resolution: "react-transition-group@npm:4.4.1" - dependencies: - "@babel/runtime": ^7.5.5 - dom-helpers: ^5.0.1 - loose-envify: ^1.4.0 - prop-types: ^15.6.2 - peerDependencies: - react: ">=16.6.0" - react-dom: ">=16.6.0" - checksum: 0bcd8af483709832e318dcef84c26ebddeb866bf4f58010286367ef0c1e7c5106e00cfc65688b9102414cb3d572c63909c2eb7ea972b4420fc70a78c10b6e8ad + checksum: 23246ca957b5c2bc8d6f9a81fee2df2ce4fc3feca3ec27c2fd85999568fc1299a4e8273e4ab70b6f3acd43a1fb45e0c93cb01ef77e68c9f9e1f7e4f42a1419ea languageName: node linkType: hard @@ -10612,13 +10184,6 @@ __metadata: languageName: node linkType: hard -"remove-accents@npm:0.4.2": - version: 0.4.2 - resolution: "remove-accents@npm:0.4.2" - checksum: 84a6988555dea24115e2d1954db99509588d43fe55a1590f0b5894802776f7b488b3151c37ceb9e4f4b646f26b80b7325dcea2fae58bc3865df146e1fa606711 - languageName: node - linkType: hard - "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" @@ -10824,7 +10389,7 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:3.0.2, rimraf@npm:^3.0.2": +"rimraf@npm:^3.0.2": version: 3.0.2 resolution: "rimraf@npm:3.0.2" dependencies: @@ -11575,13 +11140,6 @@ __metadata: languageName: node linkType: hard -"stylis@npm:4.1.4": - version: 4.1.4 - resolution: "stylis@npm:4.1.4" - checksum: cd929bd89709def13b47e6c16b11317bf996a09b4e987fc45a235549c3adf49d41531e017d7df511daa095bc9468c923ae9094a934fe9c62440b7351874dafb7 - languageName: node - linkType: hard - "stylis@npm:4.2.0": version: 4.2.0 resolution: "stylis@npm:4.2.0" @@ -12061,16 +11619,6 @@ __metadata: languageName: node linkType: hard -"unload@npm:2.2.0": - version: 2.2.0 - resolution: "unload@npm:2.2.0" - dependencies: - "@babel/runtime": ^7.6.2 - detect-node: ^2.0.4 - checksum: 88ba950c5ff83ab4f9bbd8f63bbf19ba09687ed3c434efd43b7338cc595bc574df8f9b155ee6eee7a435de3d3a4a226726988428977a68ba4907045f1fac5d41 - languageName: node - linkType: hard - "unstated-next@npm:^1.1.0": version: 1.1.0 resolution: "unstated-next@npm:1.1.0" @@ -12255,7 +11803,7 @@ __metadata: next: 15.0.3 prettier: ^3.3.3 react: 19.0.0-rc-66855b96-20241106 - react-admin: ^4.16.20 + react-admin: ^5.4.0 react-cookie: ^4.1.1 react-dom: 19.0.0-rc-66855b96-20241106 react-dropzone: ^14.3.5