diff --git a/i18n/en.pot b/i18n/en.pot index f77f727..f3cc6aa 100644 --- a/i18n/en.pot +++ b/i18n/en.pot @@ -5,15 +5,90 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -"POT-Creation-Date: 2024-11-30T16:31:03.946Z\n" -"PO-Revision-Date: 2024-11-30T16:31:03.947Z\n" +"POT-Creation-Date: 2024-12-05T03:27:06.316Z\n" +"PO-Revision-Date: 2024-12-05T03:27:06.317Z\n" -msgid "ERROR" -msgstr "ERROR" +msgid "View keys" +msgstr "View keys" + +msgid "Click a namespace to view its keys" +msgstr "Click a namespace to view its keys" + +msgid "Add New Key" +msgstr "Add New Key" + +msgid "Add New Namespace" +msgstr "Add New Namespace" + +msgid "Namespace" +msgstr "Namespace" + +msgid "Key" +msgstr "Key" + +msgid "Cancel" +msgstr "Cancel" + +msgid "Add Key" +msgstr "Add Key" + +msgid "Add Namespace" +msgstr "Add Namespace" + +msgid "Key created successfully" +msgstr "Key created successfully" + +msgid "There was an error creating the key" +msgstr "There was an error creating the key" + +msgid "Add new namespace" +msgstr "Add new namespace" + +msgid "New namespace" +msgstr "New namespace" + +msgid "Add new key" +msgstr "Add new key" + +msgid "New key" +msgstr "New key" + +msgid "Delete" +msgstr "Delete" + +msgid "Failed to fetch key values!" +msgstr "Failed to fetch key values!" + +msgid "Key successfully updated" +msgstr "Key successfully updated" + +msgid "There was an error updating the key" +msgstr "There was an error updating the key" + +msgid "Loading" +msgstr "Loading" + +msgid "Save changes" +msgstr "Save changes" + +msgid "Key deleted successfully" +msgstr "Key deleted successfully" + +msgid "There was an error deleting the key" +msgstr "There was an error deleting the key" + +msgid "There was an error while deleting the key" +msgstr "There was an error while deleting the key" + +msgid "Error fetching namespaces" +msgstr "Error fetching namespaces" msgid "Namespaces" msgstr "Namespaces" +msgid "This will delete all the keys in this namespace" +msgstr "This will delete all the keys in this namespace" + msgid "DataStore" msgstr "DataStore" @@ -23,5 +98,11 @@ msgstr "User DataStore" msgid "Search" msgstr "Search" -msgid "Namespace" -msgstr "Namespace" +msgid "An error has occurred" +msgstr "An error has occurred" + +msgid "Back" +msgstr "Back" + +msgid "Back to DataStore" +msgstr "Back to DataStore" diff --git a/package.json b/package.json index 5348395..3b66491 100644 --- a/package.json +++ b/package.json @@ -24,8 +24,9 @@ "typescript": "^5" }, "dependencies": { + "@codemirror/lang-json": "^6.0.1", "@dhis2/app-runtime": "^3.11.3", - "@dhis2/ui": "^10.1.0", + "@uiw/react-codemirror": "^4.23.6", "prop-types": "^15.8.1" } } diff --git a/src/App.module.css b/src/App.module.css index e219a95..97f1344 100644 --- a/src/App.module.css +++ b/src/App.module.css @@ -6,6 +6,15 @@ font-size: 1rem; } +.top { + margin-top: 0.5em; +} + +.bottom { + margin-bottom: 0.5em; +} + +/* sidebar */ .sidebar { width: 20%; margin: 0.1em; @@ -16,35 +25,47 @@ width: 20%; } -.sidebarList { - margin-top: 1em; +.sidebarList h4 { + padding: 0; + margin: 0.5em; } .sidebarList ul { - list-style-type: 'none'; margin: 0; padding: 0; } -.top { - margin-top: 0.5em; +.select { + height: 70px; + padding: 0; + margin: 0; } -.bottom { - margin-bottom: 0.5em; -} +/* main area */ .main { width: 80%; margin: 0.1em; } +/* --- keys */ + .keysTable { margin-top: 10px; padding: 0.2em; } +/* nav link */ + /* sourced and adapted from https://github.com/dhis2/design-specs/blob/b65e6518dcc7c16733379cd80688e67a422fc742/src/components/sidenav.css#L73 (-> 104) */ +.navLink { + display: grid; + grid-template-columns: 2.5fr 0.5fr; +} + +.navLink button { + border: 0; +} .navLink a { display: block; @@ -77,3 +98,16 @@ .navLink.active:hover { background: var(--colors-grey300); } + +/* Toolbar */ +.toolbar { + margin-top: 5px; + height: 70px; + display: flex; + flex-direction: row; +} + +.toolbar button { + align-self: center; + margin: 0 0 0 15px; +} diff --git a/src/App.test.tsx b/src/App.test.tsx deleted file mode 100644 index e1dbed0..0000000 --- a/src/App.test.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { CustomDataProvider } from '@dhis2/app-runtime' -import React from 'react' -import { createRoot } from 'react-dom/client' -import App from './App' - -it('renders without crashing', () => { - const container = document.createElement('div') - - const data = { - resource: 'test', - } - - const root = createRoot(container) - root.render( - - - - ) - - root.unmount() -}) diff --git a/src/App.tsx b/src/App.tsx index bdfee63..aa18058 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,7 +1,7 @@ import React, { FC } from 'react' import { RouterProvider } from 'react-router-dom' -import AppWrapper from './components/AppWrapper' -import { router } from './routes/Router' +import AppWrapper from './components/appWrapper' +import { router } from './routes/router' const App: FC = () => { return ( diff --git a/src/components/EmptyArea.tsx b/src/components/EmptyArea.tsx index 3406a18..aaf7687 100644 --- a/src/components/EmptyArea.tsx +++ b/src/components/EmptyArea.tsx @@ -1,19 +1,17 @@ -import { Center } from '@dhis2/ui' +import { Center, NoticeBox } from '@dhis2/ui' import React from 'react' import { useParams } from 'react-router-dom' +import i18n from '../locales' const EmptyArea = () => { const { store, namespace } = useParams() return ( <> - {!store && ( -
-

Select a datastore to show namespaces

-
- )} {store && !namespace && (
-

Click a namespace to show keys

+ + {i18n.t('Click a namespace to view its keys')} +
)} diff --git a/src/components/Error.tsx b/src/components/Error.tsx new file mode 100644 index 0000000..4f6883e --- /dev/null +++ b/src/components/Error.tsx @@ -0,0 +1,74 @@ +import { Card, Center, NoticeBox } from '@dhis2/ui' +import React from 'react' +import { Link, isRouteErrorResponse, useRouteError } from 'react-router-dom' +import i18n from '../locales' + +interface Error { + status?: number + statusText?: string + internal?: boolean + data?: string + message?: string +} + +type PassedErrorProps = { + err?: { + httpStatus?: string + httpStatusCode?: number + status?: string + message?: string + errorCode?: string + } +} + +export default function Error({ err }: PassedErrorProps) { + const error: Error = useRouteError() + + return ( +
+ +
+ + {isRouteErrorResponse(error) ? ( + <> +

+ + {error.status} {error.statusText}{' '} + + - {error.data} +

+ Back to datastore + + ) : ( +

+ + {error.status} {error.statusText}{' '} + + {error?.message && ( + - {error.message} + )} +

+ )} + {err && ( +

+ + {err.httpStatusCode} {err.httpStatus}{' '} + + {err?.message && - {err.message}} +

+ )} +
+
+
+
+ ) +} diff --git a/src/components/create/CreateModal.tsx b/src/components/create/CreateModal.tsx new file mode 100644 index 0000000..dc12481 --- /dev/null +++ b/src/components/create/CreateModal.tsx @@ -0,0 +1,80 @@ +import { + Modal, + ModalTitle, + ModalContent, + ModalActions, + Button, + ButtonStrip, + InputField, +} from '@dhis2/ui' +import PropTypes from 'prop-types' +import React from 'react' +import i18n from '../../locales' + +const CreateModal = ({ + addNewKey, + addNewNamespace, + createFn, + values, + setValues, + closeModal, +}) => { + return ( + + + {addNewKey && i18n.t('Add New Key')} + {addNewNamespace && i18n.t('Add New Namespace')} + + + {addNewNamespace && ( + { + setValues({ + ...values, + ['namespace']: value, + }) + }} + /> + )} + { + setValues({ + ...values, + ['key']: value, + }) + }} + /> + + + + + + + + + ) +} + +CreateModal.propTypes = { + addNewKey: PropTypes.bool, + addNewNamespace: PropTypes.bool, + closeModal: PropTypes.func, + createFn: PropTypes.func, + setValues: PropTypes.func, + values: PropTypes.object, +} + +export default CreateModal diff --git a/src/components/create/Toolbar.tsx b/src/components/create/Toolbar.tsx new file mode 100644 index 0000000..172b5f6 --- /dev/null +++ b/src/components/create/Toolbar.tsx @@ -0,0 +1,112 @@ +import { useDataEngine } from '@dhis2/app-service-data' +import { Button, Divider } from '@dhis2/ui' +import React, { useState } from 'react' +import { useNavigate, useParams } from 'react-router-dom' +import classes from '../../App.module.css' +import useCustomAlert from '../../hooks/useCustomAlert' +import i18n from '../../locales' +import CreateModal from './CreateModal' + +const Toolbar = () => { + const { store, namespace } = useParams() + const engine = useDataEngine() + const navigate = useNavigate() + + const [addNewNamespace, setAddNewNamespace] = useState(false) + const [addNewKey, setAddNewKey] = useState(false) + const [values, setValues] = useState({}) + + const { showSuccess, showError } = useCustomAlert() + + const handleAddNamespaceOrKey = async (values: { + namespace?: string + key?: unknown + }) => { + let resource = '' + if (addNewNamespace) { + resource = `${store}/${values?.namespace}/${values?.key}` + } else if (addNewKey) { + resource = `${store}/${namespace}/${values?.key}` + } + + await engine.mutate( + { + type: 'create', + resource, + data: () => ({}), + }, + { + onComplete: () => { + let url = '' + if (addNewNamespace) { + url = `${store}/edit/${values?.namespace}/${values?.key}` + } else if (addNewKey) { + url = `${store}/edit/${namespace}/${values?.key}` + } + const message = i18n.t('Key created successfully') + showSuccess(message) + navigate(url) + setValues({}) + }, + onError: () => { + const message = i18n.t( + 'There was an error creating the key' + ) + showError(message) + }, + } + ) + closeModal() + } + + const closeModal = () => { + setAddNewKey(false) + setAddNewNamespace(false) + } + + return ( + <> + {store && ( + <> +
+ + {namespace && ( + + )} +
+ + + )} + {(addNewKey || addNewNamespace) && ( + + )} + + ) +} + +export default Toolbar diff --git a/src/components/delete/DeleteButton.tsx b/src/components/delete/DeleteButton.tsx new file mode 100644 index 0000000..a2fe5e6 --- /dev/null +++ b/src/components/delete/DeleteButton.tsx @@ -0,0 +1,21 @@ +import { Button } from '@dhis2-ui/button' +import PropTypes from 'prop-types' +import React from 'react' +import i18n from '../../locales' + +export default function DeleteButton({ openModal }) { + return ( + + ) +} + +DeleteButton.propTypes = { + openModal: PropTypes.func, +} diff --git a/src/components/delete/DeleteModal.tsx b/src/components/delete/DeleteModal.tsx new file mode 100644 index 0000000..14ef64c --- /dev/null +++ b/src/components/delete/DeleteModal.tsx @@ -0,0 +1,36 @@ +import { + Modal, + ModalContent, + ModalActions, + Button, + ButtonStrip, +} from '@dhis2/ui' +import PropTypes from 'prop-types' +import React from 'react' +import i18n from '../../locales' + +const DeleteModal = ({ children, deleteFn, closeModal }) => { + return ( + + {children} + + + + + + + + ) +} + +DeleteModal.propTypes = { + children: PropTypes.node, + closeModal: PropTypes.func, + deleteFn: PropTypes.func, +} + +export default DeleteModal diff --git a/src/components/edit/Edit.tsx b/src/components/edit/Edit.tsx new file mode 100644 index 0000000..3591c9c --- /dev/null +++ b/src/components/edit/Edit.tsx @@ -0,0 +1,120 @@ +import { useDataMutation, useDataQuery } from '@dhis2/app-runtime' +import { Button } from '@dhis2-ui/button' +import React, { useEffect, useState } from 'react' +import { useParams } from 'react-router-dom' +import useCustomAlert from '../../hooks/useCustomAlert' +import i18n from '../../locales' +import Error from '../Error' +import Editor from './Editor' + +const modifyKeyMutation = ({ store }) => ({ + type: 'update' as const, + resource: `${store}`, + id: ({ key, namespace }: { key: string; namespace: string }) => + `${namespace}/${key}`, + data: ({ value }) => JSON.parse(value), +}) + +const keyValuesQuery = ({ store }: { store: string }) => ({ + results: { + resource: `${store}`, + id: ({ key, namespace }: { key: string; namespace: string }) => + `${namespace}/${key}`, + }, +}) + +const Edit = () => { + const { key, namespace, store } = useParams() + const { showSuccess, showError } = useCustomAlert() + + const { + data, + loading: queryLoading, + error, + refetch, + } = useDataQuery(keyValuesQuery({ store }), { + variables: { + key, + namespace, + }, + }) + + const [value, setValue] = useState( + JSON.stringify(data?.results, null, 4) || '' + ) + + const [updateKey, { loading }] = useDataMutation( + // @ts-expect-error("") + modifyKeyMutation({ store }), + { + onComplete: () => { + const message = i18n.t('Key successfully updated') + showSuccess(message) + }, + onError: () => { + const message = i18n.t('There was an error updating the key') + showError(message) + }, + } + ) + + const handleEditorChange = (value) => { + setValue(value) + } + + useEffect(() => { + setValue(JSON.stringify(data?.results, null, 4)) + }, [data]) + + useEffect(() => { + refetch({ key, namespace }) + }, [key, namespace, store, refetch]) + + if (error) { + // throw new Response(error.message, { + // status: error.details.httpStatusCode, + // statusText: error.details.httpStatus, + // }) + return + } + + const loadingText = i18n.t('Loading') + + return ( +
+ +
+ +
+
+ ) +} + +export default Edit diff --git a/src/components/edit/Editor.tsx b/src/components/edit/Editor.tsx new file mode 100644 index 0000000..fa6ea01 --- /dev/null +++ b/src/components/edit/Editor.tsx @@ -0,0 +1,22 @@ +import { json } from '@codemirror/lang-json' +import CodeMirror from '@uiw/react-codemirror' +import PropTypes from 'prop-types' +import React from 'react' + +const Editor = ({ value, handleChange }) => { + return ( + + ) +} + +Editor.propTypes = { + handleChange: PropTypes.func, + value: PropTypes.string, +} + +export default Editor diff --git a/src/components/keys/Keys.tsx b/src/components/keys/Keys.tsx new file mode 100644 index 0000000..b44519b --- /dev/null +++ b/src/components/keys/Keys.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import KeysTable from './keysTable' + +export default function Keys() { + return ( +
+ +
+ ) +} diff --git a/src/components/keys/keysTable.tsx b/src/components/keys/keysTable.tsx index 0f6266d..17b8b81 100644 --- a/src/components/keys/keysTable.tsx +++ b/src/components/keys/keysTable.tsx @@ -1,4 +1,4 @@ -import { useDataQuery } from '@dhis2/app-runtime' +import { useDataEngine, useDataQuery } from '@dhis2/app-runtime' import { DataTable, DataTableCell, @@ -7,69 +7,161 @@ import { TableBody, TableHead, } from '@dhis2/ui' -import React, { useEffect } from 'react' -import { useParams } from 'react-router-dom' +import React, { useEffect, useState } from 'react' +import { useNavigate, useParams } from 'react-router-dom' import classes from '../../App.module.css' +import useCustomAlert from '../../hooks/useCustomAlert' +import i18n from '../../locales' +import DeleteButton from '../delete/DeleteButton' +import DeleteModal from '../delete/DeleteModal' +import Error from '../Error' import CenteredLoader from '../Loader' interface QueryResults { results: [] } -const useNameSpaceQuery = ({ store, namespace }) => { - return useDataQuery( - { - results: { - resource: `${store}`, - id: ({ id }) => id, - }, - }, +const fetchNamespaceQuery = ({ store }) => ({ + results: { + resource: `${store}`, + id: ({ id }) => id, + }, +}) + +const KeysTable = () => { + const { store, namespace } = useParams() + const navigate = useNavigate() + const engine = useDataEngine() + const { showError, showSuccess } = useCustomAlert() + + const { data, loading, refetch, error } = useDataQuery( + fetchNamespaceQuery({ store }), { variables: { id: namespace, }, } ) -} -const KeysTable = () => { - const { store, namespace } = useParams() - const { data, loading, refetch } = useNameSpaceQuery({ store, namespace }) + const [deleteNamespace, setDeleteNamespace] = useState(false) + const [selectedKey, setSelectedKey] = useState('') + const [openModal, setOpenModal] = useState(false) useEffect(() => { refetch({ id: namespace }) }, [namespace]) + const handleDeleteAction = async (key) => { + await engine.mutate( + { + type: 'delete', + resource: `${store}/${namespace}`, + id: key, + }, + { + onComplete: () => { + const message = i18n.t('Key deleted successfully') + showSuccess(message) + }, + onError: (error) => { + const message = i18n.t( + 'There was an error deleting the key', + { + error: error.message, + } + ) + showError(message) + }, + } + ) + setOpenModal(false) + + if (deleteNamespace) { + navigate(`/${store}`) + } else { + refetch({ id: namespace }) + } + } + if (loading) { return } + if (error) { + // throw new Response(error.message, { + // status: error.details.httpStatusCode, + // statusText: error.details.httpStatus, + // }) + return + } + return (
- - - - Keys - Actions - - - - {data?.results?.length && ( - <> - {data.results.map((key, index) => ( - - - {key} - - - Edit, Delete - - - ))} - + {data && ( + + + + Keys + + Actions + + + + + {data?.results?.length && ( + <> + {data.results.map((key, index) => { + const handleClick = () => { + const url = `/${store}/edit/${namespace}/${key}` + navigate(url) + } + return ( + + + {key} + + + { + setOpenModal(true) + setDeleteNamespace( + data?.results + ?.length < 2 + ) + setSelectedKey(key) + }} + /> + + + ) + })} + + )} + + + )} + {openModal && ( + handleDeleteAction(selectedKey)} + closeModal={() => setOpenModal(false)} + > +

+ {i18n.t( + `Are you sure you want to delete '${selectedKey}' in ${namespace}?` + )} +

+ {deleteNamespace && ( +

+ {i18n.t( + `This will also delete the namespace '${namespace}'` + )} +

)} -
-
+ + )}
) } diff --git a/src/components/namespaces/DataStoreLinks.tsx b/src/components/namespaces/DataStoreLinks.tsx deleted file mode 100644 index e84b448..0000000 --- a/src/components/namespaces/DataStoreLinks.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { useDataQuery } from '@dhis2/app-runtime' -import PropTypes from 'prop-types' -import React from 'react' -import LinksList from './LinksList' - -interface QueryResults { - results: [] -} - -const dataStoreQuery = { - results: { - resource: 'dataStore', - }, -} - -function DataStoreLinks({ store }) { - const { error, loading, data } = useDataQuery(dataStoreQuery) - - return ( - - ) -} - -DataStoreLinks.propTypes = { - store: PropTypes.string, -} - -export default DataStoreLinks diff --git a/src/components/namespaces/LinksList.tsx b/src/components/namespaces/LinksList.tsx index ec055e4..c866f20 100644 --- a/src/components/namespaces/LinksList.tsx +++ b/src/components/namespaces/LinksList.tsx @@ -1,14 +1,60 @@ +import { useDataEngine } from '@dhis2/app-service-data' import PropTypes from 'prop-types' -import React from 'react' +import React, { useEffect, useState } from 'react' +import { useNavigate, useParams } from 'react-router-dom' import classes from '../../App.module.css' +import useCustomAlert from '../../hooks/useCustomAlert' import i18n from '../../locales' +import DeleteModal from '../delete/DeleteModal' import CenteredLoader from '../Loader' import SidebarNavLink from '../sidebar/SidebarNavLink' -function LinksList({ data, error, loading, store }) { +function LinksList({ data, error, loading, refetchList }) { + const { store, namespace, key } = useParams() + const [openModal, setOpenModal] = useState(false) + const [selectedNamespace, setSelectedNamespace] = useState('') + const engine = useDataEngine() + const navigate = useNavigate() + const { showError, showSuccess } = useCustomAlert() + + const handleDeleteAction = async (selectedNamespace) => { + await engine.mutate( + { + type: 'delete', + resource: `${store}/${selectedNamespace}`, + id: key, + }, + { + onComplete: () => { + const message = i18n.t('Key deleted successfully', { + key, + }) + showSuccess(message) + }, + onError: (error) => { + const message = i18n.t( + 'There was an error while deleting the key', + { + error: error.message, + } + ) + showError(message) + }, + } + ) + + setOpenModal(false) + refetchList() + navigate(`${store}`) + } + + useEffect(() => { + refetchList() + }, [store, namespace, key]) + return (
- {error && {i18n.t('ERROR')}} + {error && {i18n.t('Error fetching namespaces')}} {loading && } {data && ( <> @@ -18,14 +64,35 @@ function LinksList({ data, error, loading, store }) { return ( { + setOpenModal(true) + setSelectedNamespace(namespace) + }} /> ) })} )} + {openModal && ( + handleDeleteAction(selectedNamespace)} + closeModal={() => setOpenModal(false)} + > +

+ {i18n.t( + `Are you sure you want to delete '${namespace}'?` + )} +

+

+ {i18n.t( + `This will delete all the keys in this namespace` + )} +

+
+ )}
) } @@ -34,7 +101,7 @@ LinksList.propTypes = { data: PropTypes.object, error: PropTypes.any, loading: PropTypes.any, - store: PropTypes.string, + refetchList: PropTypes.func, } export default LinksList diff --git a/src/components/namespaces/NamespacesLinks.tsx b/src/components/namespaces/NamespacesLinks.tsx deleted file mode 100644 index a8aed92..0000000 --- a/src/components/namespaces/NamespacesLinks.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react' -import { useParams } from 'react-router-dom' -import DataStoreLinks from './DataStoreLinks' -import UserDataStoreLinks from './UserDataStoreLinks' - -const NameSpaceLinks = () => { - const { store } = useParams() - - if (store === 'userDataStore') { - return - } - - if (store === 'dataStore') { - return - } -} - -export default NameSpaceLinks diff --git a/src/components/namespaces/UserDataStoreLinks.tsx b/src/components/namespaces/UserDataStoreLinks.tsx deleted file mode 100644 index c6b0fdd..0000000 --- a/src/components/namespaces/UserDataStoreLinks.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { useDataQuery } from '@dhis2/app-runtime' -import PropTypes from 'prop-types' -import React from 'react' -import LinksList from './LinksList' - -interface QueryResults { - results: [] -} - -const userDataStoreQuery = { - results: { - resource: 'userDataStore', - }, -} - -function UserDataStoreLinks({ store }) { - const { error, loading, data } = - useDataQuery(userDataStoreQuery) - - return ( - - ) -} - -UserDataStoreLinks.propTypes = { - store: PropTypes.string, -} - -export default UserDataStoreLinks diff --git a/src/components/sidebar/DataStoreSelect.tsx b/src/components/sidebar/DataStoreSelect.tsx index 5fa46da..62fd8e4 100644 --- a/src/components/sidebar/DataStoreSelect.tsx +++ b/src/components/sidebar/DataStoreSelect.tsx @@ -1,12 +1,11 @@ import { SingleSelectField, SingleSelectOption } from '@dhis2/ui' import PropTypes from 'prop-types' import React from 'react' -import classes from '../../App.module.css' import i18n from '../../locales' const DataStoreSelect = ({ option, handleChange }) => { return ( -
+
{ +const SidebarNavLink = ({ to, label, handleDeleteModal }) => { return (
  • { > {label} +
  • ) } SidebarNavLink.propTypes = { + handleDeleteModal: PropTypes.func, label: PropTypes.string, to: PropTypes.string, } diff --git a/src/components/sidebar/sidebar.tsx b/src/components/sidebar/sidebar.tsx index 568ac7a..106830a 100644 --- a/src/components/sidebar/sidebar.tsx +++ b/src/components/sidebar/sidebar.tsx @@ -1,15 +1,55 @@ +import { useDataQuery } from '@dhis2/app-service-data' import { Card, Divider } from '@dhis2/ui' -import React, { useState } from 'react' +import React, { useEffect, useState } from 'react' import { useNavigate, useParams } from 'react-router-dom' import classes from '../../App.module.css' -import NameSpaceLinks from '../namespaces/NamespacesLinks' +import LinksList from '../namespaces/LinksList' import DataStoreSelect from './DataStoreSelect' -import SearchField from './SearchField' +// import SearchField from './SearchField' + +interface QueryResults { + results: [] +} + +const userDataStoreQuery = { + results: { + resource: 'userDataStore', + }, +} + +const dataStoreQuery = { + results: { + resource: 'dataStore', + }, +} const Sidebar = () => { const navigate = useNavigate() const { store } = useParams() - const [option, setOption] = useState(store) + const [option, setOption] = useState(store || '') + + const { + error: dataStoreQueryError, + loading: dataStoreQueryLoading, + data: dataStoreQueryData, + refetch: refetchDataStore, + } = useDataQuery(dataStoreQuery) + + const { + error: userDataStoreQueryError, + loading: userDataStoreQueryLoading, + data: userDataStoreQueryData, + refetch: refetchUserDataStore, + } = useDataQuery(userDataStoreQuery) + + useEffect(() => { + const storeOptions = ['dataStore', 'userDataStore'] + if (!storeOptions.includes(store)) { + navigate('/dataStore') + } else { + setOption(store) + } + }, [store]) const handleDataStoreSelect = ({ selected }) => { setOption(selected) @@ -17,15 +57,32 @@ const Sidebar = () => { } return ( - +
    + +
    {store && ( <> - - + {/* */} + {store === 'userDataStore' && ( + + )} + {store === 'dataStore' && ( + + )} )}
    diff --git a/src/hooks/useCustomAlert.tsx b/src/hooks/useCustomAlert.tsx new file mode 100644 index 0000000..56b3c9d --- /dev/null +++ b/src/hooks/useCustomAlert.tsx @@ -0,0 +1,14 @@ +import { useAlert } from '@dhis2/app-service-alerts' + +const useCustomAlert = () => { + const { show } = useAlert( + ({ message }) => message, + ({ isError }) => (isError ? { critical: true } : { success: true }) + ) + return { + showSuccess: (message) => show({ message }), + showError: (message) => show({ message, isError: true }), + } +} + +export default useCustomAlert diff --git a/src/pages/errorPage.tsx b/src/pages/errorPage.tsx deleted file mode 100644 index 62f4064..0000000 --- a/src/pages/errorPage.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { Center } from '@dhis2/ui' -import React from 'react' -import { useRouteError } from 'react-router-dom' - -interface Error { - status?: number - statusText?: string - internal?: boolean - data?: string - message?: string -} - -export default function ErrorPage() { - const error: Error = useRouteError() - - return ( -
    -
    -

    Oops!

    -

    Sorry, an unexpected error has occurred

    -

    - {error.statusText || error.message} -

    -
    -
    - ) -} diff --git a/src/routes/layout.tsx b/src/routes/layout.tsx index 55e10c1..d3bb30b 100644 --- a/src/routes/layout.tsx +++ b/src/routes/layout.tsx @@ -1,22 +1,23 @@ import { Card } from '@dhis2/ui' import React from 'react' -import { Outlet } from 'react-router-dom' +import { Outlet, useParams } from 'react-router-dom' import classes from '../App.module.css' -import EmptyArea from '../components/EmptyArea' -import Sidebar from '../components/sidebar/Sidebar' +import Toolbar from '../components/create/Toolbar' +import Sidebar from '../components/sidebar/sidebar' function Layout() { + const { store } = useParams() return (
    - -
    + +
    - + {store && } -
    +
    ) } diff --git a/src/routes/router.tsx b/src/routes/router.tsx index 8d198f5..7bde020 100644 --- a/src/routes/router.tsx +++ b/src/routes/router.tsx @@ -1,21 +1,37 @@ import React from 'react' -import { createHashRouter } from 'react-router-dom' -import KeysTable from '../components/keys/KeysTable' -import ErrorPage from '../pages/ErrorPage' -import Layout from './Layout' +import { Navigate, createHashRouter } from 'react-router-dom' +import Edit from '../components/edit/Edit' +import EmptyArea from '../components/EmptyArea' +import Error from '../components/Error' +import Keys from '../components/keys/Keys' +import Layout from './layout' export const router = createHashRouter([ { path: '/', - errorElement: , + errorElement: , element: , children: [ + { index: true, element: }, { path: ':store', children: [ { - path: ':namespace', - element: , + errorElement: , + children: [ + { + index: true, + element: , + }, + { + path: 'edit/:namespace', + element: , + }, + { + path: 'edit/:namespace/:key', + element: , + }, + ], }, ], }, diff --git a/yarn.lock b/yarn.lock index eacee6e..cdfd14e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1012,7 +1012,7 @@ "@babel/plugin-transform-modules-commonjs" "^7.25.9" "@babel/plugin-transform-typescript" "^7.25.9" -"@babel/runtime@^7.10.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.8", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.10.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.6", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.8", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== @@ -1062,6 +1062,88 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@codemirror/autocomplete@^6.0.0": + version "6.18.3" + resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.18.3.tgz#f9ea79a2f369662516f71bc0b2f819454d3c8e00" + integrity sha512-1dNIOmiM0z4BIBwxmxEfA1yoxh1MF/6KPBbh20a5vphGV0ictKlgQsbJs6D6SkR6iJpGbpwRsa6PFMNlg9T9pQ== + dependencies: + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.17.0" + "@lezer/common" "^1.0.0" + +"@codemirror/commands@^6.0.0", "@codemirror/commands@^6.1.0": + version "6.7.1" + resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.7.1.tgz#04561e95bc0779eaa49efd63e916c4efb3bbf6d6" + integrity sha512-llTrboQYw5H4THfhN4U3qCnSZ1SOJ60ohhz+SzU0ADGtwlc533DtklQP0vSFaQuCPDn3BPpOd1GbbnUtwNjsrw== + dependencies: + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.4.0" + "@codemirror/view" "^6.27.0" + "@lezer/common" "^1.1.0" + +"@codemirror/lang-json@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@codemirror/lang-json/-/lang-json-6.0.1.tgz#0a0be701a5619c4b0f8991f9b5e95fe33f462330" + integrity sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ== + dependencies: + "@codemirror/language" "^6.0.0" + "@lezer/json" "^1.0.0" + +"@codemirror/language@^6.0.0": + version "6.10.6" + resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.10.6.tgz#3770aa55fce575b45b1037b390b576907f0061c7" + integrity sha512-KrsbdCnxEztLVbB5PycWXFxas4EOyk/fPAfruSOnDDppevQgid2XZ+KbJ9u+fDikP/e7MW7HPBTvTb8JlZK9vA== + dependencies: + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.23.0" + "@lezer/common" "^1.1.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + style-mod "^4.0.0" + +"@codemirror/lint@^6.0.0": + version "6.8.4" + resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.8.4.tgz#7d8aa5d1a6dec89ffcc23ad45ddca2e12e90982d" + integrity sha512-u4q7PnZlJUojeRe8FJa/njJcMctISGgPQ4PnWsd9268R4ZTtU+tfFYmwkBvgcrK2+QQ8tYFVALVb5fVJykKc5A== + dependencies: + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.35.0" + crelt "^1.0.5" + +"@codemirror/search@^6.0.0": + version "6.5.8" + resolved "https://registry.yarnpkg.com/@codemirror/search/-/search-6.5.8.tgz#b59b3659b46184cc75d6108d7c050a4ca344c3a0" + integrity sha512-PoWtZvo7c1XFeZWmmyaOp2G0XVbOnm+fJzvghqGAktBW3cufwJUWvSCcNG0ppXiBEM05mZu6RhMtXPv2hpllig== + dependencies: + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + crelt "^1.0.5" + +"@codemirror/state@^6.0.0", "@codemirror/state@^6.1.1", "@codemirror/state@^6.4.0": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-6.4.1.tgz#da57143695c056d9a3c38705ed34136e2b68171b" + integrity sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A== + +"@codemirror/theme-one-dark@^6.0.0": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@codemirror/theme-one-dark/-/theme-one-dark-6.1.2.tgz#fcef9f9cfc17a07836cb7da17c9f6d7231064df8" + integrity sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA== + dependencies: + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + "@lezer/highlight" "^1.0.0" + +"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0", "@codemirror/view@^6.27.0", "@codemirror/view@^6.35.0": + version "6.35.0" + resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.35.0.tgz#890e8e31a58edf65cdf193049fe9f3fdec20cc82" + integrity sha512-I0tYy63q5XkaWsJ8QRv5h6ves7kvtrBWjBcnf/bzohFJQc5c14a1AQRdE8QpPF9eMp5Mq2FMm59TCj1gDfE7kw== + dependencies: + "@codemirror/state" "^6.4.0" + style-mod "^4.1.0" + w3c-keyname "^2.2.4" + "@commitlint/cli@^12.1.4": version "12.1.4" resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-12.1.4.tgz#af4d9dd3c0122c7b39a61fa1cd2abbad0422dbe0" @@ -1219,18 +1301,6 @@ resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz#7dfccb9df5499e627e7bfdbb4021a06813a45dba" integrity sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ== -"@dhis2-ui/alert@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/alert/-/alert-10.1.0.tgz#1eb193c173237f436fce7e8540fc45e097f63953" - integrity sha512-HjXPtPaD/6AY/u2DfoO6DIP0YKD5WBrkT/2eKXUlGaAmcJMaJUwkCzVPJ0qx47DICilPzNLrDc5mbbJOMgtzWQ== - dependencies: - "@dhis2-ui/portal" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - "@dhis2/ui-icons" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/alert@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/alert/-/alert-9.15.0.tgz#19b5fef58fdcce69dcf1f7f6fe6f0551e4b130cf" @@ -1243,16 +1313,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/box@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/box/-/box-10.1.0.tgz#e1873616fdcacccac684aebd0672ae7fe93b32da" - integrity sha512-xI1hBIKmBdyM+swA9fV4Nv5D7JS53ugpCscVhgeP5Cy3/nMOkkOAx1U5XzAvVm47cYm8XQ2NtW570wi/ztUhyA== - dependencies: - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/box@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/box/-/box-9.15.0.tgz#f16498fa7a261d6304879ecb615cab57979825bd" @@ -1263,20 +1323,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/button@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/button/-/button-10.1.0.tgz#4cfd5c65b595cb756ca29365023832a9e277f4f2" - integrity sha512-WQDRY7len+5kgwfUUVyPVAzjPZXEtMIub2PszrYqD2KoubwCBf7jALoZpPWRTymySmCPgzbTWbigT1vLlIgpsQ== - dependencies: - "@dhis2-ui/layer" "10.1.0" - "@dhis2-ui/loader" "10.1.0" - "@dhis2-ui/popper" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - "@dhis2/ui-icons" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/button@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/button/-/button-9.15.0.tgz#d27cb64cd935f86218862c01c9fe3bbeb3604163" @@ -1291,23 +1337,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/calendar@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/calendar/-/calendar-10.1.0.tgz#97708960331b519a9276d62022a211403e2bfa03" - integrity sha512-GtrRMvM0wmj4k5171/RSRmwDmeH6FSmBaqFP3PWGbYiV2ag6ApWQs4nl5tEYtX4mnrFwWcW9TfkYe+mohH67mw== - dependencies: - "@dhis2-ui/button" "10.1.0" - "@dhis2-ui/card" "10.1.0" - "@dhis2-ui/input" "10.1.0" - "@dhis2-ui/layer" "10.1.0" - "@dhis2-ui/popper" "10.1.0" - "@dhis2/multi-calendar-dates" "2.0.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - "@dhis2/ui-icons" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/calendar@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/calendar/-/calendar-9.15.0.tgz#7f6e42973bd96a95eee6386ec3866fff0de4009e" @@ -1325,16 +1354,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/card@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/card/-/card-10.1.0.tgz#12f9528a49ec77d5bc44fd96819d9bfb3aef258a" - integrity sha512-ryvROrbBtbfJ9bZAyfjCqi2YtIUq+Z/j/TDv54DZcYP4UN+665J8jRNWf4n1EPLaxzktxfOvR02ZW0FcZAc62g== - dependencies: - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/card@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/card/-/card-9.15.0.tgz#af7d00438d2818cae8731ae56430547619090858" @@ -1345,16 +1364,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/center@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/center/-/center-10.1.0.tgz#b65d72a5876f59bad5a3cb336fbc9f2d062e65ad" - integrity sha512-EmDTqJTbY0yOkFcJOTDi91ZcOgt0wO1ylJKMCoynwWlMsRycC3tmgO4fKfsZEsncxM+600ejc7/gUvISTeCmjw== - dependencies: - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/center@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/center/-/center-9.15.0.tgz#8c493157b9efe8b778cff796b6ffa2fd6f58289e" @@ -1365,18 +1374,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/checkbox@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/checkbox/-/checkbox-10.1.0.tgz#a09157bc2933af5cb42a48a479738a6242366dfa" - integrity sha512-+0rN1W09p9rX/NEJfx7It+9NJGhwBtrJuix993fj3vflHkJfiEw3mV2SISyZVJUHT5ryAvGyhm+greeToLeOJQ== - dependencies: - "@dhis2-ui/field" "10.1.0" - "@dhis2-ui/required" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/checkbox@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/checkbox/-/checkbox-9.15.0.tgz#bcb377be5f165b6bfc001361c246a7c6db25a364" @@ -1389,16 +1386,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/chip@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/chip/-/chip-10.1.0.tgz#645c080d6910eb93399fdcf6cd3308e765c9fb5f" - integrity sha512-g5pnTWKe1dkU6q83a5NzoF8LOxKEo2uGxZezxbu4Pe8vfyXUaNsqVrSchduk333UUeOG+yWrVYq2iU2QlBthCw== - dependencies: - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/chip@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/chip/-/chip-9.15.0.tgz#3ebb89d4cae3ae49ddfcde67d129caf6db8d08c7" @@ -1409,16 +1396,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/cover@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/cover/-/cover-10.1.0.tgz#317c6a396a1038d95bfc39f0c0dcf980534e26c1" - integrity sha512-Im+nW9kOuELdy0RXJQ6stdDm6ZNeSYH7qZJZRYvZxuilgnslygW4XjT1+YkJa2Z/lPTPvxERD671I6zWZg+ACg== - dependencies: - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/cover@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/cover/-/cover-9.15.0.tgz#dd81ab446d02b4aad43fdd7fa3a730928c7a0fba" @@ -1429,16 +1406,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/css@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/css/-/css-10.1.0.tgz#e72e128599de92e6c3778bb4508b9d05b2e4ad07" - integrity sha512-7HqNmu3PDZlsTxCbNIIuZvVAmiKQT3hXV7FjuhajWieGJ4KbS77g9W6mANe1g0zXIKi6/GQA6Z4WiNw39/dENg== - dependencies: - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/css@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/css/-/css-9.15.0.tgz#44fc993264010852d4935d2248b11e0a851c6992" @@ -1449,16 +1416,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/divider@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/divider/-/divider-10.1.0.tgz#498b71e28871abc2f148fa5fdf9cf22121078223" - integrity sha512-nh+H/J6lIesrpgDh4JgHXKetdGqkxNPqc6Bvj8n88nj7cejb42XCDeiSJNt/sTBt0PcdpguG+IybV4B3v06MrA== - dependencies: - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/divider@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/divider/-/divider-9.15.0.tgz#8191d80469ba55d1ac404d100b915f45bc56602a" @@ -1469,19 +1426,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/field@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/field/-/field-10.1.0.tgz#59c639c44349f88d3dac048d31c8403eaac20a33" - integrity sha512-Dgl/Li/qv3oIq6gGvOXTYVMYczNz8GWC5nc+TKuUgzSC4f0IgtxWWErIZi0P3knbnsBCZC1wXb0VLYdAUS8EqQ== - dependencies: - "@dhis2-ui/box" "10.1.0" - "@dhis2-ui/help" "10.1.0" - "@dhis2-ui/label" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/field@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/field/-/field-9.15.0.tgz#92f234ab41094a61d3c26e76b2944711ebd36e0b" @@ -1495,22 +1439,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/file-input@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/file-input/-/file-input-10.1.0.tgz#35e987fab248cfa2facba1b263a37de785b32d86" - integrity sha512-hM1zQRkrolMPyxIYAt6tBSyLWjdL6fbax0/30C4J5gUIm4y56NWcfooQJ2INzoMANb330gG7WatJXYuotcuszg== - dependencies: - "@dhis2-ui/button" "10.1.0" - "@dhis2-ui/field" "10.1.0" - "@dhis2-ui/label" "10.1.0" - "@dhis2-ui/loader" "10.1.0" - "@dhis2-ui/status-icon" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - "@dhis2/ui-icons" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/file-input@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/file-input/-/file-input-9.15.0.tgz#7ca98fb317b551d39d8e0e95e5df88218b91f78d" @@ -1527,30 +1455,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/header-bar@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/header-bar/-/header-bar-10.1.0.tgz#1849bb2d70144c6cd282d315f5abfdf35d8e0d87" - integrity sha512-mgcVEIJLlVixgmkVOq5C85cKblpqAmYvufSW16/0jcTf1IEcXsVOMK5h+QCXzUJQ+ERsDLoGxznKAU1dX81iTQ== - dependencies: - "@dhis2-ui/box" "10.1.0" - "@dhis2-ui/button" "10.1.0" - "@dhis2-ui/card" "10.1.0" - "@dhis2-ui/center" "10.1.0" - "@dhis2-ui/divider" "10.1.0" - "@dhis2-ui/input" "10.1.0" - "@dhis2-ui/layer" "10.1.0" - "@dhis2-ui/loader" "10.1.0" - "@dhis2-ui/logo" "10.1.0" - "@dhis2-ui/menu" "10.1.0" - "@dhis2-ui/modal" "10.1.0" - "@dhis2-ui/user-avatar" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - "@dhis2/ui-icons" "10.1.0" - classnames "^2.3.1" - moment "^2.29.1" - prop-types "^15.7.2" - "@dhis2-ui/header-bar@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/header-bar/-/header-bar-9.15.0.tgz#9d4af4385ac4433ce17c57dcaf51f803e62c8137" @@ -1575,16 +1479,6 @@ moment "^2.29.1" prop-types "^15.7.2" -"@dhis2-ui/help@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/help/-/help-10.1.0.tgz#451056013e57e3ce5e38a6fcdce67752d606adc2" - integrity sha512-TFQu5kLid4O1mX+EVxJ5DxJA9aYfC4nzaebqKPAGNpMyG8q92gvTS2t3I7FC0x+je4462yyRj/Ct2lPZs+w3Mg== - dependencies: - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/help@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/help/-/help-9.15.0.tgz#04a63e1ee3c31879bad4b46d74dac4e1dce11861" @@ -1595,22 +1489,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/input@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/input/-/input-10.1.0.tgz#94a4ce42f9cb34ceec64f8ed1a746cef284c662a" - integrity sha512-Q7TtY/nTJckA3WD9pKkRmjidzRcuDpghqiD77WOS/XWNxh8uMSZ0GU8TiNce/qgQkgdd/ToAlYrQ7jtVXxvVxg== - dependencies: - "@dhis2-ui/box" "10.1.0" - "@dhis2-ui/field" "10.1.0" - "@dhis2-ui/input" "10.1.0" - "@dhis2-ui/loader" "10.1.0" - "@dhis2-ui/status-icon" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - "@dhis2/ui-icons" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/input@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/input/-/input-9.15.0.tgz#7610f7a4a6164ddeeda0add18446a2f2dac6e26e" @@ -1627,16 +1505,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/intersection-detector@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/intersection-detector/-/intersection-detector-10.1.0.tgz#d961125835fe80f11544e591b244f9bd6eaae411" - integrity sha512-Nh9sN8eXO1fyJmasVgNaAqZfUdZhu0Y2CIvrQy3clQXtvcaczPStdqRseOzMzqzhbJsEf6SwFEXNhY3m1milUQ== - dependencies: - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/intersection-detector@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/intersection-detector/-/intersection-detector-9.15.0.tgz#43fb307a6bf44550a4e5d1cc9f7911dcb242b38c" @@ -1647,17 +1515,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/label@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/label/-/label-10.1.0.tgz#f1123cf16eb6a12f4059a686659f70f3ffbaba08" - integrity sha512-yphCtHbYH11+NFjAW4I3QQDp5/9azbWqsEkU13mhXhUl/OJleLEbj0zDFu7rwv5F7hne+vtgddSojvwaWGhwWQ== - dependencies: - "@dhis2-ui/required" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/label@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/label/-/label-9.15.0.tgz#db60d1fa7e0f288d45bcb1a90087874416512a4f" @@ -1669,17 +1526,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/layer@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/layer/-/layer-10.1.0.tgz#a439e8d35a3cfa274280b45070cb80aee2860ac4" - integrity sha512-KYHPpipPOmZaiilk2bnFYL+ZXCpQri0AD63z67UEEPByS6/GdIVaqdi5OTJDGaD6KR/bgtCuJv8Dogp2NQYkZg== - dependencies: - "@dhis2-ui/portal" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/layer@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/layer/-/layer-9.15.0.tgz#525181a352c26d0ae2a5a3c0df3e2611fd9065df" @@ -1691,17 +1537,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/legend@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/legend/-/legend-10.1.0.tgz#c43a9c5007a0fa8b6f83e7631efdf05cd0a3b1c2" - integrity sha512-mxVYIEyamOoUkSgfjeVC1RsXd1UGQhDBHhALJw7OHrJKvvXxW58OeQGvrM8Zum/QF8msUNQ4evC27ttF4FC5Tw== - dependencies: - "@dhis2-ui/required" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/legend@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/legend/-/legend-9.15.0.tgz#c71d862366aa0d51bfbf64fa79ec9277e86a4b32" @@ -1713,16 +1548,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/loader@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/loader/-/loader-10.1.0.tgz#e62d87578294700faf1457cb263188267ee57812" - integrity sha512-9RUnvUvTLhmhOuEcg1+MIFpHCyD+ufgjS6eJ8spMnxy2zfO49LKgjRASeA8SEpFXRhgA9J7G/bdDJ7F5yBTN7A== - dependencies: - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/loader@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/loader/-/loader-9.15.0.tgz#52afc749cd4fd791dcc4da179e0066b65c4eae42" @@ -1733,16 +1558,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/logo@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/logo/-/logo-10.1.0.tgz#d43bdbab159825207e04473428085ead4242964b" - integrity sha512-X1oqeSbR2mvlnzTmDzEjglRfMwqjm1TvHu+jwFknWlPoIHX39jlmTYheIxO1hlP7+psQIDVsspSzZqGWyD5+Cw== - dependencies: - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/logo@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/logo/-/logo-9.15.0.tgz#af7adf3fc15ae8bcc453bcfc9c6fdaadf8903ae0" @@ -1753,22 +1568,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/menu@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/menu/-/menu-10.1.0.tgz#575ed169faa1f9bb2217bc5d91cf249f7f559388" - integrity sha512-sBSV4usGMJnJbzBSu7cuVazT6tQedpveB2civHSun6jl0uwQUHi/fmfGrzf4YIO+sZTy8keU0KgkdL9n/zrgGw== - dependencies: - "@dhis2-ui/card" "10.1.0" - "@dhis2-ui/divider" "10.1.0" - "@dhis2-ui/layer" "10.1.0" - "@dhis2-ui/popper" "10.1.0" - "@dhis2-ui/portal" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - "@dhis2/ui-icons" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/menu@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/menu/-/menu-9.15.0.tgz#d4ac6e9025b58f34ead3fbfc49cf5a4d27b53073" @@ -1785,21 +1584,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/modal@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/modal/-/modal-10.1.0.tgz#5c7c193e4be07df5c800b3baca9619125313682d" - integrity sha512-+XzjgsyWbD5fEmE4JXuGchzhMhHqM+qveKydINFhKGlsMHKWMDqvENaZuLjV/xEb8Zi9qXDXNsbhfo2mb7yfUg== - dependencies: - "@dhis2-ui/card" "10.1.0" - "@dhis2-ui/center" "10.1.0" - "@dhis2-ui/layer" "10.1.0" - "@dhis2-ui/portal" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - "@dhis2/ui-icons" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/modal@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/modal/-/modal-9.15.0.tgz#b8f0f5d7ba510c35407582d60d94d7bdf5226404" @@ -1815,17 +1599,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/node@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/node/-/node-10.1.0.tgz#2dcee2c445ea937daff2b9b51a8a771398b948ad" - integrity sha512-T+pP1nGuvR6V1PbmkyT8Y/QAdJnsI1VNekJrBa9aH9MNhJFWTmmLnseKp2Xusg8YBKcpKCWAirORIwztw7vsow== - dependencies: - "@dhis2-ui/loader" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/node@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/node/-/node-9.15.0.tgz#71bde9dfaa929a42d288623aace2c443cbcf53f8" @@ -1837,17 +1610,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/notice-box@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/notice-box/-/notice-box-10.1.0.tgz#f300833cee7e2d8f1e5de712e13d4b2e75aae6dd" - integrity sha512-d0PIaMNnmeLYvRBCZVS3WphbtF/joM1w2zuqw0QnCqSHELohml4ADO1zrU43M9SODN3jLQC85+wuEqAhanfF2w== - dependencies: - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - "@dhis2/ui-icons" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/notice-box@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/notice-box/-/notice-box-9.15.0.tgz#b113c2dcbf4674407e25cc041f3c497d767bdb36" @@ -1859,20 +1621,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/organisation-unit-tree@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/organisation-unit-tree/-/organisation-unit-tree-10.1.0.tgz#3882feb23b1f0697b0a3ece3b8286f82af7f4fa6" - integrity sha512-9El9f2Jh4dWTwrZlWAoRZ1m7uykVctTg+9n98wBMTliksvqu/uMYBua9lsatqvKdh5vo3MUHRe1DsyLhP6d5Rg== - dependencies: - "@dhis2-ui/button" "10.1.0" - "@dhis2-ui/checkbox" "10.1.0" - "@dhis2-ui/loader" "10.1.0" - "@dhis2-ui/node" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/organisation-unit-tree@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/organisation-unit-tree/-/organisation-unit-tree-9.15.0.tgz#be25c73482f67a3076445c5742e6edf4efc0dd65" @@ -1887,19 +1635,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/pagination@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/pagination/-/pagination-10.1.0.tgz#46472300ad7983170289c8b292ac2761613de78e" - integrity sha512-JnJjkIDoSaIVLCCakYbXCiZjdCT3A+aXngWD0zOAggII9iJiYvwzcDzjr6IfZrbHB+qF+vu5i9if0D1isy8jsA== - dependencies: - "@dhis2-ui/button" "10.1.0" - "@dhis2-ui/select" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - "@dhis2/ui-icons" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/pagination@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/pagination/-/pagination-9.15.0.tgz#f008e22a4132989089bebc61cec820d19d326a89" @@ -1913,18 +1648,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/popover@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/popover/-/popover-10.1.0.tgz#35f56863a5d2b10d73f44ad2c71525d9a5da0f14" - integrity sha512-JcrQjMSArUmPebI1NEgg0h0hhcjv+12SfI7Ox0+3PFbEJGh4GmzcP1TjfE7SHB2mN2unYqE9axxtlfsWgUCx4g== - dependencies: - "@dhis2-ui/layer" "10.1.0" - "@dhis2-ui/popper" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/popover@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/popover/-/popover-9.15.0.tgz#1fc7d39cc8ed069a34b873c52f9127b274da19fb" @@ -1937,19 +1660,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/popper@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/popper/-/popper-10.1.0.tgz#4674253e4b082d85d0a2409cf7f6e9eda79d0a63" - integrity sha512-4SyVd5DAz94H7UlD8m607jHIU/QmXBGC3Ca/OZFFK3b0mzJzbSGiDymFFTjspcCMaxjpV9Y6VHsE+NrmbjBP9Q== - dependencies: - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - "@popperjs/core" "^2.10.1" - classnames "^2.3.1" - prop-types "^15.7.2" - react-popper "^2.2.5" - resize-observer-polyfill "^1.5.1" - "@dhis2-ui/popper@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/popper/-/popper-9.15.0.tgz#e2ccab3164eca5e74a8c5a6c3e5cc4c14bb4551f" @@ -1963,14 +1673,6 @@ react-popper "^2.2.5" resize-observer-polyfill "^1.5.1" -"@dhis2-ui/portal@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/portal/-/portal-10.1.0.tgz#91b9d7cff5d56f63ba656c49b744fabd3c46c738" - integrity sha512-XNjK6D5hbInqcYigpW29cqOMcc9woOnEd8n2v5T5u7xEuDH4hrnpdJ0mAuICSMs/QGpVsDQuiHDpeaX/BGwmxg== - dependencies: - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/portal@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/portal/-/portal-9.15.0.tgz#b3d2b94ca61d3660c9cdb584e0fcc21e8146893a" @@ -1979,16 +1681,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/radio@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/radio/-/radio-10.1.0.tgz#ae576b7ebb71ef53795a10a409843976d18840f8" - integrity sha512-gr9pgFUg0j50306pqVMzaTloD8/LafziT3UWHGIQ8g1Z0sUoZ/TEmNE6hx2sRBSnsXQqeuCQz1l3ppjtIzkI+w== - dependencies: - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/radio@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/radio/-/radio-9.15.0.tgz#b731c14b14e2a9f4062dde46ca42ddae9f2b573e" @@ -1999,16 +1691,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/required@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/required/-/required-10.1.0.tgz#edcca99b3fae5737783fc1b396506a751cd9feb4" - integrity sha512-41WO12gv9PbjkfvXYx0FWTRo53Uc2+0XVvszIos8QrvnmzutvYBAwsvvZlUjqYEQIh9PfQ1HXuGR6qrNj74+3g== - dependencies: - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/required@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/required/-/required-9.15.0.tgz#24a96b62d33d8f190a7fd62648ba323011aabcb4" @@ -2019,16 +1701,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/segmented-control@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/segmented-control/-/segmented-control-10.1.0.tgz#5062bfd729b557dd4a405ce86fb82dc9913ea66c" - integrity sha512-NttPo1cNQVuPgHKRGE3UjSNGDFTyg9IB76tF1qDFBOjEdAsxP+cpAn4OhbB9Epyg9CJ0uUEFHbmpzRlMHro6mA== - dependencies: - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/segmented-control@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/segmented-control/-/segmented-control-9.15.0.tgz#3db3ad4af9b95a9de478871c059d2bc4d50dafd6" @@ -2039,29 +1711,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/select@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/select/-/select-10.1.0.tgz#1595eec2de046c7e83d2fd8b44fc4389e16fcc15" - integrity sha512-FH4tvnerMHzzOKi26u+lFkmRN3o6ADkXUOYqdfdNUOr23Iq+KaLa0sl+IZet2JNsi/uVB3nLE+zOOKWqqzxRUA== - dependencies: - "@dhis2-ui/box" "10.1.0" - "@dhis2-ui/button" "10.1.0" - "@dhis2-ui/card" "10.1.0" - "@dhis2-ui/checkbox" "10.1.0" - "@dhis2-ui/chip" "10.1.0" - "@dhis2-ui/field" "10.1.0" - "@dhis2-ui/input" "10.1.0" - "@dhis2-ui/layer" "10.1.0" - "@dhis2-ui/loader" "10.1.0" - "@dhis2-ui/popper" "10.1.0" - "@dhis2-ui/status-icon" "10.1.0" - "@dhis2-ui/tooltip" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - "@dhis2/ui-icons" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/select@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/select/-/select-9.15.0.tgz#e076b8a044c1ea94c4e6fb449c2ed246bb7caaa9" @@ -2085,21 +1734,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/selector-bar@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/selector-bar/-/selector-bar-10.1.0.tgz#b818513cd52403fb0f5cba9dbad0b6ddd541b411" - integrity sha512-H/KJpH+ypEIm5Mp0k+SXe3HJ/J4hdFeDFtoBk60M/1gszuoyCOA2Xi9ycjlJ+oar7iUtepgB5NHpjnI1DG7IZQ== - dependencies: - "@dhis2-ui/button" "10.1.0" - "@dhis2-ui/card" "10.1.0" - "@dhis2-ui/layer" "10.1.0" - "@dhis2-ui/popper" "10.1.0" - "@dhis2/ui-constants" "10.1.0" - "@dhis2/ui-icons" "10.1.0" - "@testing-library/react" "^16.0.1" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/selector-bar@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/selector-bar/-/selector-bar-9.15.0.tgz#922b1079e47ee214f524a92128d91597c10d800d" @@ -2114,32 +1748,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/sharing-dialog@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/sharing-dialog/-/sharing-dialog-10.1.0.tgz#b94055352ffe6f7c523716bb450c7865a8bcc466" - integrity sha512-x7WgEeiXSdFOKncUbI7P7NWRfVdTVuGYcegG+WN6PfWmVAtK0K46KMnqk4wxjGW/43VWYof9ESfnrlZM28UaTA== - dependencies: - "@dhis2-ui/box" "10.1.0" - "@dhis2-ui/button" "10.1.0" - "@dhis2-ui/card" "10.1.0" - "@dhis2-ui/divider" "10.1.0" - "@dhis2-ui/input" "10.1.0" - "@dhis2-ui/layer" "10.1.0" - "@dhis2-ui/menu" "10.1.0" - "@dhis2-ui/modal" "10.1.0" - "@dhis2-ui/notice-box" "10.1.0" - "@dhis2-ui/popper" "10.1.0" - "@dhis2-ui/select" "10.1.0" - "@dhis2-ui/tab" "10.1.0" - "@dhis2-ui/tooltip" "10.1.0" - "@dhis2-ui/user-avatar" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - "@dhis2/ui-icons" "10.1.0" - "@react-hook/size" "^2.1.2" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/sharing-dialog@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/sharing-dialog/-/sharing-dialog-9.15.0.tgz#f5622051d6e80d3b3b489b7c0d394fc1b6d5a4a4" @@ -2166,18 +1774,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/status-icon@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/status-icon/-/status-icon-10.1.0.tgz#9d7415bfe65d6dc17e05145f703d58ebe01d7bbd" - integrity sha512-Olz7nOg1XX/QcreUe/ym9k7xNXunDRn0Fb6PN37VCEVOaQJ7nJimdnnPX6FJcZw0oFswpLDEnl599MNr+OOmQw== - dependencies: - "@dhis2-ui/loader" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - "@dhis2/ui-icons" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/status-icon@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/status-icon/-/status-icon-9.15.0.tgz#43c68cf1fcdae66e9adeac938584602e8ba62864" @@ -2190,18 +1786,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/switch@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/switch/-/switch-10.1.0.tgz#0b17c28d0101bd0961e41a322e7f50f63c23160f" - integrity sha512-DTXroVGAmw2X59k3m0MN6nIfCMwMWiqVKv49b61a7tAnGn4bDyu6aCqQ6/Uh/+p8Et8f74POI77HLA3p09iMkg== - dependencies: - "@dhis2-ui/field" "10.1.0" - "@dhis2-ui/required" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/switch@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/switch/-/switch-9.15.0.tgz#d5ca2930bfeb5ac3531d2b5e580718e99585bcdf" @@ -2214,18 +1798,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/tab@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/tab/-/tab-10.1.0.tgz#be2bdde6cfc2652ddec1c0373308529ed6b7c662" - integrity sha512-G61Jauk+6QcHmWetU9PNaAHn7uVWrKLZKvPB2mKUN5MP0x885DWis2tW2+lCBhds16UsQVT4HWu5r/EQ4auHnA== - dependencies: - "@dhis2-ui/tooltip" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - "@dhis2/ui-icons" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/tab@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/tab/-/tab-9.15.0.tgz#ed9b7143a55124c0efef7bb1164c6dd4752c2337" @@ -2238,17 +1810,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/table@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/table/-/table-10.1.0.tgz#fae4397dac52b484f94c854e4849de3249fee5fb" - integrity sha512-yfJAGlfpZ8yRO8eO70ITyedzE35lTosy3uERGHKxODIR4gbqiM+8UpvVRiKAbZ8Ouj1GNQnkERXWsKnOEw1R2g== - dependencies: - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - "@dhis2/ui-icons" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/table@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/table/-/table-9.15.0.tgz#dd949b37eff0360905ea7cecbd0c3bbc802bde74" @@ -2260,16 +1821,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/tag@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/tag/-/tag-10.1.0.tgz#09e20f79407bc4400fcb92d3052a1fcdaa383e2c" - integrity sha512-HZY/gpPKK5yskLY9sONdwVRPig05xOdggPuo58lSikO9w6oODCxxTO/rUnEyvfzqYR/NpQfb0xFJGgz+vOes5Q== - dependencies: - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/tag@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/tag/-/tag-9.15.0.tgz#28ce45d955c1b9e7d70b7b80e1d70d92d97d3683" @@ -2280,21 +1831,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/text-area@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/text-area/-/text-area-10.1.0.tgz#9cf2d20ba7caa1b63077b04e6b55054d1a36396f" - integrity sha512-FEOOMsm33fp6qqqqCMbA8HGFFud/PMfS9ZNPHf0/oqP2hIzHt1WQ7UWiUDTmQko7QzgXBcZaAfT9Xi0TgeTBoA== - dependencies: - "@dhis2-ui/box" "10.1.0" - "@dhis2-ui/field" "10.1.0" - "@dhis2-ui/loader" "10.1.0" - "@dhis2-ui/status-icon" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - "@dhis2/ui-icons" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/text-area@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/text-area/-/text-area-9.15.0.tgz#cc2b5f92a678593a429a3c48c35c1c95c4907b06" @@ -2310,18 +1846,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/tooltip@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/tooltip/-/tooltip-10.1.0.tgz#a21a35cfe6ffcfdd319374cd7c7dcbed01139313" - integrity sha512-7Pn4drVkmVUxrqlcjo88VgX8OqSFP3ufW+HO77uu8vN9WgGr1RV9QH0JjaE3VTz51+7UgTETYZAX9cTF8DPuzA== - dependencies: - "@dhis2-ui/popper" "10.1.0" - "@dhis2-ui/portal" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/tooltip@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/tooltip/-/tooltip-9.15.0.tgz#d2766965304178ee4498038ea6322d54f44fc048" @@ -2334,21 +1858,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/transfer@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/transfer/-/transfer-10.1.0.tgz#4c20a4dac7a8573ab0ba8e710341e722b4626708" - integrity sha512-b25S/lhm9fYd2bRIF/tjtuD3L1p3TW42zpi/AcN8Ud2zFUoIr0Xvb6OGw/5kakqlvWTehh43YunwNbS40GCGYw== - dependencies: - "@dhis2-ui/button" "10.1.0" - "@dhis2-ui/field" "10.1.0" - "@dhis2-ui/input" "10.1.0" - "@dhis2-ui/intersection-detector" "10.1.0" - "@dhis2-ui/loader" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/transfer@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/transfer/-/transfer-9.15.0.tgz#467362081884c9b55ad4f79ca68ea2a8f39cf4ad" @@ -2364,16 +1873,6 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/user-avatar@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2-ui/user-avatar/-/user-avatar-10.1.0.tgz#764208e0cd5c743af526d66cb515b543fde8bdc1" - integrity sha512-UWYbLPLfLr0pP4K4rK0CeIgXfLwePDyI/w5vaAI8qHCO8VPtXkbLK4XkdUyBwWG4RcC6aMbm0NWBTIOtkW6phw== - dependencies: - "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "10.1.0" - classnames "^2.3.1" - prop-types "^15.7.2" - "@dhis2-ui/user-avatar@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2-ui/user-avatar/-/user-avatar-9.15.0.tgz#c5abc6c6615fc36147101d9870c1d8fe6ed42b81" @@ -2570,15 +2069,6 @@ i18next "^10.3" moment "^2.24.0" -"@dhis2/multi-calendar-dates@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@dhis2/multi-calendar-dates/-/multi-calendar-dates-2.0.0.tgz#febf04f873670960804d38c9ebaa1cadf8050db3" - integrity sha512-pxu81kkkh70tB+CyAub41ulpNJPHyxDGwH2pdcc+NUqrKu4OTQr5ScdCBL2MndShrEKj9J6qj9zKVagvvymH5w== - dependencies: - "@dhis2/d2-i18n" "^1.1.3" - "@js-temporal/polyfill" "0.4.3" - classnames "^2.3.2" - "@dhis2/multi-calendar-dates@^1.2.3": version "1.3.2" resolved "https://registry.yarnpkg.com/@dhis2/multi-calendar-dates/-/multi-calendar-dates-1.3.2.tgz#34e5896f7fdfb761a2ee6035d848cba00446cde5" @@ -2603,13 +2093,6 @@ workbox-routing "^7.1.0" workbox-strategies "^7.1.0" -"@dhis2/ui-constants@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2/ui-constants/-/ui-constants-10.1.0.tgz#5fc22d2d312004931fa2e3b3b639d994d7d9692a" - integrity sha512-pWQDgQbuU0JwTRG8lvhh631q2LMtly5kVTYTMETJn83k4UGt1RXcsv+layPpAkXzobVA9/yRknLxIyCdsuEiuw== - dependencies: - prop-types "^15.7.2" - "@dhis2/ui-constants@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2/ui-constants/-/ui-constants-9.15.0.tgz#e63e3bc5d098fc63c0d05496bbbaf65a59fca286" @@ -2617,26 +2100,6 @@ dependencies: prop-types "^15.7.2" -"@dhis2/ui-forms@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2/ui-forms/-/ui-forms-10.1.0.tgz#44dfb4645bb13301a5c57c964b9c6d88a15b53e6" - integrity sha512-d+dJNJZTXPtQIaM+PnwvS+01AalfDJzLzT4NWPfH0stjnpU3TO6NoacYkrchVkfFx3xogVNMo3tIpf7wPbLuiQ== - dependencies: - "@dhis2-ui/button" "10.1.0" - "@dhis2-ui/checkbox" "10.1.0" - "@dhis2-ui/field" "10.1.0" - "@dhis2-ui/file-input" "10.1.0" - "@dhis2-ui/input" "10.1.0" - "@dhis2-ui/radio" "10.1.0" - "@dhis2-ui/select" "10.1.0" - "@dhis2-ui/switch" "10.1.0" - "@dhis2-ui/text-area" "10.1.0" - "@dhis2/prop-types" "^3.1.2" - classnames "^2.3.1" - final-form "^4.20.2" - prop-types "^15.7.2" - react-final-form "^6.5.3" - "@dhis2/ui-forms@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2/ui-forms/-/ui-forms-9.15.0.tgz#3579588b40aa4eaec2afa888c1a31e347dd09f94" @@ -2657,71 +2120,11 @@ prop-types "^15.7.2" react-final-form "^6.5.3" -"@dhis2/ui-icons@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2/ui-icons/-/ui-icons-10.1.0.tgz#5b075a8323251d1d7b50f34bb6eb9ca9cfdcc99d" - integrity sha512-vIvZa8E25KjsFBUaS7y1EnQT5wNnDTnUAEMD7E7iUxHaG4wLkui4/UH8sHtjl39GqEHvVjrYAKx2jh7Cz6hdFg== - "@dhis2/ui-icons@9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2/ui-icons/-/ui-icons-9.15.0.tgz#48865538b95f621ce3ed3b94eb9a438a879aa263" integrity sha512-SEgzWN+YEpV/zQxb7tPL4/qog+0irfM7Oy5OOd4h1jMx7UVroRhsOMJUPpG0L1MyKL7gmsAUg2Z3pa9KN5EFKw== -"@dhis2/ui@^10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@dhis2/ui/-/ui-10.1.0.tgz#e5ab3b4fef187ea30fa5b6305ce1d387ae97f536" - integrity sha512-Mc5pmj0o1i/wR3nhREfY2e5yH43NRzI2U5HB8ryXf90+No82vHWJ0pCeakTBzlCgfQGs9TrwgfOUD9MCZ2wapA== - dependencies: - "@dhis2-ui/alert" "10.1.0" - "@dhis2-ui/box" "10.1.0" - "@dhis2-ui/button" "10.1.0" - "@dhis2-ui/calendar" "10.1.0" - "@dhis2-ui/card" "10.1.0" - "@dhis2-ui/center" "10.1.0" - "@dhis2-ui/checkbox" "10.1.0" - "@dhis2-ui/chip" "10.1.0" - "@dhis2-ui/cover" "10.1.0" - "@dhis2-ui/css" "10.1.0" - "@dhis2-ui/divider" "10.1.0" - "@dhis2-ui/field" "10.1.0" - "@dhis2-ui/file-input" "10.1.0" - "@dhis2-ui/header-bar" "10.1.0" - "@dhis2-ui/help" "10.1.0" - "@dhis2-ui/input" "10.1.0" - "@dhis2-ui/intersection-detector" "10.1.0" - "@dhis2-ui/label" "10.1.0" - "@dhis2-ui/layer" "10.1.0" - "@dhis2-ui/legend" "10.1.0" - "@dhis2-ui/loader" "10.1.0" - "@dhis2-ui/logo" "10.1.0" - "@dhis2-ui/menu" "10.1.0" - "@dhis2-ui/modal" "10.1.0" - "@dhis2-ui/node" "10.1.0" - "@dhis2-ui/notice-box" "10.1.0" - "@dhis2-ui/organisation-unit-tree" "10.1.0" - "@dhis2-ui/pagination" "10.1.0" - "@dhis2-ui/popover" "10.1.0" - "@dhis2-ui/popper" "10.1.0" - "@dhis2-ui/portal" "10.1.0" - "@dhis2-ui/radio" "10.1.0" - "@dhis2-ui/required" "10.1.0" - "@dhis2-ui/segmented-control" "10.1.0" - "@dhis2-ui/select" "10.1.0" - "@dhis2-ui/selector-bar" "10.1.0" - "@dhis2-ui/sharing-dialog" "10.1.0" - "@dhis2-ui/switch" "10.1.0" - "@dhis2-ui/tab" "10.1.0" - "@dhis2-ui/table" "10.1.0" - "@dhis2-ui/tag" "10.1.0" - "@dhis2-ui/text-area" "10.1.0" - "@dhis2-ui/tooltip" "10.1.0" - "@dhis2-ui/transfer" "10.1.0" - "@dhis2-ui/user-avatar" "10.1.0" - "@dhis2/ui-constants" "10.1.0" - "@dhis2/ui-forms" "10.1.0" - "@dhis2/ui-icons" "10.1.0" - prop-types "^15.7.2" - "@dhis2/ui@^9.11.7": version "9.15.0" resolved "https://registry.yarnpkg.com/@dhis2/ui/-/ui-9.15.0.tgz#b9e12416922653b07ffb927db93b56ecb0083bd3" @@ -3217,6 +2620,34 @@ resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== +"@lezer/common@^1.0.0", "@lezer/common@^1.1.0", "@lezer/common@^1.2.0": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.2.3.tgz#138fcddab157d83da557554851017c6c1e5667fd" + integrity sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA== + +"@lezer/highlight@^1.0.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@lezer/highlight/-/highlight-1.2.1.tgz#596fa8f9aeb58a608be0a563e960c373cbf23f8b" + integrity sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA== + dependencies: + "@lezer/common" "^1.0.0" + +"@lezer/json@^1.0.0": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@lezer/json/-/json-1.0.2.tgz#bdc849e174113e2d9a569a5e6fb1a27e2f703eaf" + integrity sha512-xHT2P4S5eeCYECyKNPhr4cbEL9tc8w83SPwRC373o9uEdrvGKTZoJVAGxpOsZckMlEh9W23Pc72ew918RWQOBQ== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/lr@^1.0.0": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.2.tgz#931ea3dea8e9de84e90781001dae30dea9ff1727" + integrity sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA== + dependencies: + "@lezer/common" "^1.0.0" + "@ls-lint/ls-lint@^1.10.0": version "1.11.2" resolved "https://registry.yarnpkg.com/@ls-lint/ls-lint/-/ls-lint-1.11.2.tgz#fa7e8c404b7c2f9f7fe3e92b7d69fe37a15c0e1c" @@ -3478,13 +2909,6 @@ dependencies: defer-to-connect "^1.0.1" -"@testing-library/react@^16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-16.0.1.tgz#29c0ee878d672703f5e7579f239005e4e0faa875" - integrity sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg== - dependencies: - "@babel/runtime" "^7.12.5" - "@tootallnate/once@1": version "1.1.2" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" @@ -3922,6 +3346,31 @@ "@typescript-eslint/types" "8.15.0" eslint-visitor-keys "^4.2.0" +"@uiw/codemirror-extensions-basic-setup@4.23.6": + version "4.23.6" + resolved "https://registry.yarnpkg.com/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.23.6.tgz#a15afa85ad12e08fdaca40e89828bced78beeef5" + integrity sha512-bvtq8IOvdkLJMhoJBRGPEzU51fMpPDwEhcAHp9xCR05MtbIokQgsnLXrmD1aZm6e7s/3q47H+qdSfAAkR5MkLA== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/commands" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/lint" "^6.0.0" + "@codemirror/search" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + +"@uiw/react-codemirror@^4.23.6": + version "4.23.6" + resolved "https://registry.yarnpkg.com/@uiw/react-codemirror/-/react-codemirror-4.23.6.tgz#e77f302a39a28c644164ed59bdc1a9edeb587cdf" + integrity sha512-caYKGV6TfGLRV1HHD3p0G3FiVzKL1go7wes5XT2nWjB0+dTdyzyb81MKRSacptgZcotujfNO6QXn65uhETRAMw== + dependencies: + "@babel/runtime" "^7.18.6" + "@codemirror/commands" "^6.1.0" + "@codemirror/state" "^6.1.1" + "@codemirror/theme-one-dark" "^6.0.0" + "@uiw/codemirror-extensions-basic-setup" "4.23.6" + codemirror "^6.0.0" + "@ungap/structured-clone@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" @@ -5064,6 +4513,19 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== +codemirror@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-6.0.1.tgz#62b91142d45904547ee3e0e0e4c1a79158035a29" + integrity sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/commands" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/lint" "^6.0.0" + "@codemirror/search" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + collect-v8-coverage@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" @@ -5362,6 +4824,11 @@ crc@^3.4.4: dependencies: buffer "^5.1.0" +crelt@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.6.tgz#7cc898ea74e190fb6ef9dae57f8f81cf7302df72" + integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g== + cross-domain-safe-weakmap@^1, cross-domain-safe-weakmap@^1.0.1: version "1.0.29" resolved "https://registry.yarnpkg.com/cross-domain-safe-weakmap/-/cross-domain-safe-weakmap-1.0.29.tgz#0847975c27d9e1cc840f24c1745311958df98022" @@ -11331,6 +10798,11 @@ style-loader@^3.3.1: resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.4.tgz#f30f786c36db03a45cbd55b6a70d930c479090e7" integrity sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w== +style-mod@^4.0.0, style-mod@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.1.2.tgz#ca238a1ad4786520f7515a8539d5a63691d7bf67" + integrity sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw== + styled-jsx@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-4.0.1.tgz#ae3f716eacc0792f7050389de88add6d5245b9e9" @@ -12179,6 +11651,11 @@ w3c-hr-time@^1.0.2: dependencies: browser-process-hrtime "^1.0.0" +w3c-keyname@^2.2.4: + version "2.2.8" + resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz#7b17c8c6883d4e8b86ac8aba79d39e880f8869c5" + integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ== + w3c-xmlserializer@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a"