From 3c366afc3ccaa503d27e6c88b1cfa864d6145689 Mon Sep 17 00:00:00 2001 From: Jan Vorcak Date: Mon, 22 Jan 2024 14:51:37 +0100 Subject: [PATCH 1/8] Table updated to reflect new UI package changes --- frontend/src/components/misc/ConfigList.tsx | 5 ++--- frontend/src/components/pages/acls/Acl.List.tsx | 2 +- frontend/src/components/pages/admin/Admin.Roles.tsx | 2 +- frontend/src/components/pages/admin/Admin.Users.tsx | 2 +- frontend/src/components/pages/connect/Cluster.Details.tsx | 2 +- .../src/components/pages/connect/Connector.Details.tsx | 6 ++++-- frontend/src/components/pages/connect/Overview.tsx | 4 ++-- frontend/src/components/pages/consumers/Modals.tsx | 6 ++++-- frontend/src/components/pages/overview/Overview.tsx | 2 +- .../pages/reassign-partitions/Step1.Partitions.tsx | 4 ++-- .../components/pages/reassign-partitions/Step2.Brokers.tsx | 2 +- .../reassign-partitions/components/ActiveReassignments.tsx | 7 +++++-- frontend/src/components/pages/topics/Tab.Consumers.tsx | 2 +- .../src/components/pages/topics/Tab.Messages/index.tsx | 3 ++- frontend/src/components/pages/topics/Tab.Partitions.tsx | 6 ++++-- frontend/src/components/pages/topics/Topic.List.tsx | 2 +- frontend/src/state/ui.ts | 1 + 17 files changed, 34 insertions(+), 24 deletions(-) diff --git a/frontend/src/components/misc/ConfigList.tsx b/frontend/src/components/misc/ConfigList.tsx index a712db6c4..74acbd199 100644 --- a/frontend/src/components/misc/ConfigList.tsx +++ b/frontend/src/components/misc/ConfigList.tsx @@ -97,9 +97,8 @@ export function ConfigList({ configEntries, valueDisplay, renderTooltip }: { con return ( data={configEntries} - showPagination={false} - enableSorting={false} - defaultPageSize={10000} + pagination={false} + sorting={false} getRowCanExpand={row => (row.original.synonyms?.length ?? 0) > 0 } subComponent={({row}) => { if(!row.original.synonyms?.length) { diff --git a/frontend/src/components/pages/acls/Acl.List.tsx b/frontend/src/components/pages/acls/Acl.List.tsx index baf33a214..f2f156b9b 100644 --- a/frontend/src/components/pages/acls/Acl.List.tsx +++ b/frontend/src/components/pages/acls/Acl.List.tsx @@ -116,7 +116,7 @@ class AclList extends PageComponent { data={groups} - showPagination + pagination={true} columns={[ { size: Infinity, diff --git a/frontend/src/components/pages/admin/Admin.Roles.tsx b/frontend/src/components/pages/admin/Admin.Roles.tsx index 7b207a67f..5a516b837 100644 --- a/frontend/src/components/pages/admin/Admin.Roles.tsx +++ b/frontend/src/components/pages/admin/Admin.Roles.tsx @@ -29,7 +29,7 @@ export class AdminRoles extends Component<{}> { const roles = api.adminInfo.roles; return - enableSorting + sorting={true} data={roles} expandRowByClick subComponent={({row: {original: role}}) => } diff --git a/frontend/src/components/pages/admin/Admin.Users.tsx b/frontend/src/components/pages/admin/Admin.Users.tsx index d0d85d046..be635c550 100644 --- a/frontend/src/components/pages/admin/Admin.Users.tsx +++ b/frontend/src/components/pages/admin/Admin.Users.tsx @@ -37,7 +37,7 @@ export class AdminUsers extends Component<{}> { const table = ( data={users} - enableSorting + sorting={true} expandRowByClick columns={[ { diff --git a/frontend/src/components/pages/connect/Cluster.Details.tsx b/frontend/src/components/pages/connect/Cluster.Details.tsx index fc8cd3b79..bb07984a6 100644 --- a/frontend/src/components/pages/connect/Cluster.Details.tsx +++ b/frontend/src/components/pages/connect/Cluster.Details.tsx @@ -117,7 +117,7 @@ class KafkaClusterDetails extends PageComponent<{ clusterName: string }> { data={additionalInfo?.plugins ?? []} - showPagination + pagination={true} columns={[ { header: 'Class', diff --git a/frontend/src/components/pages/connect/Connector.Details.tsx b/frontend/src/components/pages/connect/Connector.Details.tsx index 27f5c9508..08cef8c45 100644 --- a/frontend/src/components/pages/connect/Connector.Details.tsx +++ b/frontend/src/components/pages/connect/Connector.Details.tsx @@ -300,8 +300,10 @@ const ConfigOverviewTab = observer((p: { data={connectClusterStore.getConnectorTasks(connectorName) ?? []} - defaultPageSize={10} - showPagination + pagination={{ + pageSize: 10, + pageIndex: 0 + }} columns={[ { header: 'Task', diff --git a/frontend/src/components/pages/connect/Overview.tsx b/frontend/src/components/pages/connect/Overview.tsx index 75c18374f..9df525ba7 100644 --- a/frontend/src/components/pages/connect/Overview.tsx +++ b/frontend/src/components/pages/connect/Overview.tsx @@ -72,7 +72,7 @@ class TabClusters extends Component { return ( data={clusters} - enableSorting={false} + sorting={false} columns={[ { header: 'Cluster', @@ -132,7 +132,7 @@ class TabConnectors extends Component { return ( data={allConnectors} - enableSorting={false} + sorting={false} columns={[ { header: 'Connector', diff --git a/frontend/src/components/pages/consumers/Modals.tsx b/frontend/src/components/pages/consumers/Modals.tsx index b6cc55d44..8a26262a8 100644 --- a/frontend/src/components/pages/consumers/Modals.tsx +++ b/frontend/src/components/pages/consumers/Modals.tsx @@ -257,8 +257,10 @@ export class EditOffsetsModal extends Component<{ , description: size="sm" - showPagination - defaultPageSize={1000} + pagination={{ + pageSize: 1000, + pageIndex: 0 + }} data={items} columns={[ { diff --git a/frontend/src/components/pages/overview/Overview.tsx b/frontend/src/components/pages/overview/Overview.tsx index 501b25071..a0054c8a9 100644 --- a/frontend/src/components/pages/overview/Overview.tsx +++ b/frontend/src/components/pages/overview/Overview.tsx @@ -141,7 +141,7 @@ class Overview extends PageComponent { Broker Details data={brokers} - enableSorting={false} + sorting={false} columns={[ { size: 80, diff --git a/frontend/src/components/pages/reassign-partitions/Step1.Partitions.tsx b/frontend/src/components/pages/reassign-partitions/Step1.Partitions.tsx index 704220167..b03dc79b6 100644 --- a/frontend/src/components/pages/reassign-partitions/Step1.Partitions.tsx +++ b/frontend/src/components/pages/reassign-partitions/Step1.Partitions.tsx @@ -65,8 +65,8 @@ export class StepSelectPartitions extends Component<{ partitionSelection: Partit - showPagination - enableSorting + pagination={true} + sorting={true} data={this.topicPartitions} rowSelection={{ '_internal_connectors_configs': true diff --git a/frontend/src/components/pages/reassign-partitions/Step2.Brokers.tsx b/frontend/src/components/pages/reassign-partitions/Step2.Brokers.tsx index 51b96094f..ff25b488e 100644 --- a/frontend/src/components/pages/reassign-partitions/Step2.Brokers.tsx +++ b/frontend/src/components/pages/reassign-partitions/Step2.Brokers.tsx @@ -48,7 +48,7 @@ export class StepSelectBrokers extends Component<{ selectedBrokerIds: number[], data={this.brokers} - showPagination + pagination={true} columns={[ { id: 'check', diff --git a/frontend/src/components/pages/reassign-partitions/components/ActiveReassignments.tsx b/frontend/src/components/pages/reassign-partitions/components/ActiveReassignments.tsx index e685c809c..72781bbf7 100644 --- a/frontend/src/components/pages/reassign-partitions/components/ActiveReassignments.tsx +++ b/frontend/src/components/pages/reassign-partitions/components/ActiveReassignments.tsx @@ -68,8 +68,11 @@ export class ActiveReassignments extends Component<{ throttledTopics: string[], {/* Table */} data={currentReassignments} - defaultPageSize={5} - enableSorting={false} + pagination={{ + pageIndex: 0, + pageSize: 5, + }} + sorting={false} onRow={(row) => { this.reassignmentDetails = row.original }} diff --git a/frontend/src/components/pages/topics/Tab.Consumers.tsx b/frontend/src/components/pages/topics/Tab.Consumers.tsx index 1ca09ea0e..7d5067268 100644 --- a/frontend/src/components/pages/topics/Tab.Consumers.tsx +++ b/frontend/src/components/pages/topics/Tab.Consumers.tsx @@ -36,7 +36,7 @@ export class TopicConsumers extends Component<{ topic: Topic }> { return data={consumers} - showPagination + pagination={true} columns={[ {size: 1, header: 'Group', accessorKey: 'groupId'}, {header: 'Lag', accessorKey: 'summedLag'}, diff --git a/frontend/src/components/pages/topics/Tab.Messages/index.tsx b/frontend/src/components/pages/topics/Tab.Messages/index.tsx index f5f290745..c4fef52f8 100644 --- a/frontend/src/components/pages/topics/Tab.Messages/index.tsx +++ b/frontend/src/components/pages/topics/Tab.Messages/index.tsx @@ -586,7 +586,7 @@ export class TopicMessageView extends Component { data={this.messageSource.data} emptyText="No messages" columns={columns} - showPagination + pagination={true} subComponent={({row: {original}}) => renderExpandedMessage(original)} /> - - - ), - }, - ]} - /> + { + this.topicToDelete = record; + }} /> @@ -207,6 +162,81 @@ class TopicList extends PageComponent { } export default TopicList; + +export const onPaginationChange = (state: PaginationState, callBack?: (args: { pageSize: number; pageIndex: number }) => void) => (x: Updater) => { + const newState = typeof x === 'function' ? x(state) : x + callBack?.(newState) +} + +const TopicsTable: FC<{ topics: Topic[], onDelete: (record: Topic) => void }> = ({ topics, onDelete }) => { + const { search } = useLocation(); + const paginationParams = useMemo(() => { + const searchParams = new URLSearchParams(search) + return { + pageSize: Number(searchParams.get('pageSize')) || uiSettings.topicList.pageSize, + pageIndex: Number(searchParams.get('page')) || 0, + } + }, [search]) + + return ( + + data={topics} + pagination={paginationParams} + onPaginationChange={onPaginationChange(paginationParams, ({ pageSize, pageIndex}) => { + uiSettings.topicList.pageSize = pageSize + editQuery(query => { + query['page'] = String(pageIndex) + query['pageSize'] = String(pageSize) + }) + })} + columns={[ + { + header: 'Name', + accessorKey: 'topicName', + cell: ({row: {original: topic}}) => {renderName(topic)}, + size: Infinity, + }, + { + header: 'Partitions', + accessorKey: 'partitions', + cell: ({row: {original: topic}}) => topic.partitionCount, + }, + { + header: 'Replicas', + accessorKey: 'replicationFactor', + }, + { + header: 'CleanupPolicy', + accessorKey: 'cleanupPolicy', + }, + { + header: 'Size', + accessorKey: 'size', + cell: ({row: {original: topic}}) => renderLogDirSummary(topic.logDirSummary), + }, + { + id: 'action', + header: '', + cell: ({row: {original: record}}) => ( + + + + + + ), + }, + ]} + /> + ) +} + const iconAllowed = ( diff --git a/frontend/src/state/ui.ts b/frontend/src/state/ui.ts index 3c044716c..25f4dd2ad 100644 --- a/frontend/src/state/ui.ts +++ b/frontend/src/state/ui.ts @@ -17,6 +17,7 @@ import { TopicTabId } from '../components/pages/topics/Topic.Details'; import { GetAclsRequest, AclRequestDefault } from './restInterfaces'; import { ConnectTabKeys } from '../components/pages/connect/Overview'; import { PayloadEncoding } from '../protogen/redpanda/api/console/v1alpha1/common_pb'; +import { SortingState } from '@redpanda-data/ui'; const settingsName = 'uiSettings-v3'; @@ -104,6 +105,8 @@ export class TopicDetailsSettings { partitionID: -1, maxResults: 50, page: 0, + pageSize: 10, + sorting: [] as SortingState, filtersEnabled: false, filters: [] as FilterEntry[], From 56e81dee941a1cb03a63a8ea41afbe6daea6d93a Mon Sep 17 00:00:00 2001 From: Jan Vorcak Date: Thu, 25 Jan 2024 10:01:16 +0100 Subject: [PATCH 3/8] Pagination props extracted to a hook --- frontend/package-lock.json | 709 ++++++++++++------ frontend/package.json | 2 +- .../pages/topics/Tab.Messages/index.tsx | 19 +- .../components/pages/topics/Topic.List.tsx | 14 +- .../src/hooks/usePaginationParams.test.ts | 32 + frontend/src/hooks/usePaginationParams.ts | 31 + 6 files changed, 565 insertions(+), 242 deletions(-) create mode 100644 frontend/src/hooks/usePaginationParams.test.ts create mode 100644 frontend/src/hooks/usePaginationParams.ts diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 7745f6688..e957a07e4 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -17,7 +17,7 @@ "@heroicons/react": "^1.0.6", "@monaco-editor/react": "^4.6", "@primer/octicons-react": "^17", - "@redpanda-data/ui": "^3.35.0-alpha.0", + "@redpanda-data/ui": "file:.yalc/@redpanda-data/ui", "@textea/json-viewer": "^1.24.4", "array-move": "^4", "framer-motion": "^7", @@ -47,7 +47,7 @@ "devDependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@testing-library/jest-dom": "^5.12.0", - "@testing-library/react": "^11.2.6", + "@testing-library/react": "^13.4.0", "@types/jest": "26.0.23", "@types/node": "^16", "@types/react": "^18.0.18", @@ -70,6 +70,96 @@ "node": "18" } }, + ".yalc/@redpanda-data/ui": { + "version": "3.38.0-alpha.0", + "dependencies": { + "@chakra-ui/icons": "^2.1.1", + "@chakra-ui/react": "^2.8.1", + "@chakra-ui/theme-tools": "^2.1.1", + "@chakra-ui/utils": "^2.0.14", + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", + "@fontsource/inter": "^5.0.15", + "@hookform/devtools": "^4.3.1", + "@hookform/resolvers": "^3.3.2", + "@tanstack/react-table": "^8.11.3", + "@textea/json-viewer": "^3.2.3", + "autoprefixer": "^10.4.16", + "chakra-react-select": "^4.7.6", + "date-fns-tz": "^2.0.0", + "framer-motion": "^10.16.4", + "react-datepicker": "^4.21.0", + "react-day-picker": "^8.9.1", + "react-hook-form": "^7.48.2", + "react-icons": "^4.11.0", + "react-markdown": "^8.0.7", + "react-syntax-highlighter": "^15.5.0", + "remark-emoji": "^3.1.2", + "remark-gfm": "^3.0.1", + "yup": "^1.3.2" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18", + "react-router-dom": ">=5", + "semver": "^7.5.4" + } + }, + ".yalc/@redpanda-data/ui/node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + ".yalc/@redpanda-data/ui/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + }, + ".yalc/@redpanda-data/ui/node_modules/@textea/json-viewer": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@textea/json-viewer/-/json-viewer-3.3.1.tgz", + "integrity": "sha512-0dPV4avWYuh5Y0YKdXVFof/aFGStVTUV8t0j2FPWrtA6HrC1yeg5voWZVr39x1Mh4pAe7nDpThsQdyPZPguMzg==", + "dependencies": { + "clsx": "^2.0.0", + "copy-to-clipboard": "^3.3.3", + "zustand": "^4.4.7" + }, + "peerDependencies": { + "@emotion/react": "^11", + "@emotion/styled": "^11", + "@mui/material": "^5", + "react": "^17 || ^18", + "react-dom": "^17 || ^18" + } + }, + ".yalc/@redpanda-data/ui/node_modules/framer-motion": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.18.0.tgz", + "integrity": "sha512-oGlDh1Q1XqYPksuTD/usb0I70hq95OUzmL9+6Zd+Hs4XV0oaISBa/UUMSjYiq6m8EUF32132mOJ8xVZS+I0S6w==", + "dependencies": { + "tslib": "^2.4.0" + }, + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", @@ -2055,19 +2145,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.23.2.tgz", - "integrity": "sha512-54cIh74Z1rp4oIjsHjqN+WM4fMyCBYe+LpZ9jWm51CZ1fbH3SkAzQD/3XLoNkjbJ7YEmjobLXyvQrFypRHOrXw==", - "dev": true, - "dependencies": { - "core-js-pure": "^3.30.2", - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/template": { "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", @@ -4793,96 +4870,8 @@ } }, "node_modules/@redpanda-data/ui": { - "version": "3.35.0-alpha.0", - "resolved": "https://registry.npmjs.org/@redpanda-data/ui/-/ui-3.35.0-alpha.0.tgz", - "integrity": "sha512-oraNqWp2+J7jWcYcdizcaVYZhcpLing9HLt6yuIPyCTJC2L1Qww2VlWDoi0k5N7svLC42fMCc4WZUPMGGQOWxg==", - "dependencies": { - "@chakra-ui/icons": "^2.1.1", - "@chakra-ui/react": "^2.8.1", - "@chakra-ui/theme-tools": "^2.1.1", - "@chakra-ui/utils": "^2.0.14", - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "@fontsource/inter": "^5.0.15", - "@hookform/devtools": "^4.3.1", - "@hookform/resolvers": "^3.3.2", - "@tanstack/react-table": "^8.11.3", - "@textea/json-viewer": "^3.2.3", - "autoprefixer": "^10.4.16", - "chakra-react-select": "^4.7.6", - "date-fns-tz": "^2.0.0", - "framer-motion": "^10.16.4", - "react-datepicker": "^4.21.0", - "react-day-picker": "^8.9.1", - "react-hook-form": "^7.48.2", - "react-icons": "^4.11.0", - "react-markdown": "^8.0.7", - "react-syntax-highlighter": "^15.5.0", - "remark-emoji": "^3.1.2", - "remark-gfm": "^3.0.1", - "yup": "^1.3.2" - }, - "peerDependencies": { - "react": ">=18", - "react-dom": ">=18", - "react-router-dom": ">=5", - "semver": "^7.5.4" - } - }, - "node_modules/@redpanda-data/ui/node_modules/@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "optional": true, - "dependencies": { - "@emotion/memoize": "0.7.4" - } - }, - "node_modules/@redpanda-data/ui/node_modules/@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", - "optional": true - }, - "node_modules/@redpanda-data/ui/node_modules/@textea/json-viewer": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@textea/json-viewer/-/json-viewer-3.2.3.tgz", - "integrity": "sha512-9fG/JU/wSzib2Naxna+J1PktIKG+9TWOB5ycphKwSSUwrid/d6wAMQYGCCAKmYt0qQq+EQ1jDuFjx7qzfm+cmg==", - "dependencies": { - "clsx": "^2.0.0", - "copy-to-clipboard": "^3.3.3", - "zustand": "^4.4.1" - }, - "peerDependencies": { - "@emotion/react": "^11", - "@emotion/styled": "^11", - "@mui/material": "^5", - "react": "^17 || ^18", - "react-dom": "^17 || ^18" - } - }, - "node_modules/@redpanda-data/ui/node_modules/framer-motion": { - "version": "10.17.12", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.17.12.tgz", - "integrity": "sha512-6aaBLN2EgH/GilXwOzEalTfw5Rx9DTQJJjTrxq5bfDbGtPCzXz2GCN6ePGRpTi1ZGugLHxdU273h38ENbcdFKQ==", - "dependencies": { - "tslib": "^2.4.0" - }, - "optionalDependencies": { - "@emotion/is-prop-valid": "^0.8.2" - }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - } + "resolved": ".yalc/@redpanda-data/ui", + "link": true }, "node_modules/@rollup/plugin-babel": { "version": "5.3.1", @@ -5463,22 +5452,22 @@ } }, "node_modules/@testing-library/dom": { - "version": "7.31.2", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz", - "integrity": "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==", + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", "dev": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", - "@types/aria-query": "^4.2.0", - "aria-query": "^4.2.2", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.6", - "lz-string": "^1.4.4", - "pretty-format": "^26.6.2" + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/@testing-library/dom/node_modules/ansi-styles": { @@ -5497,16 +5486,12 @@ } }, "node_modules/@testing-library/dom/node_modules/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dev": true, "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - }, - "engines": { - "node": ">=6.0" + "deep-equal": "^2.0.5" } }, "node_modules/@testing-library/dom/node_modules/chalk": { @@ -5552,6 +5537,38 @@ "node": ">=8" } }, + "node_modules/@testing-library/dom/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "node_modules/@testing-library/dom/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -5654,20 +5671,21 @@ } }, "node_modules/@testing-library/react": { - "version": "11.2.7", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-11.2.7.tgz", - "integrity": "sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz", + "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==", "dev": true, "dependencies": { "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^7.28.1" + "@testing-library/dom": "^8.5.0", + "@types/react-dom": "^18.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" }, "peerDependencies": { - "react": "*", - "react-dom": "*" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, "node_modules/@textea/json-viewer": { @@ -5743,9 +5761,9 @@ "devOptional": true }, "node_modules/@types/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", "dev": true }, "node_modules/@types/babel__core": { @@ -7555,12 +7573,13 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8791,6 +8810,44 @@ "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-equal/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -9255,6 +9312,32 @@ "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/es-iterator-helpers": { "version": "1.0.15", "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", @@ -10929,14 +11012,14 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11151,11 +11234,11 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11197,6 +11280,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hast-util-parse-selector": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", @@ -11823,6 +11917,22 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", @@ -15869,6 +15979,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -20716,6 +20842,21 @@ "node": ">= 0.8.0" } }, + "node_modules/set-function-length": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", + "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", + "dependencies": { + "define-data-property": "^1.1.1", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.2", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-function-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", @@ -21084,6 +21225,18 @@ "node": ">= 0.8" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -23042,12 +23195,12 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" @@ -23505,9 +23658,9 @@ } }, "node_modules/zustand": { - "version": "4.4.7", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.4.7.tgz", - "integrity": "sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.0.tgz", + "integrity": "sha512-zlVFqS5TQ21nwijjhJlx4f9iGrXSL0o/+Dpy4txAP22miJ8Ti6c1Ol1RLNN98BMib83lmDH/2KmLwaNXpjrO1A==", "dependencies": { "use-sync-external-store": "1.2.0" }, @@ -23516,7 +23669,7 @@ }, "peerDependencies": { "@types/react": ">=16.8", - "immer": ">=9.0", + "immer": ">=9.0.6", "react": ">=16.8" }, "peerDependenciesMeta": { @@ -24855,16 +25008,6 @@ "regenerator-runtime": "^0.14.0" } }, - "@babel/runtime-corejs3": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.23.2.tgz", - "integrity": "sha512-54cIh74Z1rp4oIjsHjqN+WM4fMyCBYe+LpZ9jWm51CZ1fbH3SkAzQD/3XLoNkjbJ7YEmjobLXyvQrFypRHOrXw==", - "dev": true, - "requires": { - "core-js-pure": "^3.30.2", - "regenerator-runtime": "^0.14.0" - } - }, "@babel/template": { "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", @@ -26788,9 +26931,7 @@ "requires": {} }, "@redpanda-data/ui": { - "version": "3.35.0-alpha.0", - "resolved": "https://registry.npmjs.org/@redpanda-data/ui/-/ui-3.35.0-alpha.0.tgz", - "integrity": "sha512-oraNqWp2+J7jWcYcdizcaVYZhcpLing9HLt6yuIPyCTJC2L1Qww2VlWDoi0k5N7svLC42fMCc4WZUPMGGQOWxg==", + "version": "file:.yalc/@redpanda-data/ui", "requires": { "@chakra-ui/icons": "^2.1.1", "@chakra-ui/react": "^2.8.1", @@ -26834,19 +26975,19 @@ "optional": true }, "@textea/json-viewer": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@textea/json-viewer/-/json-viewer-3.2.3.tgz", - "integrity": "sha512-9fG/JU/wSzib2Naxna+J1PktIKG+9TWOB5ycphKwSSUwrid/d6wAMQYGCCAKmYt0qQq+EQ1jDuFjx7qzfm+cmg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@textea/json-viewer/-/json-viewer-3.3.1.tgz", + "integrity": "sha512-0dPV4avWYuh5Y0YKdXVFof/aFGStVTUV8t0j2FPWrtA6HrC1yeg5voWZVr39x1Mh4pAe7nDpThsQdyPZPguMzg==", "requires": { "clsx": "^2.0.0", "copy-to-clipboard": "^3.3.3", - "zustand": "^4.4.1" + "zustand": "^4.4.7" } }, "framer-motion": { - "version": "10.17.12", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.17.12.tgz", - "integrity": "sha512-6aaBLN2EgH/GilXwOzEalTfw5Rx9DTQJJjTrxq5bfDbGtPCzXz2GCN6ePGRpTi1ZGugLHxdU273h38ENbcdFKQ==", + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.18.0.tgz", + "integrity": "sha512-oGlDh1Q1XqYPksuTD/usb0I70hq95OUzmL9+6Zd+Hs4XV0oaISBa/UUMSjYiq6m8EUF32132mOJ8xVZS+I0S6w==", "requires": { "@emotion/is-prop-valid": "^0.8.2", "tslib": "^2.4.0" @@ -27179,19 +27320,19 @@ "integrity": "sha512-nkcFIL696wTf1QMvhGR7dEg60OIRwEZm1OqFTYYDTRc4JOWspgrsJO3IennsOJ7ptumHWLDjV8e5BjPkZcSZAQ==" }, "@testing-library/dom": { - "version": "7.31.2", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz", - "integrity": "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==", + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", - "@types/aria-query": "^4.2.0", - "aria-query": "^4.2.2", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.6", - "lz-string": "^1.4.4", - "pretty-format": "^26.6.2" + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" }, "dependencies": { "ansi-styles": { @@ -27204,13 +27345,12 @@ } }, "aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dev": true, "requires": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" + "deep-equal": "^2.0.5" } }, "chalk": { @@ -27244,6 +27384,31 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -27324,13 +27489,14 @@ } }, "@testing-library/react": { - "version": "11.2.7", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-11.2.7.tgz", - "integrity": "sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz", + "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==", "dev": true, "requires": { "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^7.28.1" + "@testing-library/dom": "^8.5.0", + "@types/react-dom": "^18.0.0" } }, "@textea/json-viewer": { @@ -27393,9 +27559,9 @@ "devOptional": true }, "@types/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", "dev": true }, "@types/babel__core": { @@ -28829,12 +28995,13 @@ "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" } }, "callsites": { @@ -29698,6 +29865,40 @@ "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" }, + "deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -30066,6 +30267,31 @@ "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" }, + "es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, "es-iterator-helpers": { "version": "1.0.15", "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", @@ -31301,14 +31527,14 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-nonce": { @@ -31459,11 +31685,11 @@ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "requires": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" } }, "has-proto": { @@ -31484,6 +31710,14 @@ "has-symbols": "^1.0.2" } }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "requires": { + "function-bind": "^1.1.2" + } + }, "hast-util-parse-selector": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", @@ -31939,6 +32173,16 @@ "is-decimal": "^1.0.0" } }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, "is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", @@ -34811,6 +35055,16 @@ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.0.tgz", "integrity": "sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==" }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -38196,6 +38450,18 @@ "send": "0.18.0" } }, + "set-function-length": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", + "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", + "requires": { + "define-data-property": "^1.1.1", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.2", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + } + }, "set-function-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", @@ -38492,6 +38758,15 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, + "stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "requires": { + "internal-slot": "^1.0.4" + } + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -39879,12 +40154,12 @@ } }, "which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "requires": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" @@ -40258,9 +40533,9 @@ } }, "zustand": { - "version": "4.4.7", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.4.7.tgz", - "integrity": "sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.0.tgz", + "integrity": "sha512-zlVFqS5TQ21nwijjhJlx4f9iGrXSL0o/+Dpy4txAP22miJ8Ti6c1Ol1RLNN98BMib83lmDH/2KmLwaNXpjrO1A==", "requires": { "use-sync-external-store": "1.2.0" } diff --git a/frontend/package.json b/frontend/package.json index f9348a90d..e3d0f66f7 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -61,7 +61,7 @@ "devDependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@testing-library/jest-dom": "^5.12.0", - "@testing-library/react": "^11.2.6", + "@testing-library/react": "^13.4.0", "@types/jest": "26.0.23", "@types/node": "^16", "@types/react": "^18.0.18", diff --git a/frontend/src/components/pages/topics/Tab.Messages/index.tsx b/frontend/src/components/pages/topics/Tab.Messages/index.tsx index 35beb8bef..0825168e5 100644 --- a/frontend/src/components/pages/topics/Tab.Messages/index.tsx +++ b/frontend/src/components/pages/topics/Tab.Messages/index.tsx @@ -13,7 +13,7 @@ import { ClockCircleOutlined, DeleteOutlined, DownloadOutlined, SettingOutlined import { DownloadIcon, KebabHorizontalIcon, PlusIcon, SkipIcon, SyncIcon, XCircleIcon } from '@primer/octicons-react'; import { action, autorun, computed, IReactionDisposer, makeObservable, observable, transaction, untracked } from 'mobx'; import { observer } from 'mobx-react'; -import React, { Component, FC, ReactNode, useMemo, useState } from 'react'; +import React, { Component, FC, ReactNode, useState } from 'react'; import FilterEditor from './Editor'; import filterExample1 from '../../../../assets/filter-example-1.png'; import filterExample2 from '../../../../assets/filter-example-2.png'; @@ -25,7 +25,7 @@ import { FilterEntry, PartitionOffsetOrigin, PreviewTagV2, - TimestampDisplayFormat + TimestampDisplayFormat, } from '../../../../state/ui'; import { uiState } from '../../../../state/uiState'; import { AnimatePresence, animProps_span_messagesStatus, MotionSpan } from '../../../../utils/animationProps'; @@ -104,7 +104,7 @@ import { MdExpandMore } from 'react-icons/md'; import { SingleSelect } from '../../../misc/Select'; import { MultiValue, Select as ChakraReactSelect } from 'chakra-react-select'; import { isServerless } from '../../../../config'; -import { Link as ReactRouterLink, useLocation } from 'react-router-dom'; +import { Link as ReactRouterLink } from 'react-router-dom'; import { appGlobal } from '../../../../state/appGlobal'; import { WarningIcon } from '@chakra-ui/icons'; import { proto3 } from '@bufbuild/protobuf'; @@ -112,6 +112,7 @@ import { ColumnDef } from '@tanstack/react-table'; import { CogIcon } from '@heroicons/react/solid'; import { PayloadEncoding } from '../../../../protogen/redpanda/api/console/v1alpha1/common_pb'; import { onPaginationChange } from '../Topic.List'; +import usePaginationParams from '../../../../hooks/usePaginationParams'; interface TopicMessageViewProps { @@ -508,16 +509,7 @@ export class TopicMessageView extends Component { } MessageTable = observer(() => { - const { search } = useLocation(); - const paginationParams = useMemo(() => { - const searchParams = new URLSearchParams(search) - return { - // these || conditions with default are here because of the existing local storage state on some browsers - pageSize: Number(searchParams.get('pageSize')) || uiState.topicSettings.searchParams.pageSize || 10, - pageIndex: Number(searchParams.get('page')) || uiState.topicSettings.searchParams.page || 0, - } - }, [search]) - + const paginationParams = usePaginationParams(uiState.topicSettings.searchParams.pageSize) const [showPreviewSettings, setShowPreviewSettings] = React.useState(false); const tsFormat = uiState.topicSettings.previewTimestamps; @@ -605,7 +597,6 @@ export class TopicMessageView extends Component { }} pagination={paginationParams} onPaginationChange={onPaginationChange(paginationParams, ({ pageSize, pageIndex}) => { - uiState.topicSettings.searchParams.page = pageIndex uiState.topicSettings.searchParams.pageSize = pageSize editQuery(query => { query['page'] = String(pageIndex) diff --git a/frontend/src/components/pages/topics/Topic.List.tsx b/frontend/src/components/pages/topics/Topic.List.tsx index f0236960f..ea1044f8d 100644 --- a/frontend/src/components/pages/topics/Topic.List.tsx +++ b/frontend/src/components/pages/topics/Topic.List.tsx @@ -9,7 +9,7 @@ * by the Apache License, Version 2.0 */ -import React, { FC, useMemo, useRef, useState } from 'react'; +import React, { FC, useRef, useState } from 'react'; import { autorun, IReactionDisposer, makeObservable, observable } from 'mobx'; import { observer } from 'mobx-react'; import { appGlobal } from '../../../state/appGlobal'; @@ -30,8 +30,9 @@ import { Alert, AlertDialog, AlertDialogBody, AlertDialogContent, AlertDialogFoo import { HiOutlineTrash } from 'react-icons/hi'; import { isServerless } from '../../../config'; import { Statistic } from '../../misc/Statistic'; -import { Link, useLocation } from 'react-router-dom'; +import { Link } from 'react-router-dom'; import SearchBar from '../../misc/SearchBar'; +import usePaginationParams from '../../../hooks/usePaginationParams'; @observer class TopicList extends PageComponent { @@ -169,14 +170,7 @@ export const onPaginationChange = (state: PaginationState, callBack?: (args: { p } const TopicsTable: FC<{ topics: Topic[], onDelete: (record: Topic) => void }> = ({ topics, onDelete }) => { - const { search } = useLocation(); - const paginationParams = useMemo(() => { - const searchParams = new URLSearchParams(search) - return { - pageSize: Number(searchParams.get('pageSize')) || uiSettings.topicList.pageSize, - pageIndex: Number(searchParams.get('page')) || 0, - } - }, [search]) + const paginationParams = usePaginationParams(uiSettings.topicList.pageSize) return ( diff --git a/frontend/src/hooks/usePaginationParams.test.ts b/frontend/src/hooks/usePaginationParams.test.ts new file mode 100644 index 000000000..fa1522f51 --- /dev/null +++ b/frontend/src/hooks/usePaginationParams.test.ts @@ -0,0 +1,32 @@ +import { renderHook } from '@testing-library/react'; +import { useLocation } from 'react-router-dom'; +import usePaginationParams from './usePaginationParams'; + +// Mock useLocation +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useLocation: jest.fn(), +})); + +describe('usePaginationParams', () => { + it('returns default values when URL parameters are absent', () => { + useLocation.mockReturnValue({ search: '' }); + const { result } = renderHook(() => usePaginationParams()); + expect(result.current.pageSize).toBe(10); + expect(result.current.pageIndex).toBe(0); + }); + + it('parses pageSize and pageIndex from URL parameters', () => { + useLocation.mockReturnValue({ search: '?pageSize=5&page=2' }); + const { result } = renderHook(() => usePaginationParams()); + expect(result.current.pageSize).toBe(5); + expect(result.current.pageIndex).toBe(2); + }); + + it('uses defaultPageSize when pageSize is not in URL', () => { + useLocation.mockReturnValue({ search: '?page=3' }); + const { result } = renderHook(() => usePaginationParams(15)); + expect(result.current.pageSize).toBe(15); + expect(result.current.pageIndex).toBe(3); + }); +}); diff --git a/frontend/src/hooks/usePaginationParams.ts b/frontend/src/hooks/usePaginationParams.ts new file mode 100644 index 000000000..915f9ca5a --- /dev/null +++ b/frontend/src/hooks/usePaginationParams.ts @@ -0,0 +1,31 @@ +import { useMemo } from 'react'; +import { useLocation } from 'react-router-dom'; + +/** + * Custom hook for parsing pagination parameters from the URL search query. + * + * This hook extracts 'pageSize' and 'pageIndex' parameters from the URL search query. + * If these parameters are not present in the URL, it falls back to default values. + * 'pageSize' defaults to the value passed as an argument, or 10 if not provided. + * 'pageIndex' defaults to 0 if not present in the URL. + * + * @param {number} [defaultPageSize=10] - The default number of items per page if not specified in the URL. + * @returns {{ pageSize: number; pageIndex: number }} An object containing the pageSize and pageIndex. + * + * @example + * // In a component using react-router + * const { pageSize, pageIndex } = usePaginationParams(20); + */ +const usePaginationParams = (defaultPageSize: number = 10): { pageSize: number; pageIndex: number } => { + const { search} = useLocation(); + + return useMemo(() => { + const searchParams = new URLSearchParams(search) + return { + pageSize: searchParams.has('pageSize') ? Number(searchParams.get('pageSize')) : defaultPageSize, + pageIndex: searchParams.has('page') ? Number(searchParams.get('page')) : 0, + } + }, [search, defaultPageSize]) +}; + +export default usePaginationParams; From 4ba96581546b1c047157e125cf27d12c2f2d24ad Mon Sep 17 00:00:00 2001 From: Jan Vorcak Date: Thu, 25 Jan 2024 10:04:59 +0100 Subject: [PATCH 4/8] Fixes typescript in tests --- frontend/src/hooks/usePaginationParams.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/hooks/usePaginationParams.test.ts b/frontend/src/hooks/usePaginationParams.test.ts index fa1522f51..14163559a 100644 --- a/frontend/src/hooks/usePaginationParams.test.ts +++ b/frontend/src/hooks/usePaginationParams.test.ts @@ -10,21 +10,21 @@ jest.mock('react-router-dom', () => ({ describe('usePaginationParams', () => { it('returns default values when URL parameters are absent', () => { - useLocation.mockReturnValue({ search: '' }); + (useLocation as jest.Mock).mockReturnValue({ search: '' }); const { result } = renderHook(() => usePaginationParams()); expect(result.current.pageSize).toBe(10); expect(result.current.pageIndex).toBe(0); }); it('parses pageSize and pageIndex from URL parameters', () => { - useLocation.mockReturnValue({ search: '?pageSize=5&page=2' }); + (useLocation as jest.Mock).mockReturnValue({ search: '?pageSize=5&page=2' }); const { result } = renderHook(() => usePaginationParams()); expect(result.current.pageSize).toBe(5); expect(result.current.pageIndex).toBe(2); }); it('uses defaultPageSize when pageSize is not in URL', () => { - useLocation.mockReturnValue({ search: '?page=3' }); + (useLocation as jest.Mock).mockReturnValue({ search: '?page=3' }); const { result } = renderHook(() => usePaginationParams(15)); expect(result.current.pageSize).toBe(15); expect(result.current.pageIndex).toBe(3); From 9266f2965d0b4d19829768895e0e555c4ddaf4ba Mon Sep 17 00:00:00 2001 From: Jan Vorcak Date: Thu, 25 Jan 2024 10:18:38 +0100 Subject: [PATCH 5/8] onPaginationChange moved to utils --- .../pages/topics/Tab.Messages/index.tsx | 2 +- .../components/pages/topics/Topic.List.tsx | 36 ++++++++++++++----- frontend/src/utils/pagination.ts | 6 ++++ 3 files changed, 34 insertions(+), 10 deletions(-) create mode 100644 frontend/src/utils/pagination.ts diff --git a/frontend/src/components/pages/topics/Tab.Messages/index.tsx b/frontend/src/components/pages/topics/Tab.Messages/index.tsx index 0825168e5..06947c3c6 100644 --- a/frontend/src/components/pages/topics/Tab.Messages/index.tsx +++ b/frontend/src/components/pages/topics/Tab.Messages/index.tsx @@ -111,8 +111,8 @@ import { proto3 } from '@bufbuild/protobuf'; import { ColumnDef } from '@tanstack/react-table'; import { CogIcon } from '@heroicons/react/solid'; import { PayloadEncoding } from '../../../../protogen/redpanda/api/console/v1alpha1/common_pb'; -import { onPaginationChange } from '../Topic.List'; import usePaginationParams from '../../../../hooks/usePaginationParams'; +import { onPaginationChange } from '../../../../utils/pagination'; interface TopicMessageViewProps { diff --git a/frontend/src/components/pages/topics/Topic.List.tsx b/frontend/src/components/pages/topics/Topic.List.tsx index ea1044f8d..fd3493dec 100644 --- a/frontend/src/components/pages/topics/Topic.List.tsx +++ b/frontend/src/components/pages/topics/Topic.List.tsx @@ -22,17 +22,41 @@ import { renderLogDirSummary } from '../../misc/common'; import { PageComponent, PageInitHelper } from '../Page'; import { CheckIcon, CircleSlashIcon, EyeClosedIcon } from '@primer/octicons-react'; import createAutoModal from '../../../utils/createAutoModal'; -import { CreateTopicModalContent, CreateTopicModalState, RetentionSizeUnit, RetentionTimeUnit } from './CreateTopicModal/CreateTopicModal'; +import { + CreateTopicModalContent, + CreateTopicModalState, + RetentionSizeUnit, + RetentionTimeUnit +} from './CreateTopicModal/CreateTopicModal'; import Section from '../../misc/Section'; import PageContent from '../../misc/PageContent'; -import { Alert, AlertDialog, AlertDialogBody, AlertDialogContent, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertIcon, Box, Button, Checkbox, DataTable, Flex, Icon, - PaginationState, Updater, Popover, Text, Tooltip, useToast } from '@redpanda-data/ui'; +import { + Alert, + AlertDialog, + AlertDialogBody, + AlertDialogContent, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogOverlay, + AlertIcon, + Box, + Button, + Checkbox, + DataTable, + Flex, + Icon, + Popover, + Text, + Tooltip, + useToast +} from '@redpanda-data/ui'; import { HiOutlineTrash } from 'react-icons/hi'; import { isServerless } from '../../../config'; import { Statistic } from '../../misc/Statistic'; import { Link } from 'react-router-dom'; import SearchBar from '../../misc/SearchBar'; import usePaginationParams from '../../../hooks/usePaginationParams'; +import { onPaginationChange } from '../../../utils/pagination'; @observer class TopicList extends PageComponent { @@ -163,12 +187,6 @@ class TopicList extends PageComponent { } export default TopicList; - -export const onPaginationChange = (state: PaginationState, callBack?: (args: { pageSize: number; pageIndex: number }) => void) => (x: Updater) => { - const newState = typeof x === 'function' ? x(state) : x - callBack?.(newState) -} - const TopicsTable: FC<{ topics: Topic[], onDelete: (record: Topic) => void }> = ({ topics, onDelete }) => { const paginationParams = usePaginationParams(uiSettings.topicList.pageSize) diff --git a/frontend/src/utils/pagination.ts b/frontend/src/utils/pagination.ts new file mode 100644 index 000000000..f6e48ca1c --- /dev/null +++ b/frontend/src/utils/pagination.ts @@ -0,0 +1,6 @@ +import { PaginationState, Updater } from "@redpanda-data/ui"; + +export const onPaginationChange = (state: PaginationState, callBack?: (args: { pageSize: number; pageIndex: number }) => void) => (x: Updater) => { + const newState = typeof x === 'function' ? x(state) : x + callBack?.(newState) +} From f4ba06bf4cddf600af0858801776d4168ed6e47d Mon Sep 17 00:00:00 2001 From: Jan Vorcak Date: Thu, 25 Jan 2024 13:41:03 +0100 Subject: [PATCH 6/8] Improved formatting --- frontend/src/utils/pagination.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/utils/pagination.ts b/frontend/src/utils/pagination.ts index f6e48ca1c..8c09eadf4 100644 --- a/frontend/src/utils/pagination.ts +++ b/frontend/src/utils/pagination.ts @@ -1,4 +1,4 @@ -import { PaginationState, Updater } from "@redpanda-data/ui"; +import { PaginationState, Updater } from '@redpanda-data/ui'; export const onPaginationChange = (state: PaginationState, callBack?: (args: { pageSize: number; pageIndex: number }) => void) => (x: Updater) => { const newState = typeof x === 'function' ? x(state) : x From 9df43ed1f89e9865ca1077514386f12a8f4b8456 Mon Sep 17 00:00:00 2001 From: Jan Vorcak Date: Thu, 25 Jan 2024 14:45:47 +0100 Subject: [PATCH 7/8] Updated package-lock after merge --- frontend/package-lock.json | 493 +++++++++++++++++++++++++++++-------- 1 file changed, 384 insertions(+), 109 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 5c8654f2f..ab2bf2a68 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -47,7 +47,7 @@ "devDependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@testing-library/jest-dom": "^5.12.0", - "@testing-library/react": "^11.2.6", + "@testing-library/react": "^13.4.0", "@types/jest": "26.0.23", "@types/node": "^16", "@types/react": "^18.0.18", @@ -2055,19 +2055,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.23.2.tgz", - "integrity": "sha512-54cIh74Z1rp4oIjsHjqN+WM4fMyCBYe+LpZ9jWm51CZ1fbH3SkAzQD/3XLoNkjbJ7YEmjobLXyvQrFypRHOrXw==", - "dev": true, - "dependencies": { - "core-js-pure": "^3.30.2", - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/template": { "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", @@ -5463,22 +5450,22 @@ } }, "node_modules/@testing-library/dom": { - "version": "7.31.2", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz", - "integrity": "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==", + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", "dev": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", - "@types/aria-query": "^4.2.0", - "aria-query": "^4.2.2", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.6", - "lz-string": "^1.4.4", - "pretty-format": "^26.6.2" + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/@testing-library/dom/node_modules/ansi-styles": { @@ -5497,16 +5484,12 @@ } }, "node_modules/@testing-library/dom/node_modules/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dev": true, "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - }, - "engines": { - "node": ">=6.0" + "deep-equal": "^2.0.5" } }, "node_modules/@testing-library/dom/node_modules/chalk": { @@ -5552,6 +5535,38 @@ "node": ">=8" } }, + "node_modules/@testing-library/dom/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "node_modules/@testing-library/dom/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -5654,20 +5669,21 @@ } }, "node_modules/@testing-library/react": { - "version": "11.2.7", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-11.2.7.tgz", - "integrity": "sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz", + "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==", "dev": true, "dependencies": { "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^7.28.1" + "@testing-library/dom": "^8.5.0", + "@types/react-dom": "^18.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" }, "peerDependencies": { - "react": "*", - "react-dom": "*" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, "node_modules/@textea/json-viewer": { @@ -5743,9 +5759,9 @@ "devOptional": true }, "node_modules/@types/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", "dev": true }, "node_modules/@types/babel__core": { @@ -7555,12 +7571,13 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8791,6 +8808,44 @@ "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-equal/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -9255,6 +9310,32 @@ "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/es-iterator-helpers": { "version": "1.0.15", "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", @@ -10929,14 +11010,14 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11151,11 +11232,11 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11197,6 +11278,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hast-util-parse-selector": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", @@ -11823,6 +11915,22 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", @@ -15869,6 +15977,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -20716,6 +20840,21 @@ "node": ">= 0.8.0" } }, + "node_modules/set-function-length": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", + "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", + "dependencies": { + "define-data-property": "^1.1.1", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.2", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-function-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", @@ -21084,6 +21223,18 @@ "node": ">= 0.8" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -23042,12 +23193,12 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" @@ -24855,16 +25006,6 @@ "regenerator-runtime": "^0.14.0" } }, - "@babel/runtime-corejs3": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.23.2.tgz", - "integrity": "sha512-54cIh74Z1rp4oIjsHjqN+WM4fMyCBYe+LpZ9jWm51CZ1fbH3SkAzQD/3XLoNkjbJ7YEmjobLXyvQrFypRHOrXw==", - "dev": true, - "requires": { - "core-js-pure": "^3.30.2", - "regenerator-runtime": "^0.14.0" - } - }, "@babel/template": { "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", @@ -27179,19 +27320,19 @@ "integrity": "sha512-nkcFIL696wTf1QMvhGR7dEg60OIRwEZm1OqFTYYDTRc4JOWspgrsJO3IennsOJ7ptumHWLDjV8e5BjPkZcSZAQ==" }, "@testing-library/dom": { - "version": "7.31.2", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz", - "integrity": "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==", + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", - "@types/aria-query": "^4.2.0", - "aria-query": "^4.2.2", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.6", - "lz-string": "^1.4.4", - "pretty-format": "^26.6.2" + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" }, "dependencies": { "ansi-styles": { @@ -27204,13 +27345,12 @@ } }, "aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dev": true, "requires": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" + "deep-equal": "^2.0.5" } }, "chalk": { @@ -27244,6 +27384,31 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -27324,13 +27489,14 @@ } }, "@testing-library/react": { - "version": "11.2.7", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-11.2.7.tgz", - "integrity": "sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz", + "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==", "dev": true, "requires": { "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^7.28.1" + "@testing-library/dom": "^8.5.0", + "@types/react-dom": "^18.0.0" } }, "@textea/json-viewer": { @@ -27393,9 +27559,9 @@ "devOptional": true }, "@types/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", "dev": true }, "@types/babel__core": { @@ -28829,12 +28995,13 @@ "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" } }, "callsites": { @@ -29698,6 +29865,40 @@ "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" }, + "deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -30066,6 +30267,31 @@ "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" }, + "es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, "es-iterator-helpers": { "version": "1.0.15", "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", @@ -31301,14 +31527,14 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-nonce": { @@ -31459,11 +31685,11 @@ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "requires": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" } }, "has-proto": { @@ -31484,6 +31710,14 @@ "has-symbols": "^1.0.2" } }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "requires": { + "function-bind": "^1.1.2" + } + }, "hast-util-parse-selector": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", @@ -31939,6 +32173,16 @@ "is-decimal": "^1.0.0" } }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, "is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", @@ -34811,6 +35055,16 @@ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.0.tgz", "integrity": "sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==" }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -38196,6 +38450,18 @@ "send": "0.18.0" } }, + "set-function-length": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", + "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", + "requires": { + "define-data-property": "^1.1.1", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.2", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + } + }, "set-function-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", @@ -38492,6 +38758,15 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, + "stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "requires": { + "internal-slot": "^1.0.4" + } + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -39879,12 +40154,12 @@ } }, "which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "requires": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" From 1810466025154916a9f8d917b86223be2870018d Mon Sep 17 00:00:00 2001 From: Jan Vorcak Date: Mon, 29 Jan 2024 10:38:01 +0100 Subject: [PATCH 8/8] Updates @redpanda-data/ui --- frontend/package-lock.json | 14 +++++++------- frontend/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index ab2bf2a68..39635f9ed 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -17,7 +17,7 @@ "@heroicons/react": "^1.0.6", "@monaco-editor/react": "^4.6", "@primer/octicons-react": "^17", - "@redpanda-data/ui": "^3.35.1", + "@redpanda-data/ui": "^3.36.0", "@textea/json-viewer": "^1.24.4", "array-move": "^4", "framer-motion": "^7", @@ -4780,9 +4780,9 @@ } }, "node_modules/@redpanda-data/ui": { - "version": "3.35.1", - "resolved": "https://registry.npmjs.org/@redpanda-data/ui/-/ui-3.35.1.tgz", - "integrity": "sha512-CN2Qm4mRdIwfc9qoSIe0SGZ/u+zkJB4D2HWxMYHXIi4dlMFB2rXuAREZ0PRnRQkpnlUs4SGXWX2WGr95ibmjfQ==", + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/@redpanda-data/ui/-/ui-3.36.0.tgz", + "integrity": "sha512-dhEqjabQqij5XtPCZuzKqVJ03ZAL5gJ03Ix0CusztbUutwhgUYe5BVngIJLbBKzaLTqybQ7/zT1ns1kmxzaC7g==", "dependencies": { "@chakra-ui/icons": "^2.1.1", "@chakra-ui/react": "^2.8.1", @@ -26929,9 +26929,9 @@ "requires": {} }, "@redpanda-data/ui": { - "version": "3.35.1", - "resolved": "https://registry.npmjs.org/@redpanda-data/ui/-/ui-3.35.1.tgz", - "integrity": "sha512-CN2Qm4mRdIwfc9qoSIe0SGZ/u+zkJB4D2HWxMYHXIi4dlMFB2rXuAREZ0PRnRQkpnlUs4SGXWX2WGr95ibmjfQ==", + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/@redpanda-data/ui/-/ui-3.36.0.tgz", + "integrity": "sha512-dhEqjabQqij5XtPCZuzKqVJ03ZAL5gJ03Ix0CusztbUutwhgUYe5BVngIJLbBKzaLTqybQ7/zT1ns1kmxzaC7g==", "requires": { "@chakra-ui/icons": "^2.1.1", "@chakra-ui/react": "^2.8.1", diff --git a/frontend/package.json b/frontend/package.json index 919d8f66e..54ae1435e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -31,7 +31,7 @@ "@heroicons/react": "^1.0.6", "@monaco-editor/react": "^4.6", "@primer/octicons-react": "^17", - "@redpanda-data/ui": "^3.35.1", + "@redpanda-data/ui": "^3.36.0", "@textea/json-viewer": "^1.24.4", "array-move": "^4", "framer-motion": "^7",